Size: a a a

Compiler Development

2020 April 05

E

Eugene in Compiler Development
во всяких тренажёрах для пилотах 60 fps не годятся, там счёт на 300 fps давно
источник

PS

Peter Sovietov in Compiler Development
Alex
Я начал делать полноценные конспекты для этой цели, но понял что слишком мало знаю ((( Вообще, сейчас пишу небольшой практический курс по разработке компилятора, надеюсь что первый семестр до конца лета осилю и выложу (там только часть по фронтенду, но, если честно, я хороших практических материалов даже по этой части не нашёл)
Мне кажется, важно определиться, на кого будет рассчитан курс, какие прикладные применения подразумеваются. Очень сложно претендовать на всеохватность и "объективность" в условиях огромного объема существующих околокомпиляторных знаний/технологий, тем более, в условиях 2 семестров.
источник

VM

Victor Miasnikov in Compiler Development
Eugene
там вспоминали про быстродействие оберона, забыв, например, что компиляторо TinyC компилировал ядро линупса за 15 сек...
как для си можно сделать быстрый компилятор, так и для оберона можно сделать медленный компилятор, XDS, насколько я помню, был не таким уж и быстрым, зато оптимизирующим...
https://t.me/c/1455850606/5211
==
Денис Будяк say:
Вопрос, какой контекст, с чем сравниваем и с какой целью?
==

P.S.

"Дубль":

Ссылка приглашение:
https://t.me/joinchat/GXohMxZGDM6OQlKC1ZBjtg
источник

E

Eugene in Compiler Development
Victor Miasnikov
https://t.me/c/1455850606/5211
==
Денис Будяк say:
Вопрос, какой контекст, с чем сравниваем и с какой целью?
==

P.S.

"Дубль":

Ссылка приглашение:
https://t.me/joinchat/GXohMxZGDM6OQlKC1ZBjtg
а зачем вообще сравнивать?
источник

VM

Victor Miasnikov in Compiler Development
Eugene
а зачем вообще сравнивать?
Мне самому интересно.

(

Вопрос ( 2шт.) задал не я.
Я нашёл ответы.

)
источник

ИЧ

Илья Чистяков in Compiler Development
+
источник

KR

K R in Compiler Development
Peter Sovietov
https://github.com/true-grue/Compiler-Development/wiki/Учебные-курсы-по-конструированию-компиляторов

Столь масштабное обновление wiki-материалов дает возможность более продуктивно проявить себя пытливым натурам, в режиме самоизоляции.

И напомню — на ACM сейчас можно свободно скачивать статьи, чем советую пользоваться.
На scihub можно бесплатно скачивать всегда. ;-)
источник
2020 April 06

АЕ

Артур Ефимов in Compiler Development
Eugene
там вспоминали про быстродействие оберона, забыв, например, что компиляторо TinyC компилировал ядро линупса за 15 сек...
как для си можно сделать быстрый компилятор, так и для оберона можно сделать медленный компилятор, XDS, насколько я помню, был не таким уж и быстрым, зато оптимизирующим...
Нет, XDS был быстрым.
источник

LW

Lev Walkin in Compiler Development
Eugene
во всяких тренажёрах для пилотах 60 fps не годятся, там счёт на 300 fps давно
не вижу это в требованиях FAA и в маркетинговых материалах от нескольких производителей, до которых удалось дотянуться. О чём речь, о какой-то экспериментальной системе для X35?
источник

SA

Satan Aid in Compiler Development
Артур Ефимов
Нет, XDS был быстрым.
Все Oberon подобные компиляторы должны быть быстрыми, потому что скомпилированый модуль не нужно парсить в AST и в нативный код если не было изменений! Время уходит уже не на синтаксический анализ, а на загрузку дерева из файла. При линковке то же самое, подгружается уже сгенерированный код и исправляются адреса переходов и т.д.
источник

IJ

Igor 🐱 Jirkov in Compiler Development
S.Atan
Не... Я не про это, вот смотрите. В математике есть постулат:  От перестановки мест слагаемых, сумма не меняется.
С математикой понятно, тут вопросов нет. Другой разговор, когда есть ограничения (а в любом процессоре оно есть). Так как оптимизации предполагают некоторые математические аксиомы для операций (свертывание констант, вынос за скобки и т.д.) мы можем получить следующий оптимизированный код. Я сейчас утрировано и просто, что бы не заморачиваться сложными, реальными примерами:
MAX(INTEGER) - 200 + 100 <- переполнения нет
MAX(INTEGER) + 100 - 200 <- переполнение

И вот такие вопросы и надо знать в первую очередь, так как электронное устройство, в отличие от математического отличается ограничениями на количество оперируемых бит!
От перестановки слагаемых сумма не меняется, когда речь идет, например, о целых числах.  А если речь идет о машинной арифметике, то целых чисел там нет. Есть целые по модулю, или с насыщением, или машинные опять же с плавающей точкой, которые не удовлетворяют, кажется, очень многим аксиомам о вещественных числах (коммутативность, ассоциативность, плотность например). Поэтому подход со сравнением "математики " и "реальной жизни " тут совершенно порочен, так как вы сравниваете реальную жизнь с неподходящей для её моделирования математикой.
источник

MB

Mikail Bagishov in Compiler Development
Целые по модулю обладают и комутативностью, и дистрибутивностью, и всем остальным
источник

IJ

Igor 🐱 Jirkov in Compiler Development
Это про математику и железки. А если мы добавляем сверху язык программирования,  то его модель арифметики -- это уже третья сущность, которая может не совпадать с железками, и в идеале должна быть полностью описана в стандарте.
источник

IJ

Igor 🐱 Jirkov in Compiler Development
Mikail Bagishov
Целые по модулю обладают и комутативностью, и дистрибутивностью, и всем остальным
Да, в сообщении выше "которые" относятся  к машинным с плавающей точкой (потому и аксиомы вещественных чисел)
источник

S

S.Atan in Compiler Development
Igor 🐱 Jirkov
От перестановки слагаемых сумма не меняется, когда речь идет, например, о целых числах.  А если речь идет о машинной арифметике, то целых чисел там нет. Есть целые по модулю, или с насыщением, или машинные опять же с плавающей точкой, которые не удовлетворяют, кажется, очень многим аксиомам о вещественных числах (коммутативность, ассоциативность, плотность например). Поэтому подход со сравнением "математики " и "реальной жизни " тут совершенно порочен, так как вы сравниваете реальную жизнь с неподходящей для её моделирования математикой.
Вообще то речь шла об оптимизаторах... Вынос за скобки может привести к такому результату, который не возник бы без оптимизации. Вот и всё.
источник

S

S.Atan in Compiler Development
Что такое оптимизация? В простейшем случае - это манипулирование деревом выражений...
Вот скриншоты
источник

S

S.Atan in Compiler Development
источник

S

S.Atan in Compiler Development
источник

S

S.Atan in Compiler Development
источник

AT

Alexander Tchitchigin in Compiler Development
S.Atan
Что такое оптимизация? В простейшем случае - это манипулирование деревом выражений...
Вот скриншоты
Этот вопрос никто не задавал. Спасибо, но можете не отвечать на него. 😉
источник