Редактирование: QBE

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 100: Строка 100:
 
Для улучшения оптимизации и корректности [https://ru.wikipedia.org/wiki/Low_Level_Virtual_Machine LLVM] имеет сложные типы промежуточного представления. Тем не менее, только несколько типов представляют [https://ru.wikipedia.org/wiki/Объект_первого_класса объекты первого класса], и многие операции исходных языков требуют компиляции приведения типов. Поскольку QBE реализует гораздо более простое использование типов, промежуточное представление получается более читаемым и коротким. Разумеется, можно выносить вопрос о корректности QBE, но помните, что на практике большое количество преобразований, необходимых в ILL LLVM, подрывает общую эффективность системы типов.
 
Для улучшения оптимизации и корректности [https://ru.wikipedia.org/wiki/Low_Level_Virtual_Machine LLVM] имеет сложные типы промежуточного представления. Тем не менее, только несколько типов представляют [https://ru.wikipedia.org/wiki/Объект_первого_класса объекты первого класса], и многие операции исходных языков требуют компиляции приведения типов. Поскольку QBE реализует гораздо более простое использование типов, промежуточное представление получается более читаемым и коротким. Разумеется, можно выносить вопрос о корректности QBE, но помните, что на практике большое количество преобразований, необходимых в ILL LLVM, подрывает общую эффективность системы типов.
 
<pre>For the sake of advanced optimizations and correctness, LLVM has complex IL types. However, only a few types are really first class and many operations of source languages require casts to be compiled. Because QBE makes a much lighter use of types, the IL is more readable and shorter. It can of course be argued back that the correctness of QBE is jeoparadized, but remember that, in practice, the large amount of casts necessary in LLVM IL is undermining the overall effectiveness of the type system.</pre>
 
<pre>For the sake of advanced optimizations and correctness, LLVM has complex IL types. However, only a few types are really first class and many operations of source languages require casts to be compiled. Because QBE makes a much lighter use of types, the IL is more readable and shorter. It can of course be argued back that the correctness of QBE is jeoparadized, but remember that, in practice, the large amount of casts necessary in LLVM IL is undermining the overall effectiveness of the type system.</pre>
 
== Проекты, использующие QBE ==
 
 
*Интерфейс учебника включен в дистрибутив в каталоге <code>minic/</code>. В менее чем 1000 строк он компилирует упрощенный Си. Небольшие контрольные показатели также предоставляются.
 
*Амбициозный [http://git.suckless.org/scc/ Си компилятор].
 
*Два интерфейса для [https://github.com/andrewchambers/qmbfc brainfuck] и [https://github.com/andrewchambers/qc Си] были написаны в Myrddin Эндрю Чэмберсом.
 
*Свидетельством хорошей архитектуры QBE является компилятор [https://github.com/BeRo1985/pacc PACC] от Бенжамина Россо; он повторно использует как архитектуру IL, так и множество возможностей QBE.
 
*Некоторая текущая работа над компилятором [http://myrlang.org/ Myrddin] направлена на использование QBE в качестве backend.
 

Пожалуйста, учтите, что любой ваш вклад в проект «Compilers Wiki» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Compilers Wiki:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Источник — «https://compilers.ispras.ru/wiki/QBE»