📄 bc-emit.h
字号:
/* bc-emit.h - declare entry points for producing object files of bytecodes. *//* Internal format of symbol table for the object file. */struct bc_sym{ /* Private copy separately malloc'd. */ char *name; /* Symbol has a defined value. */ unsigned int defined:1; /* Symbol has been globalized. */ unsigned int global:1; /* Symbol is common. */ unsigned int common:1; /* Value if defined. */ unsigned long int val; /* Used in internal symbol table structure. */ struct bc_sym *next;};/* List of symbols defined in a particular segment. */struct bc_segsym{ struct bc_sym *sym; struct bc_segsym *next;};/* List of relocations needed in a particular segment. */struct bc_segreloc{ /* Offset of datum to be relocated. */ unsigned int offset; /* Symbol to be relocated by. */ struct bc_sym *sym; struct bc_segreloc *next;};/* Segment of an object file. */struct bc_seg{ /* Size allocated to contents. */ unsigned int alloc; /* Pointer to base of contents. */ char *data; /* Actual size of contents. */ unsigned int size; /* List of symbols defined in this segment. */ struct bc_segsym *syms; /* List of relocations for this segment. */ struct bc_segreloc *relocs;};/* Anonymous bytecode label within a single function. */struct bc_label{ /* Offset of label from start of segment. */ unsigned int offset; /* True when offset is valid. */ unsigned int defined:1; /* Unique bytecode ID, used to determine innermost block containment */ int uid; /* Next node in list */ struct bc_label *next;};/* Reference to a bc_label; a list of all such references is kept for the function, then when it is finished they are backpatched to contain the correct values. */struct bc_labelref{ /* Label referenced. */ struct bc_label *label; /* Code offset of reference. */ unsigned int offset; /* Next labelref in list */ struct bc_labelref *next;};extern void bc_initialize();extern int bc_begin_function();extern char *bc_emit_trampoline();extern void bc_emit_bytecode();extern void bc_emit_bytecode_const();extern struct bc_label *bc_get_bytecode_label();extern int bc_emit_bytecode_labeldef();extern void bc_emit_bytecode_labelref();extern void bc_emit_code_labelref();extern char *bc_end_function();extern void bc_align_const();extern void bc_emit_const();extern void bc_emit_const_skip();extern int bc_emit_const_labeldef();extern void bc_emit_const_labelref();extern void bc_align_data();extern void bc_emit_data();extern void bc_emit_data_skip();extern int bc_emit_data_labeldef();extern void bc_emit_data_labelref();extern int bc_define_pointer ();extern int bc_emit_common();extern void bc_globalize_label();extern void bc_text();extern void bc_data();extern void bc_align();extern void bc_emit();extern void bc_emit_skip();extern int bc_emit_labeldef();extern void bc_emit_labelref();extern void bc_write_file();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -