FAQ

Материал из Compilers Wiki
Перейти к: навигация, поиск

Что такое QBE IL?

Ответ на данный вопрос Вы сможете найти в статье про QBE. Документация ко внутреннему представлению доступна в оригинале на сайте c9x.me (англоязычная версия) и в данном проекте Wiki (оригинал с параллельным переводом).

Документация на Wiki:

  1. QBE
  2. Типы
    1. Простые типы данных
    2. Подтипирование
  3. Константы
  4. Объявления
    1. Составные типы данных
    2. Data
    3. Функции
  5. Управление
    1. Блоки
    2. Переходы
  6. Инструкции
    1. Арифметические и битовые операции
    2. Память
    3. Сравнения
    4. Преобразования
    5. Инструкции Cast и Copy
    6. Инструкция Call
    7. Вариативность
    8. Инструкция Phi
  7. Список всех инструкций

Как получить QBE IL?

Первое, что Вам необходимо сделать – обзавестись самим QBE. Сделать это можно из git-репозитория ИСП РАН.

$ git clone https://compilers.ispras.ru/git/qbe.git 
$ cd qbe

Сборка полученных файлов осуществляется с помощью GNU_Make командой:

$ make && make install DESTDIR=/path/to/install

Результатом сборки является исполняемый файл qbe (qbe.exe), представляющий интерфейс командной строки к QBE, а также библиотека libqbe.a, предоставляющая программный интерфейс.


Источник: | ispras.ru

Как использовать QBE IL?

QBE предоставляет утилиту для работы с файлами на языке промежуточного представления:

$ qbe -h
qbe [OPTIONS] {file.ssa, -}

-h prints this help -o file output to file -t <target> generate for a target among: amd64_sysv, arm64 -G {e,m} generate gas (e) or osx (m) asm -d <flags> dump debug information

Типичное использование утилиты заключается в компиляции файла с промежуточным представлением в файл на языке ассемблера:

$ qbe my-loop.il -o my-loop.s

Для компиляции ассемблерного файла в объектный или исполняемый файл можно использовать компиляторы GCC и Clang:

$ cc my-loop.s

Команды компиляции и запуска можно объединить в одну:

$ qbe my-loop.il | cc -xassembler - -o exe && ./exe

Источник: | ispras.ru