Size: a a a

Compiler Development

2020 February 12

AS

Aleksey Shipilev in Compiler Development
Charm
допустим у тебя есть задача написать gc.
ты такой идешь читаешь handbook че вообще люди придумали, что-то выбираешь и пишешь. с алгоритмической точки зрения - всё понятно.

в какой-то момент ты начнешь упираться, например, что у тебя на каждый read/write барьеры стоят.
Вот хочется куда-то в это сторону. Как их максимально поубирать/сделать дешевыми/и т.д.
А. Этого в рефератном gc handbook не будет. Но иногда встречается в папирах, который этот handbook цитирует, т.к. подобные вопросы за пределами "где надо барьеры" суть детали реализации.
источник

C

Charm in Compiler Development
Aleksey Shipilev
А. Этого в рефератном gc handbook не будет. Но иногда встречается в папирах, который этот handbook цитирует, т.к. подобные вопросы за пределами "где надо барьеры" суть детали реализации.
таки да. я ж говорю, с алгоритмом (условно) всё понятно - в книжке всё написано. А вот про барьеры есть ли такой же хороший гайд - в этом и был вопрос.
цитируемые папиры - ок. спасибо.
источник

AV

Alexey Veselovsky in Compiler Development
А кто-нибудь пробовал отлаживать программу собранную tcc под виндой? У меня что-то ни windbg ни lldb не видят символов (собираю с -g естественно)
источник

M

MaxGraey in Compiler Development
А tcc точно DWARF секции со всеми символами умеет создавать? Это не такое простое дело
источник

AV

Alexey Veselovsky in Compiler Development
А в виндах точно не COFF нужен?
источник

TS

Timur Safin in Compiler Development
точно не dwarf ;)
источник

AV

Alexey Veselovsky in Compiler Development
В линуксах то dwarf и дебаг с ним норм идёт
источник

TS

Timur Safin in Compiler Development
codeview скорее
источник

AV

Alexey Veselovsky in Compiler Development
А в виндах вроде как в ехе и есть что-то дебажное, судя по hex дампу, но lldb бряку никуда поставить не может и image lookup -r -n * не находит ничего
источник

TS

Timur Safin in Compiler Development
Alexey Veselovsky
А в виндах вроде как в ехе и есть что-то дебажное, судя по hex дампу, но lldb бряку никуда поставить не может и image lookup -r -n * не находит ничего
попробуй вот это напустить https://github.com/rainers/cv2pdb (не пробовал, ближайшее найденное по dwarf to pdb)
источник

AV

Alexey Veselovsky in Compiler Development
Судя по исходники, tcc умеет в COFF, но я попробую, да. Спасибо.
источник

МБ

Михаил Бахтерев in Compiler Development
Charm
допустим у тебя есть задача написать gc.
ты такой идешь читаешь handbook че вообще люди придумали, что-то выбираешь и пишешь. с алгоритмической точки зрения - всё понятно.

в какой-то момент ты начнешь упираться, например, что у тебя на каждый read/write барьеры стоят.
Вот хочется куда-то в это сторону. Как их максимально поубирать/сделать дешевыми/и т.д.
А этого нет в оригинальной статье Лампорта о параллельной сборке мусора? Если я помню верно, там слабые требования к памяти
источник

EM

Evgenii Moiseenko in Compiler Development
Михаил Бахтерев
А этого нет в оригинальной статье Лампорта о параллельной сборке мусора? Если я помню верно, там слабые требования к памяти
read/write барьеры и с однопоточным gc могут понадобиться для сборки по поколениям, например
источник

EM

Evgenii Moiseenko in Compiler Development
Вообще, в компиляторе java вроде есть целая пачка анализов для оптимизации и удаления барьеров, вот интересно есть ли по этому какие-нибудь пэйперы)
источник
2020 February 13

M

MaxGraey in Compiler Development
@EgorBo Вот кстати идея для нового пасса в LLVM:
https://godbolt.org/z/hcw4am

ни один из компиляторов не смог оптимизировать проверку деления на 3 и 5 просто сделав проверку деления на 15. LLVM к тому же еще и не очень оптимально оптимизировал деление по модулю на 15 для signed (для unsigned там будет все ок)
источник

AZ

Alexander Zaitsev in Compiler Development
MaxGraey
@EgorBo Вот кстати идея для нового пасса в LLVM:
https://godbolt.org/z/hcw4am

ни один из компиляторов не смог оптимизировать проверку деления на 3 и 5 просто сделав проверку деления на 15. LLVM к тому же еще и не очень оптимально оптимизировал деление по модулю на 15 для signed (для unsigned там будет все ок)
ну всё, надо репортить
источник

E

EgorBo in Compiler Development
а что неоптимально в делении на 15 ?
источник

AZ

Alexander Zaitsev in Compiler Development
интересно, что про себя думают те пару человек, которые это пишут?
источник

M

MaxGraey in Compiler Development
EgorBo
а что неоптимально в делении на 15 ?
в сравнении с GCC
источник

E

EgorBo in Compiler Development
MaxGraey
в сравнении с GCC
по мне гцц какую-то фигню в стиле 90ых творит
в ллвм imul add cmp
источник