Pull to refresh

Comments 11

Положа руку на сердце — практически ничего не понял, но статья крутая! Пишите еще :)
А я увидел вызов yyparse(); и вспомнил, что что-то такое было на 3 курсе =)))
Помню нечто типа «mov bx,offset a» — поставить указатель на начало массива, если не ошибаюсь
Даавноооо проходил асм в колледже, тогда он казался более понятныим и простым )
Ох… Путь Джедая у меня вызывает восхищение :)
Всё-таки писать компилятор и оптимизатор на си/си++ — та еще мозготрепка
а на чем вы предлагаете писать?
OCaml или F#. Вообще что угодно с наличием ADT, паттерн-матчинга и сборщика мусора. Кода будет этак раз в 6-10 меньше
на счет ADT и pattern matching согласен.

со сборщиком мусора сложнее в том плане, что (1) если наш компилятор является частью виртуальной машины, то нежелательно чтобы рядом какой-то левый сборщик мусора работал (в крайнем случае нужно пользоваться тем, который есть в самой ВМ) (2) сборщик мусора должен быть достаточно хороший, иначе придется костыли всякие вставлять всюду (кэши мелких объектиков, например), чтобы не тупило.
ох, с распределением регистров столько всякой головной боли…

например, неортогональность системы команд x86 [некоторые команды требуют фиксированных регистров] и вообще взаимное влияние фаз выбора кода и распределения регистров.

хорошая ссылка по теме: магистерская работа Кристиана Виммера «Linear Scan Register Allocation
for the Java HotSpotTM Client Compiler» (http://www.ssw.uni-linz.ac.at/Research/Papers/Wimmer04Master/Wimmer04Master.pdf)
Sign up to leave a comment.

Articles