Pull to refresh

Comments 14

Это первый пост про компиляцию, который я прочитал.
Нет, не потому что он хорошо написан, просто дочитал до конца от удивления, что у вас все так складно получилось.

Что вообще за язык вы творите?
У вас же из типов только int.
Как будет представлен double?
А вдруг у вас язык динамически-типизированный?
Тогда эти функции, выполняющие роль операторов, можно сразу выкинуть. Заглушка не более.

В общем получилось довольно неплохо. Если не секрет сколько строк кода это чудо в себя включает?
Хочу сравнить с интерпретатором Лиспа, который сейчас творю.
1.5к строк в интерпретаторе с оптимизацией. А у вас?

В общем с утра прочитаю цикл с самого начала.

Это скорее инструкция к действию, а не творение.
Или демонстрация кому было интересно «Как это работает».
круто-круто

В жизни тоже забавно получается:
— приложения для Android пишутся на Java и компилируются в стековый байткод (как MSIL), потому что так проще писать компилятор
— но для того чтобы запустить программу на телефоне, её нужно перевести в другой P-код, dalvik. А там регистровая виртуальная машина!
потому что на телефоне очень туго с производительностью, а машину написали в Гугле. они там умные, им не сложно =)

// жаль ночью постите — никто не прочитает
разве далвик регистровый? он вроде как стековый.
ох, прошу прощения) он регистровый)
только dalvik не от этого создан =) а от избыточности и недоразвитости джава-байткода
1) неплохо бы stdlib.h добавить в заголовки. Раз exit используется.

2)
a=b=88;
b=b+1;
echo(«test4=»,a," ",b,"\n");

3)
r=echo(«Test\n»);
echo(«test=»,r);
2,3) не понимаю проблемы.
echo в выражении вернёт 0, если вопрос про это.
Хотите, запретим?
2) разве a и b окажутся не на одном регистре? весьма неожиданное поведение.
Ой, и действительно неожиданное.
3) дошло, в чём баг :)
Ну значит, вы правы: на каждом создании новой переменной стоит брать новый регистр, а оптимизатор потом соптимизирует лишние копирования.
ну с таким «распределителем регистров» 256 регистров в трубу вылетят достаточно быстро =)

у вас вообще получилось почти SSA форма с автоматической протяжкой копий «x = y;» [правда не совсем, все-таки можно потом написать x = expr;" это нарушит SSA свойство… ну и phi-функций нет..]
(340 строк кода вынесены на tyomitch.net.ru/jsk.y.html, чтобы сохранить размер поста в пределах допустимого.)

Ссылка не работает. А очень жаль.
Sign up to leave a comment.

Articles