Size: a a a

Compiler Development

2020 April 28

A

Alex in Compiler Development
Если взять какой-нибудь C++, то там вообще кто-нибудь понаделает виртуальных вызовов и callback'ов каких-нибудь и страдай потом
источник

MO

Mar Ort in Compiler Development
Kitsu
А что это за проц, если не секрет? Если эльбрус то мне казалось у них там был эмулятор x86->их архитектура
БТ по очевидным причинам сильно медленнее нативного режима
источник

MO

Mar Ort in Compiler Development
Alex
Если взять какой-нибудь C++, то там вообще кто-нибудь понаделает виртуальных вызовов и callback'ов каких-нибудь и страдай потом
Эльбрус, кстати, умеет префетчить виртуальные/callback вызовы
источник

МБ

Михаил Бахтерев... in Compiler Development
Mar Ort
Эльбрус, кстати, умеет префетчить виртуальные/callback вызовы
Код в кэши?
источник

MO

Mar Ort in Compiler Development
Да, там есть инструкции подготовки перехода (читай префетч). Так вот ее вычисление можно двигать внутри программы
источник

МБ

Михаил Бахтерев... in Compiler Development
Эх... Вот у Мультиклета с этим вообще хорошо: пока считаешь аргументы, загружаешь адрес, complete, а оно уже всё известно... Как они там живут сейчас?
источник

MO

Mar Ort in Compiler Development
тем самым выполняя виртуальный вызов параллельно с другими частями программы
источник

MO

Mar Ort in Compiler Development
В прочем чего это я тут 🙂
источник

A

Alex in Compiler Development
Mar Ort
тем самым выполняя виртуальный вызов параллельно с другими частями программы
Это не совсем так. В Эльбрусах для вызова _необходимо_ выполнить подготовку перехода. Да, пока она готовится, можно что-нибудь повыполнять, но это всё-таки не prefetch, и это может сыграть злую шутку, т.к. не всегда есть время ожидания между подготовкой и фактическим переходом. Поэтому в Эльбрусах очень агрессивно делают inline и избавляются от переходов
источник

MO

Mar Ort in Compiler Development
Alex
Это не совсем так. В Эльбрусах для вызова _необходимо_ выполнить подготовку перехода. Да, пока она готовится, можно что-нибудь повыполнять, но это всё-таки не prefetch, и это может сыграть злую шутку, т.к. не всегда есть время ожидания между подготовкой и фактическим переходом. Поэтому в Эльбрусах очень агрессивно делают inline и избавляются от переходов
Да, но когда такой возможности нет, то скорее всего зависимость по данным, и проблема не в типе архитектуры. х86 будет точно также стоять и ждать
источник

A

Alex in Compiler Development
Либо это транзитный вызов ради абстракции. Либо это короткая ветвь, которая ожидает перехода. Либо ещё какая-либо неотимальность. x86 тут скорей всего сможет с большой долей вероятности сделать предсказание и даже спекулятивно начать исполнять (кстати, у них там ради безопасности это ещё не отрубили?)
источник

MO

Mar Ort in Compiler Development
Alex
Либо это транзитный вызов ради абстракции. Либо это короткая ветвь, которая ожидает перехода. Либо ещё какая-либо неотимальность. x86 тут скорей всего сможет с большой долей вероятности сделать предсказание и даже спекулятивно начать исполнять (кстати, у них там ради безопасности это ещё не отрубили?)
Секатором в этом месте активно работают последнее время 🙂
источник
2020 May 01

C

Constantine in Compiler Development
https://github.com/MauriceGit/compiler

This project is a small compiler, that compiles my own little language into X86-64 Assembly. It then uses yasm and ld to assemble and link into a Linux an X86-64 executable.
источник

CC

Chris Calvin in Compiler Development
Добрый день, подскажите статью/книгу/доклад где можно узнать про виды машинно-зависимых оптимизаций используемые при кодогенерации
источник
2020 May 02

M

MaxGraey in Compiler Development
Кстати, в последнее время принято ругать JS за все даже за 0.1 + 0.2 != 0.3.
А Python меж тем наоборот всячески хвалить и ставить в пример. Так вот, это не так. Абсолютно)
https://github.com/satwikkansal/wtfpython
источник

А

Алексей in Compiler Development
MaxGraey
Кстати, в последнее время принято ругать JS за все даже за 0.1 + 0.2 != 0.3.
А Python меж тем наоборот всячески хвалить и ставить в пример. Так вот, это не так. Абсолютно)
https://github.com/satwikkansal/wtfpython
Очень забавно кстати как делаются эти wtf
источник

А

Алексей in Compiler Development
что в питоне, что зачастую в js
источник

А

Алексей in Compiler Development
особенно радует id и is в питоне которые сильно завязаны на имплементацию и не дают практически никаких гарантий
источник

M

MaxGraey in Compiler Development
В JS если [] == ![] то это всегда так, а Python большинство таких казусов это просто IB, оптимизирующий интерпретатор сейчас так решил, а в другом контексте все будет иначе)
источник

А

Алексей in Compiler Development
а он изначально не даёт никаких гарантий по этому поводу
источник