Size: a a a

Compiler Development

2020 November 13

DP

Denis Pominov in Compiler Development
Какие материалы можете посоветовать по созданию системы bytecode-ов?
источник

E

EgorBo in Compiler Development
trsfrm2smgen
Доброго времени суток,интересно увидеть и почитать материалы людей,кто в теме llvm selection DAG. Кроме документации llvm.
там комментов в коде больше чем кода :)
источник

t

trsfrm2smgen in Compiler Development
EgorBo
там комментов в коде больше чем кода :)
Понял :),в код ещё не смотрел = )
источник

PS

Peter Sovietov in Compiler Development
Denis Pominov
Какие материалы можете посоветовать по созданию системы bytecode-ов?
Масса ресурсов есть на эту тему. Например, из недавнего: https://justinmeiners.github.io/lc3-vm/
Или речь о байткоде в узком смысле — коде виртуальной стековой машины?
источник

DP

Denis Pominov in Compiler Development
Нет, в широком смысле. Спасибо большое)
источник

PS

Peter Sovietov in Compiler Development
EgorBo
там комментов в коде больше чем кода :)
Но при этом не так уж много пишут о бэкенде самого LLVM, который как раз основан на IR SelectionDAG. Там ведь, например, есть свои фазы локальной (peephole) оптимизации.
источник

a

alekum in Compiler Development
Peter Sovietov
Но при этом не так уж много пишут о бэкенде самого LLVM, который как раз основан на IR SelectionDAG. Там ведь, например, есть свои фазы локальной (peephole) оптимизации.
Но код проще прочитать, все же.
источник

PS

Peter Sovietov in Compiler Development
alekum
Но код проще прочитать, все же.
Возможно. Просто я не знаю, насколько легко из кода понять что-то про IR, который концептуально сильно отличается от LLVM IR. Про последний-то много пишут в блогах и разнообразных туториалах, а про SelectionDAG — не пишут практически ничего.
источник

DP

Denis Pominov in Compiler Development
Peter Sovietov
Масса ресурсов есть на эту тему. Например, из недавнего: https://justinmeiners.github.io/lc3-vm/
Или речь о байткоде в узком смысле — коде виртуальной стековой машины?
А что-то менее игрушечное? Пытаюсь что-то под x86 найти.
источник

PS

Peter Sovietov in Compiler Development
Denis Pominov
А что-то менее игрушечное? Пытаюсь что-то под x86 найти.
источник

a

alekum in Compiler Development
Peter Sovietov
Возможно. Просто я не знаю, насколько легко из кода понять что-то про IR, который концептуально сильно отличается от LLVM IR. Про последний-то много пишут в блогах и разнообразных туториалах, а про SelectionDAG — не пишут практически ничего.
Хм. Я в код смотрел
источник

PS

Pavel Samolysov in Compiler Development
Peter Sovietov
Но при этом не так уж много пишут о бэкенде самого LLVM, который как раз основан на IR SelectionDAG. Там ведь, например, есть свои фазы локальной (peephole) оптимизации.
Там ведь два selection dag'а, собственно SelectionDAG и GlobalISel, второй поновее, знаю, что бекенд для Power на него недавно перешёл. Первый описывается в книге https://www.amazon.com/Getting-Started-LLVM-Core-Libraries/dp/1782166920
источник

DP

Denis Pominov in Compiler Development
спасибо
источник

PS

Peter Sovietov in Compiler Development
Denis Pominov
спасибо
источник

PS

Pavel Samolysov in Compiler Development
Нашёл видео про globalisel, но сам ещё не смотрел https://youtu.be/Zh4R40ZyJ2k
источник

t

trsfrm2smgen in Compiler Development
Peter Sovietov
Но при этом не так уж много пишут о бэкенде самого LLVM, который как раз основан на IR SelectionDAG. Там ведь, например, есть свои фазы локальной (peephole) оптимизации.
А можете какие то материалы подкинуть ?
источник

PS

Peter Sovietov in Compiler Development
alekum
Хм. Я в код смотрел
Это хорошо. Но у меня иногда спрашивают, например, мол, что вот это за hasOneUse и зачем они нужны. В LLVM IR такого не было! :)
https://github.com/llvm/llvm-project/blob/master/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp#L2041
источник

PS

Peter Sovietov in Compiler Development
trsfrm2smgen
А можете какие то материалы подкинуть ?
Для начала я бы посмотрел раздел по работе с графом зависимостей у того же Мучника.
источник

PS

Pavel Samolysov in Compiler Development
Peter Sovietov
Но при этом не так уж много пишут о бэкенде самого LLVM, который как раз основан на IR SelectionDAG. Там ведь, например, есть свои фазы локальной (peephole) оптимизации.
IR selection DAG это Mir? Machine IR, на котором работают machine passes или вы что-то другое имеете ввиду?
источник

PS

Peter Sovietov in Compiler Development
Pavel Samolysov
IR selection DAG это Mir? Machine IR, на котором работают machine passes или вы что-то другое имеете ввиду?
Это графовый IR, который используется в генераторе кода самого LLVM. Он используется здесь:
https://llvm.org/docs/CodeGenerator.html
источник