Написание компилятора для числовой линейной алгебры - PullRequest
2 голосов
/ 12 мая 2011

Я работаю над небольшим проектом, и основная цель проекта - создать компилятор для алгебры числовых лайнеров.Подход, который я планирую, заключается в следующем:

  1. Создание компилятора на языке программирования Java
  2. , который будет генерировать собственные коды ассемблера
  3. Я буду использовать потрясающую числовую линейнуюпакет algebra (написан на C) и будет связан с ассемблерным кодом, сгенерированным компилятором.

Кроме того, я думаю о поддержке многопоточности на новом языке, который собираюсь создать.

Я очень плохо знаком с языком ассемблера и у меня возникают следующие вопросы:

  1. Чтобы поддерживать многопоточность, нужно ли использовать отдельную библиотеку потоков или необходимосделать это с помощью сгенерированного ассемблерного кода?
  2. Поскольку я разрабатываю это на платформе Windows, стоит ли разрабатывать его на языке C # и генерировать CLR, IL вместо генерации собственного языка ассемблера.

Спасибо,

Упуль

Ответы [ 2 ]

4 голосов
/ 12 мая 2011

может быть лучше сначала сгенерировать «скомпилированный» вывод в виде кода C и использовать компилятор C для генерации кода сборки

это гораздо проще разработать, чем непосредственно ассемблеру, потому что вы можете проверить промежуточный код на наличие ошибок и вам не нужно беспокоиться о связывании пакета с сгенерированным кодом, как это будет сделано компилятором

1 голос
/ 12 мая 2011

Ответ на 1. уже предполагает, что ваш выбор ассемблера хороший.Но я бы категорически не одобрял это по следующим причинам:

В настоящее время ассемблер не может больше побеждать оптимизированную программу, написанную на языке C, C ++ или, может быть, D. Но, как автор компилятора, вы избавляете себя от огромных проблемгенерируя вывод на таком языке вместо ассемблера.Не в последнюю очередь: вы не привязаны к платформе si8ngle.

Когда вы принимаете решение по этому вопросу, ваш первый вопрос преобразуется в: «(Как) Поддерживает ли мой целевой язык многопоточность?»

...