Size: a a a

Compiler Development

2020 April 05

A

Alex in Compiler Development
S.Atan
Оптимизации - это не всегда хорошо... Вы же понимаете, что в некоторых случаях оптимизации могут привести ошибочный код к верному значению. С точки зрения человека, это действительно будет верно, с точки зрения процессора нет!
Немного странный ответ, но вообще говоря ошибочный код может вести себя произвольным образом и, например, давать правильный ответ на одной аппаратной платформе и неправильный на другой (реальные случаи). Это не повод не делать другие аппаратные платформы или оптимизации
источник

S

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

И вот такие вопросы и надо знать в первую очередь, так как электронное устройство, в отличие от математического отличается ограничениями на количество оперируемых бит!
источник

A

Alex in Compiler Development
Безусловно надо. as-if rule никто не отменял (кроме случаев когда отменял). Но мне казалось что такие вещи должен знать любой кто так или иначе работает с оптимизациями, а в компиляторе организовано соответствующее тестирование.
источник

A

Alex in Compiler Development
Причём я не сказал бы что это какие-то глубинные сокрытые знания, но всегда лучше знать больше чем меньше
источник

C

Constantine in Compiler Development
источник

PS

Peter Sovietov in Compiler Development
Тезисно, по предыдущим выступлениям:

- без понимания законов булевой алгебры будет тяжело реализовать классическую оптимизацию для ILP-машин — if-conversion :)
- если вы создаете транслятор из языка моделирования в SAT-представление (уж не говорю о HDL), то сумматор строить, возможно, придется :)
источник

S

S.Atan in Compiler Development
Peter Sovietov
Тезисно, по предыдущим выступлениям:

- без понимания законов булевой алгебры будет тяжело реализовать классическую оптимизацию для ILP-машин — if-conversion :)
- если вы создаете транслятор из языка моделирования в SAT-представление (уж не говорю о HDL), то сумматор строить, возможно, придется :)
У меня есть вольный перевод архитектуры RISC 5 машины... Если не знать архитектуру в электронном виде, очень трудно понять работу системы. А тем более писать реализацию компилятора.
И да, она на Обероне... Кому интересно могу закинуть, естественно будет цикл статей начиная от базовых электронных компонентов, их взаимодействия и реализации в программном коде😊
источник

PS

Peter Sovietov in Compiler Development
Alex
Причём я не сказал бы что это какие-то глубинные сокрытые знания, но всегда лучше знать больше чем меньше
А Ваш курс в свободном доступе не появился? А то я бы тоже с удовольствием добавил :)
источник

S

S.Atan in Compiler Development
Да это не курс... Курс будет позже... Обязательно поделюсь... Это всего лишь наброски, из которых понятно, что разработка компилятора должна идти непрерывно с разработкой архитектуры... Вот один из вопросов почему.
На кого переложить ответственность за переполнение?
1) На разработчика.
2) На железо.

Что делать при исключении? Останавливать программу или перезапускать?
И в том и в другом случае возможна утечка ресурсов, которые не безграничны.
Одно дело когда мы пишем братьев марио и другое, когда пишем софт для автомобиля...
Вобщем куча вопросов которые есть, и куча ответов которых нет...
источник

S

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

PS

Peter Sovietov in Compiler Development
S.Atan
Да это не курс... Курс будет позже... Обязательно поделюсь... Это всего лишь наброски, из которых понятно, что разработка компилятора должна идти непрерывно с разработкой архитектуры... Вот один из вопросов почему.
На кого переложить ответственность за переполнение?
1) На разработчика.
2) На железо.

Что делать при исключении? Останавливать программу или перезапускать?
И в том и в другом случае возможна утечка ресурсов, которые не безграничны.
Одно дело когда мы пишем братьев марио и другое, когда пишем софт для автомобиля...
Вобщем куча вопросов которые есть, и куча ответов которых нет...
Ага... Только я поинтересовался у разработчика компилятора для VLIW-архитектуры. Вон там выше Вы его учили, как оптимизировать %)
источник

S

S.Atan in Compiler Development
Peter Sovietov
Ага... Только я поинтересовался у разработчика компилятора для VLIW-архитектуры. Вон там выше Вы его учили, как оптимизировать %)
Ну извините, но, как Вы понимаете, это не отменяет и мой вклад! 😊
источник

S

S.Atan in Compiler Development
И кстати, я не учу никого... Разумный человек сам всегда учится и принимает решения. Я просто выражаю свое мнение, подтверждая примерами. А, так как я по большей степени практик, то всегда могу привести пример для своего оппонета. В коде или в железе, разницы никакой нет 😊😊😊
источник

VM

Victor Miasnikov in Compiler Development
https://t.me/c/1455850606/5210
==
Денис Будяк:

Я обычно всегда говорю "операционная система A2 размером в миллион строк полностью собирается за две минуты".
==

(

Чат, как чат: "A2 Operating System".

Сомневаюсь, что он задумывался как "частный клуб", "так получилось "

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

)
источник

E

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

A

Alex in Compiler Development
Peter Sovietov
А Ваш курс в свободном доступе не появился? А то я бы тоже с удовольствием добавил :)
Я начал делать полноценные конспекты для этой цели, но понял что слишком мало знаю ((( Вообще, сейчас пишу небольшой практический курс по разработке компилятора, надеюсь что первый семестр до конца лета осилю и выложу (там только часть по фронтенду, но, если честно, я хороших практических материалов даже по этой части не нашёл)
источник

AZ

Alexander Zaitsev in Compiler Development
Alex
Я начал делать полноценные конспекты для этой цели, но понял что слишком мало знаю ((( Вообще, сейчас пишу небольшой практический курс по разработке компилятора, надеюсь что первый семестр до конца лета осилю и выложу (там только часть по фронтенду, но, если честно, я хороших практических материалов даже по этой части не нашёл)
если сделаете, то обязательно скиньте в этот чатик ссылку. Спасибо
источник

A

Alex in Compiler Development
Обязательно!
источник

E

Eugene in Compiler Development
насчёт "мгновения ока" — это по меньшей мере не более 13 мс
http://udoktora.net/uchenie-viyasnili-chemu-ravnyaetsya-mgnovenie-oka/
источник

S

S.Atan in Compiler Development
Из разряда '0.12 секунды' 😁
источник