FreeBASIC
0.91.0
|
Go to the source code of this file.
Data Structures | |
class | IRTACVREG |
class | IRTACVREG_GRP |
class | IRTAC |
class | IRVREG |
class | IR_VTBL |
class | IRCTX |
Macros | |
#define | __IR_BI__ |
#define | irGetOption(op) /* ((ir.options and op) <> 0) */ |
#define | irSetOption(op) /* ir.options or= op */ |
#define | irGetOptionValue(opt) /* ir.vtbl.getOptionValue( opt ) */ |
#define | irAllocVreg(dtype, stype) /* ir.vtbl.allocVreg( dtype, stype ) */ |
#define | irSetVregDataType(v, dtype, stype) /* ir.vtbl.setVregDataType( v, dtype, stype ) */ |
#define | irAllocVrImm(dtype, stype, value) /* ir.vtbl.allocVrImm( dtype, stype, value ) */ |
#define | irAllocVrImmF(dtype, stype, value) /* ir.vtbl.allocVrImmF( dtype, stype, value ) */ |
#define | irAllocVrVar(dtype, stype, sym, ofs) /* ir.vtbl.allocVrVar( dtype, stype, sym, ofs ) */ |
#define | irAllocVrIdx(dtype, stype, sym, ofs, mult, vidx) /* ir.vtbl.allocVrIdx( dtype, stype, sym, ofs, mult, vidx ) */ |
#define | irAllocVrPtr(dtype, stype, ofs, vidx) /* ir.vtbl.allocVrPtr( dtype, stype, ofs, vidx ) */ |
#define | irAllocVrOfs(dtype, stype, sym, ofs) /* ir.vtbl.allocVrOfs( dtype, stype, sym, ofs ) */ |
#define | irProcBegin(proc) /* ir.vtbl.procBegin( proc ) */ |
#define | irProcEnd(proc) /* ir.vtbl.procEnd( proc ) */ |
#define | irScopeBegin(s) /* ir.vtbl.scopeBegin( s ) */ |
#define | irScopeEnd(s) /* ir.vtbl.scopeEnd( s ) */ |
#define | irProcAllocArg(proc, s) /* ir.vtbl.procAllocArg( proc, s ) */ |
#define | irProcAllocLocal(proc, s) /* ir.vtbl.procAllocLocal( proc, s ) */ |
#define | irProcAllocStaticVars(head_sym) /* ir.vtbl.procAllocStaticVars( head_sym ) */ |
#define | irProcGetFrameRegName() /* ir.vtbl.procGetFrameRegName( ) */ |
#define | irEmitBegin() /* ir.vtbl.emitBegin( ) */ |
#define | irEmitEnd(tottime) /* ir.vtbl.emitEnd( tottime ) */ |
#define | irEmitPROCBEGIN(proc, initlabel) /* ir.vtbl.emitProcBegin( proc, initlabel ) */ |
#define | irEmitPROCEND(proc, initlabel, exitlabel) /* ir.vtbl.emitProcEnd( proc, initlabel, exitlabel ) */ |
#define | irEmitVARINIBEGIN(sym) /* ir.vtbl.emitVarIniBegin( sym ) */ |
#define | irEmitVARINIEND(sym) /* ir.vtbl.emitVarIniEnd( sym ) */ |
#define | irEmitVARINIi(sym, value) /* ir.vtbl.emitVarIniI( sym, value ) */ |
#define | irEmitVARINIf(sym, value) /* ir.vtbl.emitVarIniF( sym, value ) */ |
#define | irEmitVARINIOFS(sym, ofs) /* ir.vtbl.emitVarIniOfs( sym, ofs ) */ |
#define | irEmitVARINISTR(totlgt, litstr, litlgt) /* ir.vtbl.emitVarIniStr( totlgt, litstr, litlgt ) */ |
#define | irEmitVARINIWSTR(totlgt, litstr, litlgt) /* ir.vtbl.emitVarIniWstr( totlgt, litstr, litlgt ) */ |
#define | irEmitVARINIPAD(bytes) /* ir.vtbl.emitVarIniPad( bytes ) */ |
#define | irEmitVARINISCOPEBEGIN() /* ir.vtbl.emitVarIniScopeBegin( ) */ |
#define | irEmitVARINISCOPEEND() /* ir.vtbl.emitVarIniScopeEnd( ) */ |
#define | irEmitFBCTINFBEGIN() /* ir.vtbl.emitFbctinfBegin( ) */ |
#define | irEmitFBCTINFSTRING(s) /* ir.vtbl.emitFbctinfString( s ) */ |
#define | irEmitFBCTINFEND() /* ir.vtbl.emitFbctinfEnd( ) */ |
#define | irEmitCONVERT(v1, v2) /* ir.vtbl.emitConvert( v1, v2 ) */ |
#define | irEmitLABEL(label) /* ir.vtbl.emitLabel( label ) */ |
#define | irEmitRETURN(bytestopop) /* ir.vtbl.emitReturn( bytestopop ) */ |
#define | irEmitPUSHARG(param, vr, plen, level) /* ir.vtbl.emitPushArg( param, vr, plen, level ) */ |
#define | irEmitAsmBegin() /* ir.vtbl.emitAsmBegin( ) */ |
#define | irEmitAsmText(text) /* ir.vtbl.emitAsmText( text ) */ |
#define | irEmitAsmSymb(sym) /* ir.vtbl.emitAsmSymb( sym ) */ |
#define | irEmitAsmEnd() /* ir.vtbl.emitAsmEnd( ) */ |
#define | irEmitCOMMENT(text) /* ir.vtbl.emitComment( text ) */ |
#define | irEmitJMPTB(v1, tbsym, values, labels, labelcount, deflabel, minval, maxval) /* ir.vtbl.emitJmpTb( v1, tbsym, values, labels, labelcount, deflabel, minval, maxval ) */ |
#define | irGetDistance(vreg) /* ir.vtbl.getDistance( vreg ) */ |
#define | irLoadVR(reg, vreg, vauxparent) /* ir.vtbl.loadVR( reg, vreg, vauxparent ) */ |
#define | irStoreVR(vreg, vauxparent) /* ir.vtbl.storeVR( vreg, vauxparent ) */ |
#define | irXchgTOS(reg) /* ir.vtbl.xchgTOS( reg ) */ |
#define | irEmitBOP(op, v1, v2, vr, ex) /* ir.vtbl.emitBop( op, v1, v2, vr, ex ) */ |
#define | irEmitUOP(op, v1, vr) /* ir.vtbl.emitUop( op, v1, vr ) */ |
#define | irEmitSTORE(v1, v2) /* ir.vtbl.emitStore( v1, v2 ) */ |
#define | irEmitSPILLREGS() /* ir.vtbl.emitSpillRegs( ) */ |
#define | irEmitLOAD(v1) /* ir.vtbl.emitLoad( v1 ) */ |
#define | irEmitLOADRES(v1, vr) /* ir.vtbl.emitLoadRes( v1, vr ) */ |
#define | irEmitSTACK(op, v1) /* ir.vtbl.emitStack( op, v1 ) */ |
#define | irEmitPUSH(v1) /* ir.vtbl.emitStack( AST_OP_PUSH, v1 ) */ |
#define | irEmitPOP(v1) /* ir.vtbl.emitStack( AST_OP_POP, v1 ) */ |
#define | irEmitADDR(op, v1, vr) /* ir.vtbl.emitAddr( op, v1, vr ) */ |
#define | irEmitLABELNF(s) /* ir.vtbl.emitLabelNF( s ) */ |
#define | irEmitCALLFUNCT(proc, bytestopop, vr, level) /* ir.vtbl.emitCall( proc, bytestopop, vr, level ) */ |
#define | irEmitCALLPTR(v1, vr, bytestopop, level) /* ir.vtbl.emitCallPtr( v1, vr, bytestopop, level ) */ |
#define | irEmitSTACKALIGN(bytes) /* ir.vtbl.emitStackAlign( bytes ) */ |
#define | irEmitJUMPPTR(v1) /* ir.vtbl.emitJumpPtr( v1 ) */ |
#define | irEmitBRANCH(op, label) /* ir.vtbl.emitBranch( op, label ) */ |
#define | irEmitMEM(op, v1, v2, bytes) /* ir.vtbl.emitMem( op, v1, v2, bytes ) */ |
#define | irEmitSCOPEBEGIN(s) /* ir.vtbl.emitScopeBegin( s ) */ |
#define | irEmitSCOPEEND(s) /* ir.vtbl.emitScopeEnd( s ) */ |
#define | irEmitDBG(op, proc, ex) /* ir.vtbl.emitDBG( op, proc, ex ) */ |
#define | irEmitDECL(sym) /* ir.vtbl.emitDECL( sym ) */ |
#define | irIsREG(v) /* (v->typ = IR_VREGTYPE_REG) */ |
#define | irIsIMM(v) /* (v->typ = IR_VREGTYPE_IMM) */ |
#define | irIsVAR(v) /* (v->typ = IR_VREGTYPE_VAR) */ |
#define | irIsIDX(v) /* (v->typ = IR_VREGTYPE_IDX) */ |
#define | irIsPTR(v) /* (v->typ = IR_VREGTYPE_PTR) */ |
#define | irGetVRType(v) /* v->typ */ |
#define | irGetVRDataType(v) /* v->dtype */ |
#define | irGetVRSubType(v) /* v->subtype */ |
#define | irGetVROfs(v) /* v->ofs */ |
#define | irGetVRValueI(v) /* v->value.int */ |
#define | ISLONGINT(t) /* ((t = FB_DATATYPE_LONGINT) or (t = FB_DATATYPE_ULONGINT)) */ |
Typedefs | |
typedef struct IRVREG | IRVREG_ |
typedef struct IRTAC | IRTAC_ |
Enumerations | |
enum | IRVREGTYPE_ENUM { IR_VREGTYPE_IMM, IR_VREGTYPE_VAR, IR_VREGTYPE_IDX, IR_VREGTYPE_PTR, IR_VREGTYPE_REG, IR_VREGTYPE_OFS } |
enum | IR_SECTION { IR_SECTION_CONST, IR_SECTION_DATA, IR_SECTION_BSS, IR_SECTION_CODE, IR_SECTION_DIRECTIVE, IR_SECTION_CONSTRUCTOR, IR_SECTION_DESTRUCTOR, IR_SECTION_INFO } |
enum | IR_REGFAMILY { IR_REG_FPU_STACK, IR_REG_SSE } |
enum | IR_OPTIONVALUE { IR_OPTIONVALUE_MAXMEMBLOCKLEN = 1 } |
enum | IR_OPT { IR_OPT_FPUCONV = &h00000001, IR_OPT_FPUIMMEDIATES = &h00000002, IR_OPT_FPUBOPFLAGS = &h00000004, IR_OPT_FPUSELFBOPS = &h00000008, IR_OPT_CPUBOPFLAGS = &h00000100, IR_OPT_CPUSELFBOPS = &h00000200, IR_OPT_64BITCPUREGS = &h00000400, IR_OPT_ADDRCISC = &h00010000, IR_OPT_NOINLINEOPS = &h00020000 } |
Functions | |
sub | irInit () |
sub | irEnd () |
function_as_string | vregDump (byval_as_IRVREG_ptr v) |
Variables | |
const VAR | IR_INITADDRNODES = 2048 |
const VAR | IR_INITVREGNODES = IR_INITADDRNODES*3 |
const VAR | IR_MAXDIST = 2147483647 |
IR_VTBL | irtac_vtbl |
IR_VTBL | irhlc_vtbl |
IR_VTBL | irllvm_vtbl |
IRCTX | ir |
#define irAllocVreg | ( | dtype, | |
stype | |||
) | /* ir.vtbl.allocVreg( dtype, stype ) */ |
#define irAllocVrIdx | ( | dtype, | |
stype, | |||
sym, | |||
ofs, | |||
mult, | |||
vidx | |||
) | /* ir.vtbl.allocVrIdx( dtype, stype, sym, ofs, mult, vidx ) */ |
#define irAllocVrImm | ( | dtype, | |
stype, | |||
value | |||
) | /* ir.vtbl.allocVrImm( dtype, stype, value ) */ |
#define irAllocVrImmF | ( | dtype, | |
stype, | |||
value | |||
) | /* ir.vtbl.allocVrImmF( dtype, stype, value ) */ |
#define irAllocVrOfs | ( | dtype, | |
stype, | |||
sym, | |||
ofs | |||
) | /* ir.vtbl.allocVrOfs( dtype, stype, sym, ofs ) */ |
#define irAllocVrPtr | ( | dtype, | |
stype, | |||
ofs, | |||
vidx | |||
) | /* ir.vtbl.allocVrPtr( dtype, stype, ofs, vidx ) */ |
#define irAllocVrVar | ( | dtype, | |
stype, | |||
sym, | |||
ofs | |||
) | /* ir.vtbl.allocVrVar( dtype, stype, sym, ofs ) */ |
#define irEmitAsmSymb | ( | sym) | /* ir.vtbl.emitAsmSymb( sym ) */ |
#define irEmitAsmText | ( | text) | /* ir.vtbl.emitAsmText( text ) */ |
#define irEmitCALLPTR | ( | v1, | |
vr, | |||
bytestopop, | |||
level | |||
) | /* ir.vtbl.emitCallPtr( v1, vr, bytestopop, level ) */ |
#define irEmitCOMMENT | ( | text) | /* ir.vtbl.emitComment( text ) */ |
#define irEmitCONVERT | ( | v1, | |
v2 | |||
) | /* ir.vtbl.emitConvert( v1, v2 ) */ |
#define irEmitEnd | ( | tottime) | /* ir.vtbl.emitEnd( tottime ) */ |
#define irEmitFBCTINFBEGIN | ( | ) | /* ir.vtbl.emitFbctinfBegin( ) */ |
#define irEmitFBCTINFSTRING | ( | s) | /* ir.vtbl.emitFbctinfString( s ) */ |
#define irEmitJMPTB | ( | v1, | |
tbsym, | |||
values, | |||
labels, | |||
labelcount, | |||
deflabel, | |||
minval, | |||
maxval | |||
) | /* ir.vtbl.emitJmpTb( v1, tbsym, values, labels, labelcount, deflabel, minval, maxval ) */ |
#define irEmitLABEL | ( | label) | /* ir.vtbl.emitLabel( label ) */ |
#define irEmitLOADRES | ( | v1, | |
vr | |||
) | /* ir.vtbl.emitLoadRes( v1, vr ) */ |
#define irEmitPOP | ( | v1) | /* ir.vtbl.emitStack( AST_OP_POP, v1 ) */ |
#define irEmitPROCBEGIN | ( | proc, | |
initlabel | |||
) | /* ir.vtbl.emitProcBegin( proc, initlabel ) */ |
#define irEmitPROCEND | ( | proc, | |
initlabel, | |||
exitlabel | |||
) | /* ir.vtbl.emitProcEnd( proc, initlabel, exitlabel ) */ |
#define irEmitPUSH | ( | v1) | /* ir.vtbl.emitStack( AST_OP_PUSH, v1 ) */ |
#define irEmitPUSHARG | ( | param, | |
vr, | |||
plen, | |||
level | |||
) | /* ir.vtbl.emitPushArg( param, vr, plen, level ) */ |
#define irEmitRETURN | ( | bytestopop) | /* ir.vtbl.emitReturn( bytestopop ) */ |
#define irEmitSCOPEBEGIN | ( | s) | /* ir.vtbl.emitScopeBegin( s ) */ |
#define irEmitSCOPEEND | ( | s) | /* ir.vtbl.emitScopeEnd( s ) */ |
#define irEmitSTACKALIGN | ( | bytes) | /* ir.vtbl.emitStackAlign( bytes ) */ |
#define irEmitSTORE | ( | v1, | |
v2 | |||
) | /* ir.vtbl.emitStore( v1, v2 ) */ |
#define irEmitVARINIBEGIN | ( | sym) | /* ir.vtbl.emitVarIniBegin( sym ) */ |
#define irEmitVARINIEND | ( | sym) | /* ir.vtbl.emitVarIniEnd( sym ) */ |
#define irEmitVARINIf | ( | sym, | |
value | |||
) | /* ir.vtbl.emitVarIniF( sym, value ) */ |
#define irEmitVARINIi | ( | sym, | |
value | |||
) | /* ir.vtbl.emitVarIniI( sym, value ) */ |
#define irEmitVARINIOFS | ( | sym, | |
ofs | |||
) | /* ir.vtbl.emitVarIniOfs( sym, ofs ) */ |
#define irEmitVARINIPAD | ( | bytes) | /* ir.vtbl.emitVarIniPad( bytes ) */ |
#define irEmitVARINISCOPEBEGIN | ( | ) | /* ir.vtbl.emitVarIniScopeBegin( ) */ |
#define irEmitVARINISCOPEEND | ( | ) | /* ir.vtbl.emitVarIniScopeEnd( ) */ |
#define irEmitVARINISTR | ( | totlgt, | |
litstr, | |||
litlgt | |||
) | /* ir.vtbl.emitVarIniStr( totlgt, litstr, litlgt ) */ |
#define irEmitVARINIWSTR | ( | totlgt, | |
litstr, | |||
litlgt | |||
) | /* ir.vtbl.emitVarIniWstr( totlgt, litstr, litlgt ) */ |
#define irGetDistance | ( | vreg) | /* ir.vtbl.getDistance( vreg ) */ |
#define irGetOptionValue | ( | opt) | /* ir.vtbl.getOptionValue( opt ) */ |
#define irIsIDX | ( | v) | /* (v->typ = IR_VREGTYPE_IDX) */ |
#define irIsIMM | ( | v) | /* (v->typ = IR_VREGTYPE_IMM) */ |
#define irIsPTR | ( | v) | /* (v->typ = IR_VREGTYPE_PTR) */ |
#define irIsREG | ( | v) | /* (v->typ = IR_VREGTYPE_REG) */ |
#define irIsVAR | ( | v) | /* (v->typ = IR_VREGTYPE_VAR) */ |
#define irLoadVR | ( | reg, | |
vreg, | |||
vauxparent | |||
) | /* ir.vtbl.loadVR( reg, vreg, vauxparent ) */ |
#define irProcAllocStaticVars | ( | head_sym) | /* ir.vtbl.procAllocStaticVars( head_sym ) */ |
#define irProcGetFrameRegName | ( | ) | /* ir.vtbl.procGetFrameRegName( ) */ |
#define irSetVregDataType | ( | v, | |
dtype, | |||
stype | |||
) | /* ir.vtbl.setVregDataType( v, dtype, stype ) */ |
#define irStoreVR | ( | vreg, | |
vauxparent | |||
) | /* ir.vtbl.storeVR( vreg, vauxparent ) */ |
#define ISLONGINT | ( | t) | /* ((t = FB_DATATYPE_LONGINT) or (t = FB_DATATYPE_ULONGINT)) */ |
enum IR_OPT |
enum IR_OPTIONVALUE |
enum IR_REGFAMILY |
enum IR_SECTION |
enum IRVREGTYPE_ENUM |
function_as_string vregDump | ( | byval_as_IRVREG_ptr | v) |
const VAR IR_INITVREGNODES = IR_INITADDRNODES*3 |
IR_VTBL irhlc_vtbl |
Definition at line 3542 of file ir-hlc.bas.
IR_VTBL irllvm_vtbl |
IR_VTBL irtac_vtbl |
Definition at line 2646 of file ir-tac.bas.