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 | ||
) |