|
QBE
|

Макросы | |
| #define | O(op, t, cf) [O##op]={#op, t, cf}, |
| #define | X(j) [J##j] = #j, |
Перечисления | |
| enum | { Ke = -2, Km = Kl } |
| enum | PState { PXXX, PLbl, PPhi, PIns, PEnd } |
| enum | { Txxx = 0, Tloadw = NPubOp, Tloadl, Tloads, Tloadd, Talloc1, Talloc2, Tcall, Tenv, Tphi, Tjmp, Tjnz, Tret, Texport, Tfunc, Ttype, Tdata, Talign, Tl, Tw, Th, Tb, Td, Ts, Tz, Tint, Tflts, Tfltd, Ttmp, Tlbl, Tglo, Ttyp, Tstr, Tplus, Teq, Tcomma, Tlparen, Trparen, Tlbrace, Trbrace, Tnl, Tdots, Teof, Ntok } |
| enum | { BMask = 8191, K = 3233235, M = 23 } |
Функции | |
| void | err (char *s,...) |
| void | parse (FILE *f, char *path, void(*data)(Dat *), void(*func)(Fn *)) |
| Парсит файл с программой на QBE IL. Подробнее... | |
| void | printref (Ref r, Fn *fn, FILE *f) |
| void | printfn (Fn *fn, FILE *f) |
Переменные | |
| Op | optab [NOp] |
| Массив всех операций. Подробнее... | |
| #define X | ( | j | ) | [J##j] = #j, |
| anonymous enum |
| void err | ( | char * | s, |
| ... | |||
| ) |
См. определение в файле parse.c строка 134
Используется в gasemitdat() и ssacheck().
Парсит файл с программой на QBE IL.
Центральная функция, входная точка для запуска механизма парсинга программы на QBE IL из вашей программы, управляет процессом парсинга и дёргает коллбэки
| f | Файл с текстом программы |
| path | Путь к файлу с текстом программы |
| data | Указатель на функцию (принимающую на вход указатель на структуру Dat), которой передаётся управление для обработки глобального объекта данных из кода программы |
| func | Указатель на функцию (принимающую на вход указатель на структуру Fn), которой передаётся управление для обработки функций из кода программы |
| void printfn | ( | Fn * | fn, |
| FILE * | f | ||
| ) |