4

Т.е. транслятор который переводит программу с языка ассемблера в машинные команды. Может книге какие есть?

Mencey
  • 442
  • 1
  • 6
  • 20

3 Answers3

6

Если Вы хотите построить для тренировки всю цепочку разбора/трансляции языка в коды, т.е. если вы хотите иметь:

  • лексер

  • парсер

  • транслятор

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

  • написать всю цепочку самому руками, но выбрать более простой язык;

  • взять генератор грамматик, типа бустовского spirit, тогда не нужна будет фаза лексического анализа(но тут минус по сравнению с яко-бизонами: разбор с возвратами - очень большие файлы(типа более 10Мб будет не оч быстро парсить));

  • одни мои знакомые использовали ANTLR были довольны;

  • поискать други компромисы;

  • есть подборочка бесплатных тулзин;

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

a_s
  • 2,329
  • 14
  • 14
2

Если для тренировки, то вот и книга - Формальные языки, грамматики и основы построения трансляторов. :)

Ну, и возможно, еще и Yacc & Bison пригодятся.

stanislav
  • 34,518
  • 27
  • 98
  • 214
1

Взять код ассемблера GNU из пакета утилит GNU и заточить под свои нужды.

stanislav
  • 34,518
  • 27
  • 98
  • 214