TempleOSCD_150216.ISO
This commit is contained in:
1 parent
64f679eeb9
commit
401601816c
531 files changed
+23341
-22071
No files matched your search
@@ -224,7 +224,7 @@ U0 AsmResolve(CLex *lx,CAsmUnresolvedRef *tempu,U8 *label,Bool undefined)
|
||||
}
|
||||
templu=templu->next; //Technically, more than one won't work.
|
||||
}
|
||||
} else if (!(tempu->type & 1)) {//Rel?
|
||||
} else if (!(tempu->type&1)) {//Rel?
|
||||
r-=tempu->rel_ip;
|
||||
if (tempu->type==EIT_REL_I8 && !(MIN_I8<=r<=MAX_I8) ||
|
||||
tempu->type==EIT_REL_I16 && !(MIN_I16<=r<=MAX_I16)) {
|
||||
@@ -286,7 +286,7 @@ U0 AsmGlblsResolve(CLex *lx,CExe *tempx)
|
||||
CAOTCtrl *a=lx->a;
|
||||
CHashFun *tempf;
|
||||
CAsmUnresolvedRef *tempu=a->glbl_unresolved,*tempu1;
|
||||
I64 j;
|
||||
I64 i,j;
|
||||
CExeImportExport *tempe,*tempe1;
|
||||
CLexUndef *templu;
|
||||
CHashExport *tempex;
|
||||
@@ -317,12 +317,12 @@ U0 AsmGlblsResolve(CLex *lx,CExe *tempx)
|
||||
tempex->use_cnt++;
|
||||
} else {
|
||||
PrintErr("undefined sym at line:%04d %s\n",
|
||||
tempu->line_num,tempex->str);
|
||||
tempu->line_num,tempex->str);
|
||||
LexExcept(lx);
|
||||
}
|
||||
} else if (undefined) {
|
||||
PrintErr("Two imports in same expression not allowed at line:%04d %s\n",
|
||||
tempu->line_num,tempex->str);
|
||||
tempu->line_num,tempex->str);
|
||||
LexExcept(lx);
|
||||
}
|
||||
undefined=TRUE;
|
||||
@@ -338,56 +338,58 @@ U0 AsmGlblsResolve(CLex *lx,CExe *tempx)
|
||||
tempu=tempu1;
|
||||
}
|
||||
|
||||
tempex=lx->htc.glbl_hash_table->next_added;
|
||||
while (tempex!=lx->htc.glbl_hash_table) {
|
||||
if (tempex->type & (HTF_IMPORT|HTF_GOTO_LABEL)) {
|
||||
if (tempex->use_cnt && (tempe=tempex->ie_lst)) {
|
||||
if (tempex->type&HTF_GOTO_LABEL)
|
||||
tempe->flags|=EIF_GOTO_LABEL;
|
||||
if (tempex->import_name)
|
||||
tempe->str=StrNew(tempex->import_name);
|
||||
else
|
||||
for (i=0;i<=lx->htc.glbl_hash_table->mask;i++) {
|
||||
tempex=lx->htc.glbl_hash_table->body[i];
|
||||
while (tempex) {
|
||||
if (tempex->type & (HTF_IMPORT|HTF_GOTO_LABEL)) {
|
||||
if (tempex->use_cnt && (tempe=tempex->ie_lst)) {
|
||||
if (tempex->type&HTF_GOTO_LABEL)
|
||||
tempe->flags|=EIF_GOTO_LABEL;
|
||||
if (tempex->import_name)
|
||||
tempe->str=StrNew(tempex->import_name);
|
||||
else
|
||||
tempe->str=StrNew(tempex->str);
|
||||
do {
|
||||
tempe1=tempe->next;
|
||||
QueIns(tempe,tempx->last_ie);
|
||||
} while (tempe=tempe1);
|
||||
tempex->ie_lst=NULL;
|
||||
}
|
||||
} else if (tempex->type & (HTF_EXPORT|HTF_RESOLVE)) {
|
||||
if (tempex->type & HTF_UNRESOLVED) {
|
||||
PrintErr("undefined sym at %s\n",tempex->str);
|
||||
LexExcept(lx);
|
||||
}
|
||||
if (tempex->type & HTF_RESOLVE) {
|
||||
tempf=tempex;
|
||||
tempeu=tempf->ext_lst;
|
||||
while (tempeu) {
|
||||
tempeu8=tempeu->next;
|
||||
j=tempf->executable_addr-(tempeu->ip+4);
|
||||
AsmStoreCodeU8At(lx,tempeu->ip,j.u8[0],j.u8[1],j.u8[2],j.u8[3]);
|
||||
Free(tempeu);
|
||||
tempeu=tempeu8;
|
||||
}
|
||||
}
|
||||
if (tempex->type & HTF_EXPORT) {
|
||||
tempe=CAlloc(sizeof(CExeImportExport));
|
||||
tempe->type=EIT_REL32_EXPORT;
|
||||
if (tempex->type & HTT_FUN)
|
||||
tempe->ip=tempf->executable_addr;
|
||||
else if (tempex->type & HTT_GLBL_VAR)
|
||||
tempe->ip=tempex(CHashGlblVar *)->data_addr_ip;
|
||||
else
|
||||
tempe->ip=tempex->val;
|
||||
tempe->exe=lx->exe;
|
||||
if (tempex->type & HTF_IMM)
|
||||
tempe->type++;
|
||||
tempe->str=StrNew(tempex->str);
|
||||
do {
|
||||
tempe1=tempe->next;
|
||||
tempe->src_link=StrNew(tempex->src_link);
|
||||
QueIns(tempe,tempx->last_ie);
|
||||
} while (tempe=tempe1);
|
||||
tempex->ie_lst=NULL;
|
||||
}
|
||||
} else if (tempex->type & (HTF_EXPORT|HTF_RESOLVE)) {
|
||||
if (tempex->type & HTF_UNRESOLVED) {
|
||||
PrintErr("undefined sym at %s\n",tempex->str);
|
||||
LexExcept(lx);
|
||||
}
|
||||
if (tempex->type & HTF_RESOLVE) {
|
||||
tempf=tempex;
|
||||
tempeu=tempf->ext_lst;
|
||||
while (tempeu) {
|
||||
tempeu8=tempeu->next;
|
||||
j=tempf->executable_addr-(tempeu->ip+4);
|
||||
AsmStoreCodeU8At(lx,tempeu->ip,j.u8[0],j.u8[1],j.u8[2],j.u8[3]);
|
||||
Free(tempeu);
|
||||
tempeu=tempeu8;
|
||||
}
|
||||
}
|
||||
if (tempex->type & HTF_EXPORT) {
|
||||
tempe=CAlloc(sizeof(CExeImportExport));
|
||||
tempe->type=EIT_REL32_EXPORT;
|
||||
if (tempex->type & HTT_FUN)
|
||||
tempe->ip=tempf->executable_addr;
|
||||
else if (tempex->type & HTT_GLBL_VAR)
|
||||
tempe->ip=tempex(CHashGlblVar *)->data_addr_ip;
|
||||
else
|
||||
tempe->ip=tempex->val;
|
||||
tempe->exe=lx->exe;
|
||||
if (tempex->type & HTF_IMM)
|
||||
tempe->type++;
|
||||
tempe->str=StrNew(tempex->str);
|
||||
tempe->src_link=StrNew(tempex->src_link);
|
||||
QueIns(tempe,tempx->last_ie);
|
||||
}
|
||||
tempex=tempex->next;
|
||||
}
|
||||
tempex=tempex->next_added;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -425,7 +427,7 @@ Bool PrsAsmImm(CLex *lx,CAsmArg *arg)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
U0 PrsAsmArg(CLex *lx,CAsmArg *arg)
|
||||
U0 PrsAsmArg(CLex *lx,CAsmArg *arg,Bool rel)
|
||||
{
|
||||
CHashGeneric *temph,*temph1;
|
||||
CHashReg *tempr;
|
||||
@@ -499,16 +501,19 @@ U0 PrsAsmArg(CLex *lx,CAsmArg *arg)
|
||||
LexExcept(lx,"syntax error at ");
|
||||
}
|
||||
Lex(lx); //skip keyword
|
||||
} else {
|
||||
PrsAsmImm(lx,arg);
|
||||
arg->num.abs_cnts=lx->abs_cnts;
|
||||
if (lx->token!='[')
|
||||
return;
|
||||
}
|
||||
} else
|
||||
goto pa_asm_direct_imm;
|
||||
}
|
||||
} else {
|
||||
pa_asm_direct_imm:
|
||||
PrsAsmImm(lx,arg);
|
||||
arg->num.abs_cnts=lx->abs_cnts;
|
||||
if (arg->size<=1 && !rel && arg->num.abs_cnts&1) {
|
||||
if (lx->a->seg_size==16)
|
||||
arg->size=2;
|
||||
else
|
||||
arg->size=4;
|
||||
}
|
||||
if (lx->token!='[')
|
||||
return;
|
||||
}
|
||||
@@ -530,14 +535,10 @@ U0 PrsAsmArg(CLex *lx,CAsmArg *arg)
|
||||
} else
|
||||
arg->reg2=tempr->reg_num;
|
||||
Lex(lx);
|
||||
} else {
|
||||
PrsAsmImm(lx,arg);
|
||||
arg->num.abs_cnts=lx->abs_cnts;
|
||||
}
|
||||
} else {
|
||||
PrsAsmImm(lx,arg);
|
||||
arg->num.abs_cnts=lx->abs_cnts;
|
||||
}
|
||||
} else
|
||||
goto pa_asm_indirect_imm;
|
||||
} else
|
||||
goto pa_asm_indirect_imm;
|
||||
} else if (lx->token=='*') {
|
||||
Lex(lx);
|
||||
if (lx->token!=TK_INTEGER)
|
||||
@@ -549,6 +550,7 @@ U0 PrsAsmArg(CLex *lx,CAsmArg *arg)
|
||||
} else if (lx->token=='+') {
|
||||
Lex(lx); //skip '+'
|
||||
} else {
|
||||
pa_asm_indirect_imm:
|
||||
PrsAsmImm(lx,arg);
|
||||
arg->num.abs_cnts=lx->abs_cnts;
|
||||
}
|
||||
@@ -557,12 +559,8 @@ U0 PrsAsmArg(CLex *lx,CAsmArg *arg)
|
||||
LexExcept(lx,"missing ']' at ");
|
||||
Lex(lx); //skip ]
|
||||
return;
|
||||
} else {
|
||||
PrsAsmImm(lx,arg);
|
||||
arg->num.abs_cnts=lx->abs_cnts;
|
||||
if (lx->token!='[')
|
||||
return;
|
||||
}
|
||||
} else
|
||||
goto pa_asm_direct_imm;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -676,7 +674,7 @@ Bool AsmStoreNum(CLex *lx,CAsmNum2 *num2,I64 cnt,Bool U8_avail)
|
||||
else if (!num2->imm_flag && !(MIN_I8<=num2->num.i<=MAX_I8))
|
||||
LexExcept(lx,"branch out of range at ");
|
||||
if (num2->imm_flag) {
|
||||
if (num2->num.abs_cnts.abs_addres & 1) {
|
||||
if (num2->num.abs_cnts.abs_addres&1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
@@ -684,7 +682,7 @@ Bool AsmStoreNum(CLex *lx,CAsmNum2 *num2,I64 cnt,Bool U8_avail)
|
||||
tempa->type=EAT_ADD_U8;
|
||||
}
|
||||
} else {
|
||||
if (num2->num.abs_cnts.c_addres & 1) {
|
||||
if (num2->num.abs_cnts.c_addres&1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
@@ -701,7 +699,7 @@ Bool AsmStoreNum(CLex *lx,CAsmNum2 *num2,I64 cnt,Bool U8_avail)
|
||||
else if (!num2->imm_flag && !(MIN_I16<=num2->num.i<=MAX_I16))
|
||||
LexExcept(lx,"branch out of range at ");
|
||||
if (num2->imm_flag) {
|
||||
if (num2->num.abs_cnts.abs_addres & 1) {
|
||||
if (num2->num.abs_cnts.abs_addres&1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
@@ -709,7 +707,7 @@ Bool AsmStoreNum(CLex *lx,CAsmNum2 *num2,I64 cnt,Bool U8_avail)
|
||||
tempa->type=EAT_ADD_U16;
|
||||
}
|
||||
} else {
|
||||
if (num2->num.abs_cnts.c_addres & 1) {
|
||||
if (num2->num.abs_cnts.c_addres&1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
@@ -726,7 +724,7 @@ Bool AsmStoreNum(CLex *lx,CAsmNum2 *num2,I64 cnt,Bool U8_avail)
|
||||
else if (!num2->imm_flag && !(MIN_I32<=num2->num.i<=MAX_I32))
|
||||
LexExcept(lx,"branch out of range at ");
|
||||
if (num2->imm_flag) {
|
||||
if (num2->num.abs_cnts.abs_addres & 1) {
|
||||
if (num2->num.abs_cnts.abs_addres&1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
@@ -734,7 +732,7 @@ Bool AsmStoreNum(CLex *lx,CAsmNum2 *num2,I64 cnt,Bool U8_avail)
|
||||
tempa->type=EAT_ADD_U32;
|
||||
}
|
||||
} else {
|
||||
if (num2->num.abs_cnts.c_addres & 1) {
|
||||
if (num2->num.abs_cnts.c_addres&1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
@@ -748,7 +746,7 @@ Bool AsmStoreNum(CLex *lx,CAsmNum2 *num2,I64 cnt,Bool U8_avail)
|
||||
AsmUnresolvedAdd(lx,num2->num.ex,EIT_REL_I64+num2->imm_flag,a->ip,num2->rel,
|
||||
num2->num.undef_local,num2->num.undef_glbl,lx->cur_lfn->line_num,U8_avail);
|
||||
if (num2->imm_flag) {
|
||||
if (num2->num.abs_cnts.abs_addres & 1) {
|
||||
if (num2->num.abs_cnts.abs_addres&1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
@@ -756,7 +754,7 @@ Bool AsmStoreNum(CLex *lx,CAsmNum2 *num2,I64 cnt,Bool U8_avail)
|
||||
tempa->type=EAT_ADD_U64;
|
||||
}
|
||||
} else {
|
||||
if (num2->num.abs_cnts.c_addres & 1) {
|
||||
if (num2->num.abs_cnts.c_addres&1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
@@ -850,7 +848,7 @@ Bool PrsAsmInstruction(CLex *lx,CHashOpcode *tempo,I64 argcnt)
|
||||
found_second_possible=TRUE;
|
||||
if (!a->arg1.size)
|
||||
PrintWarn("no size specified at %s,%04d\n",
|
||||
lx->cur_lfn->name,lx->cur_lfn->line_num-1);
|
||||
lx->cur_lfn->full_name,lx->cur_lfn->line_num-1);
|
||||
}
|
||||
if (tempi->flags & IEF_PLUS_OPCODE) {
|
||||
if (tempi->slash_val==SV_R_REG) {
|
||||
@@ -957,7 +955,7 @@ Bool PrsAsmInstruction(CLex *lx,CHashOpcode *tempo,I64 argcnt)
|
||||
found_second_possible=TRUE;
|
||||
if (!a->arg1.size && !a->arg2.size)
|
||||
PrintWarn("no size specified at %s,%04d\n",
|
||||
lx->cur_lfn->name,lx->cur_lfn->line_num-1);
|
||||
lx->cur_lfn->full_name,lx->cur_lfn->line_num-1);
|
||||
}
|
||||
if (tempi->flags & IEF_PLUS_OPCODE) {
|
||||
if (tempi->slash_val==SV_R_REG) {
|
||||
@@ -1119,8 +1117,11 @@ Bool PrsAsmInstruction(CLex *lx,CHashOpcode *tempo,I64 argcnt)
|
||||
MemCpy(&cur.imm.num,&tempa2->num,sizeof(CAsmNum));
|
||||
if (a2==ARGT_IMM8 || a2==ARGT_UIMM8) cur.imm.U8_cnt=1;
|
||||
else if (a2==ARGT_IMM16 || a2==ARGT_UIMM16) cur.imm.U8_cnt=2;
|
||||
else if (a2==ARGT_IMM32 || a2==ARGT_UIMM32) cur.imm.U8_cnt=4;
|
||||
else {
|
||||
else if (a2==ARGT_IMM32 || a2==ARGT_UIMM32) {
|
||||
cur.imm.U8_cnt=4;
|
||||
if (tempi->flags&IEF_REX_ONLY_R8_R15 && a2==ARGT_UIMM32)
|
||||
cur.REX&=~8;
|
||||
} else {
|
||||
cur.imm.U8_cnt=8;
|
||||
cur.REX|=8;
|
||||
}
|
||||
@@ -1384,14 +1385,20 @@ U0 PrsAsmBlk(CLex *lx,I64 cmp_flags)
|
||||
argcnt=0;
|
||||
if (tempo->ins[0].arg1) {
|
||||
argcnt++;
|
||||
PrsAsmArg(lx,&a->arg1);
|
||||
if (ARGT_REL8<=tempo->ins[0].arg1<=ARGT_REL32)
|
||||
PrsAsmArg(lx,&a->arg1,TRUE);
|
||||
else
|
||||
PrsAsmArg(lx,&a->arg1,FALSE);
|
||||
if (tempo->ins[0].arg2) {
|
||||
argcnt++;
|
||||
if (lx->token!=',')
|
||||
LexExcept(lx,"expecting ',' at ");
|
||||
else {
|
||||
Lex(lx); //skip ','
|
||||
PrsAsmArg(lx,&a->arg2);
|
||||
if (ARGT_REL8<=tempo->ins[0].arg2<=ARGT_REL32)
|
||||
PrsAsmArg(lx,&a->arg2,TRUE);
|
||||
else
|
||||
PrsAsmArg(lx,&a->arg2,FALSE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1413,7 +1420,7 @@ U0 PrsAsmBlk(CLex *lx,I64 cmp_flags)
|
||||
LexExcept(lx,"expecting ':' at ");
|
||||
if (lx->token==TK_DBL_COLON) {
|
||||
lx->hash_entry->type|=HTF_EXPORT;
|
||||
SetSrcFileInfo(lx,lx->hash_entry);
|
||||
HashSrcFileSet(lx,lx->hash_entry);
|
||||
|
||||
AsmLocalsResolve(lx);
|
||||
a->last_label=next_last_label;
|
||||
@@ -1459,7 +1466,7 @@ U0 PrsAsmBlk(CLex *lx,I64 cmp_flags)
|
||||
}
|
||||
if (lx->token==TK_DBL_COLON) {
|
||||
tempex->type|=HTF_EXPORT;
|
||||
SetSrcFileInfo(lx,tempex);
|
||||
HashSrcFileSet(lx,tempex);
|
||||
|
||||
AsmLocalsResolve(lx);
|
||||
a->last_label=tempex->str;
|
||||
@@ -75,8 +75,7 @@ U0 ICAddSubEctImm(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,
|
||||
else
|
||||
i=0x48;
|
||||
if (!d &&
|
||||
(op.u8[0]==0x03||op.u8[0]==0x2B||
|
||||
op.u8[0]==0x33||op.u8[0]==0x0B))
|
||||
(op.u8[0]==0x03||op.u8[0]==0x2B||op.u8[0]==0x33||op.u8[0]==0x0B))
|
||||
return;
|
||||
else if (d==1 && op.u8[0]==0x03) {
|
||||
ICU24(tempi,0xC0FF00+op.u8[1]<<19+i+(r1&7)<<16);
|
||||
@@ -116,8 +115,7 @@ U0 ICAddSubEctImm(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,
|
||||
}
|
||||
|
||||
if (!d &&
|
||||
(op.u8[0]==0x03||op.u8[0]==0x2B||
|
||||
op.u8[0]==0x33||op.u8[0]==0x0B))
|
||||
(op.u8[0]==0x03||op.u8[0]==0x2B||op.u8[0]==0x33||op.u8[0]==0x0B))
|
||||
return;
|
||||
r=op.u8[1]; //not a reg but a slash val
|
||||
if (op.u8[0]==0x03 && d==-1) //add -1
|
||||
@@ -145,8 +143,7 @@ U0 ICAddSubEctImm(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,
|
||||
ICModr2(tempi,i,d1,ip+4);
|
||||
return;
|
||||
}
|
||||
if (MIN_I8<=d<=MAX_I8 ||
|
||||
t1&(RT_MASK-1)==RT_I8) {
|
||||
if (MIN_I8<=d<=MAX_I8 || t1&(RT_MASK-1)==RT_I8) {
|
||||
i=ICModr1(r,t1,r1,d1);
|
||||
if (tempi->ic_flags&ICF_LOCK)
|
||||
ICU8(tempi,OC_LOCK_PREFIX);
|
||||
@@ -169,8 +166,7 @@ U0 ICAddSubEctImm(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,
|
||||
ICU8(tempi,d);
|
||||
return;
|
||||
}
|
||||
if (MIN_I32<=d<=MAX_I32 ||
|
||||
t1&RT_MASK<RT_I64) {
|
||||
if (MIN_I32<=d<=MAX_I32 || t1&RT_MASK<RT_I64) {
|
||||
i=ICModr1(r,t1,r1,d1);
|
||||
if (tempi->ic_flags&ICF_LOCK)
|
||||
ICU8(tempi,OC_LOCK_PREFIX);
|
||||
@@ -417,7 +417,7 @@ U0 ICPreIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
I64 r;
|
||||
CHashClass *tempc=tempi->ic_class,*tempc1=tempc-1;
|
||||
if (tempi->ic_flags & ICF_NOT_ADDR) {
|
||||
if (tempc->ptr_cnt && tempc1->size!=1) {
|
||||
if (tempc->ptr_stars_cnt && tempc1->size!=1) {
|
||||
ICAddSubEctImm(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed,tempi->a1.reg,tempi->a1.disp,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,tempi->a1.reg,tempi->a1.disp,
|
||||
tempc1->size,op.u16[3],ip);
|
||||
@@ -434,7 +434,7 @@ U0 ICPreIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip);
|
||||
r=REG_RCX;
|
||||
}
|
||||
if (tempc->ptr_cnt &&
|
||||
if (tempc->ptr_stars_cnt &&
|
||||
tempc1->size!=1) {
|
||||
ICAddSubEctImm(tempi,TY_DISP+tempi->a1.type_pointed,r,0,
|
||||
TY_DISP+tempi->a1.type_pointed,r,0,
|
||||
@@ -457,7 +457,7 @@ U0 ICPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,tempi->a1.reg,tempi->a1.disp,ip);
|
||||
}
|
||||
if (tempc->ptr_cnt &&
|
||||
if (tempc->ptr_stars_cnt &&
|
||||
tempc1->size!=1) {
|
||||
ICAddSubEctImm(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed,tempi->a1.reg,tempi->a1.disp,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,tempi->a1.reg,tempi->a1.disp,
|
||||
@@ -477,7 +477,7 @@ U0 ICPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
TY_DISP+tempi->a1.type_pointed,r,0,ip);
|
||||
}
|
||||
if (tempc->ptr_cnt &&
|
||||
if (tempc->ptr_stars_cnt &&
|
||||
tempc1->size!=1) {
|
||||
ICAddSubEctImm(tempi,TY_DISP+tempi->a1.type_pointed,r,0,
|
||||
TY_DISP+tempi->a1.type_pointed,r,0,
|
||||
@@ -577,25 +577,26 @@ U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip,
|
||||
U8 *buf,I64 ip2)
|
||||
{
|
||||
I64 r1,r2,i=0x48,j,t1,t2,result_reg;
|
||||
Bool short_jmp,done;
|
||||
Bool short_jmp,swap,done;
|
||||
CLexCodeMisc *lb;
|
||||
CICArg *a1=&tempi->a1,*a2=&tempi->a2,*swap;
|
||||
CICArg *a1=&tempi->a1,*a2=&tempi->a2;
|
||||
|
||||
j=a1->disp;
|
||||
if (a1->type&TY_MASK==TY_IMM && MIN_I32<=j<=MAX_I32) {
|
||||
swap=a1; a1=a2; a2=swap;
|
||||
SwapI64(&a1,&a2);
|
||||
swap=TRUE;
|
||||
us=not_us;
|
||||
is=not_is;
|
||||
}
|
||||
} else
|
||||
swap=FALSE;
|
||||
if (tempi->ic_class->raw_type&1 || tempi->ic_flags & ICF_USE_UNSIGNED)
|
||||
is=us;
|
||||
|
||||
j=a2->disp;
|
||||
if (a2->type&TY_MASK==TY_IMM && MIN_I32<=j<=MAX_I32) {
|
||||
if (!has_result && TY_REG<=a1->type&TY_MASK<=TY_RIP_DISP32)
|
||||
ICAddSubEctImm(tempi,tempi->a1.type,tempi->a1.reg,tempi->a1.disp,
|
||||
tempi->a1.type,tempi->a1.reg,tempi->a1.disp,
|
||||
j,0x073B,ip2);
|
||||
ICAddSubEctImm(tempi,a1->type,a1->reg,a1->disp,
|
||||
a1->type,a1->reg,a1->disp,j,0x073B,ip2);
|
||||
else {
|
||||
if (a1->type&TY_MASK==TY_REG)
|
||||
r1=a1->reg;
|
||||
File renamed without changes.
@@ -298,7 +298,7 @@ U0 ICFPow(CLex *lx,CIntermediateCode *tempi,U8 *buf,I64 ip)
|
||||
ICU64(tempi,0);
|
||||
if (buf) {
|
||||
tempe=CAlloc(sizeof(CExeImportExport));
|
||||
tempe->type=EIT_IMM_U64;
|
||||
tempe->type=EIT_IMM_I64;
|
||||
tempe->ip=ip+tempi->ic_cnt-8;
|
||||
tempe->next=tempex->ie_lst;
|
||||
tempex->ie_lst=tempe;
|
||||
File renamed without changes.
@@ -20,7 +20,7 @@ extern U0 OptPass3(CLex *lx,COptReg *reg_offsets);
|
||||
extern U0 OptPass4(CLex *lx,COptReg *reg_offsets,I64 *_type);
|
||||
extern U0 OptPass5(CLex *lx);
|
||||
extern U0 OptPass6(CLex *lx);
|
||||
extern I64 OptPass789(CLex *lx,COptReg *reg_offsets,U8 *buf,CDbgInfo **_dbg);
|
||||
extern I64 OptPass789A(CLex *lx,COptReg *reg_offsets,U8 *buf,CDbgInfo **_dbg);
|
||||
extern CHashClass *PrsClass(CLex *lx,I64 keyword,I64 fsp_flags,Bool is_extern);
|
||||
extern CHashFun *PrsFunJoin(CLex *lx,CHashClass *temp_return,U8 *name,I64 fsp_flags);
|
||||
extern I64 PrsKeyWord(CLex *lx);
|
||||
@@ -34,6 +34,7 @@ extern I64 PrsUnaryModifier(CLex *lx,CPrsStk *ps,CMemberLst **_local_var,CArrayD
|
||||
extern I64 PrsUnaryTerm(CLex *lx,CPrsStk *ps,CMemberLst **_local_var,CArrayDim **_tempad,
|
||||
I64 *max_prec,I64 *unary_pre_prec,I64 *paren_prec);
|
||||
extern U0 PrsVarInit2(CLex *lx,U8 **_dst,CHashClass *tempc,CArrayDim *tempad,U8 *data_addr_ip,U8 **_base,Bool data_heap,I64 pass);
|
||||
extern U0 StreamPrint(U8 *fmt,...);
|
||||
_extern CMP_TEMPLATES U32 cmp_templates[1];
|
||||
_extern CMP_TEMPLATES_DONT_POP U32 cmp_templates_dont_pop[1];
|
||||
_extern CMP_TEMPLATES_DONT_PUSH2 U32 cmp_templates_dont_push2[1];
|
||||
@@ -56,7 +56,7 @@ I64 HashEntrySize2(CHashSrcSym *temph)
|
||||
if (!(temph(CHashGlblVar *)->flags&GVF_ALIAS))
|
||||
result+=MSize2(temph(CHashGlblVar *)->data_addr);
|
||||
if (temph(CHashGlblVar *)->fun_ptr)
|
||||
result+=HashEntrySize2(temph(CHashGlblVar *)->fun_ptr-temph(CHashGlblVar *)->fun_ptr->ptr_cnt);
|
||||
result+=HashEntrySize2(temph(CHashGlblVar *)->fun_ptr-temph(CHashGlblVar *)->fun_ptr->ptr_stars_cnt);
|
||||
}
|
||||
} else if (temph->type & HTT_FILE)
|
||||
result+=MSize2(temph(CHashGeneric *)->user_data0);
|
||||
@@ -68,14 +68,16 @@ I64 HashEntrySize2(CHashSrcSym *temph)
|
||||
|
||||
I64 HashTableSize2(CHashTable *table)
|
||||
{//Memory size of std system hash table and all entries.
|
||||
I64 result=0;
|
||||
I64 i,result=0;
|
||||
CHashSrcSym *temph;
|
||||
if (!table)
|
||||
return 0;
|
||||
temph=table->next_added;
|
||||
while (temph!=table) {
|
||||
result+=HashEntrySize2(temph);
|
||||
temph=temph->next_added;
|
||||
for (i=0;i<=table->mask;i++) {
|
||||
temph=table->body[i];
|
||||
while (temph) {
|
||||
result+=HashEntrySize2(temph);
|
||||
temph=temph->next;
|
||||
}
|
||||
}
|
||||
result+=MSize2(table->body);
|
||||
result+=MSize2(table);
|
||||
@@ -50,14 +50,14 @@ U0 AsmPrsInsFlags(CLex *lx,CInstruction *tempi)
|
||||
return;
|
||||
break;
|
||||
case '!': tempi->flags|=IEF_DONT_SWITCH_MODES; break;
|
||||
case '&': tempi->flags|=IEF_DFT; break;
|
||||
case ':': tempi->flags|=IEF_STI; break;
|
||||
case '-': tempi->flags|=IEF_NO_REX; break;
|
||||
case '~': tempi->flags|=IEF_40_REX; break;
|
||||
case '=': tempi->flags|=IEF_48_REX; break;
|
||||
case '&': tempi->flags|=IEF_DFT; break;
|
||||
case ':': tempi->flags|=IEF_STI; break;
|
||||
case '-': tempi->flags|=IEF_NO_REX; break;
|
||||
case '~': tempi->flags|=IEF_40_REX; break;
|
||||
case '=': tempi->flags|=IEF_48_REX; break;
|
||||
case '`': tempi->flags|=IEF_REX_ONLY_R8_R15; break;
|
||||
case '^': tempi->flags|=IEF_REX_XOR_LIKE; break;
|
||||
case '$$': tempi->flags|=IEF_ENDING_ZERO; break;
|
||||
case '^': tempi->flags|=IEF_REX_XOR_LIKE; break;
|
||||
case '$$': tempi->flags|=IEF_ENDING_ZERO; break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
@@ -76,7 +76,7 @@ U0 AsmHashLoad()
|
||||
CInstruction *tempi;
|
||||
CHashClass *tempc;
|
||||
|
||||
cmp.asm_hash=HashTableNew(2048);
|
||||
cmp.asm_hash=HashTableNew(1024);
|
||||
size1=offset(CHashOpcode.ins)+sizeof(CInstruction)<<5;
|
||||
tempo=MAlloc(size1);
|
||||
|
||||
@@ -230,248 +230,13 @@ U0 CmpLoadDefines()
|
||||
"MM\0MM32\0MM64\0XMM\0XMM32\0XMM64\0XMM128\0XMM0\0");
|
||||
DefineLstLoad("ST_SEG_REGS","ES\0CS\0SS\0DS\0FS\0GS\0");
|
||||
DefineLstLoad("ST_FSTK_REGS","ST0\0ST1\0ST2\0ST3\0ST4\0ST5\0ST6\0ST7\0");
|
||||
|
||||
DefineLstLoad("ST_INTERMEDIATE_CODE",
|
||||
/*
|
||||
[arg_cnt][result_cnt][deref/assign/cmp][fpop][nonconst]
|
||||
|
||||
'9' arg_cnt means var
|
||||
|
||||
'*' means it is a dereference instruction
|
||||
'=' means it is an assignment instruction
|
||||
'^' means it is a compare instruction
|
||||
|
||||
'N' means not const. Sets LF_NOT_CONST
|
||||
which means an expression contains mem
|
||||
accesses or things which might change.
|
||||
*/
|
||||
"00...END\0"
|
||||
"00...NOP1\0"
|
||||
"10...END_EXP\0"
|
||||
"00...NOP2\0"
|
||||
"00...LABEL\0"
|
||||
"00...CALL_START\0"
|
||||
"01...CALL_END\0"
|
||||
"00...CALL_END2\0"
|
||||
"10...RETURN_VAL\0"
|
||||
"00...RETURN_VAL2\0"
|
||||
"01...IMM_U64\0"
|
||||
"01...IMM_F64\0"
|
||||
"01..NSTR_CONST\0"
|
||||
"01..NABS_ADDR\0"
|
||||
"01..NADDR_IMPORT\0"
|
||||
"01..NHEAP_GLBL\0"
|
||||
"01...SIZEOF\0"
|
||||
"01...TYPE\0"
|
||||
"01..NGET_LABEL\0"
|
||||
"01..NRBP\0"
|
||||
"01..NREG\0"
|
||||
"00..NFS\0"
|
||||
"01..NMOV_FS\0"
|
||||
"00..NGS\0"
|
||||
"01..NMOV_GS\0"
|
||||
"01..NLEA\0"
|
||||
"01..NMOV\0"
|
||||
"10...TO_I64\0"
|
||||
"10...TO_F64\0"
|
||||
"10...TO_BOOL\0"
|
||||
"10...TOUPPER\0"
|
||||
"11...HOLYC_TYPECAST\0"
|
||||
"11..NADDR\0"
|
||||
"11...COM\0"
|
||||
"11...NOT\0"
|
||||
"11...UNARY_MINUS\0"
|
||||
"11*.NDEREF\0"
|
||||
"11*.NDEREF_PP\0"
|
||||
"11*.NDEREF_MM\0"
|
||||
"11*PN_PP\0"
|
||||
"11*PN_MM\0"
|
||||
"11*PNPP_\0"
|
||||
"11*PNMM_\0"
|
||||
"21...SHL\0"
|
||||
"21...SHR\0"
|
||||
"11=..SHL_CONST\0"
|
||||
"11=..SHR_CONST\0"
|
||||
"21...POWER\0"
|
||||
"21.P.MUL\0"
|
||||
"21.P.DIV\0"
|
||||
"21...MOD\0"
|
||||
"21...AND\0"
|
||||
"21...OR\0"
|
||||
"21...XOR\0"
|
||||
"21.P.ADD\0"
|
||||
"21.P.SUB\0"
|
||||
"11=..ADD_CONST\0"
|
||||
"11=..SUB_CONST\0"
|
||||
"21^..EQUAL_EQUAL\0"
|
||||
"21^..NOT_EQUAL\0"
|
||||
"21^..LESS\0"
|
||||
"21^..GREATER\0"
|
||||
"21^..LESS_EQUAL\0"
|
||||
"21^..GREATER_EQUAL\0"
|
||||
"01...PUSH_CMP\0"
|
||||
"21...AND_AND\0"
|
||||
"21...OR_OR\0"
|
||||
"21...XOR_XOR\0"
|
||||
"21=.NASSIGN\0"
|
||||
"21=.NASSIGN_PP\0"
|
||||
"21=.NASSIGN_MM\0"
|
||||
"21=.NSHL_EQUAL\0"
|
||||
"21=.NSHR_EQUAL\0"
|
||||
"21=.NMUL_EQUAL\0"
|
||||
"21=.NDIV_EQUAL\0"
|
||||
"21=.NMOD_EQUAL\0"
|
||||
"21=.NAND_EQUAL\0"
|
||||
"21=.NOR_EQUAL\0"
|
||||
"21=.NXOR_EQUAL\0"
|
||||
"21=.NADD_EQUAL\0"
|
||||
"21=.NSUB_EQUAL\0"
|
||||
"00...JMP\0"
|
||||
"00...SUB_CALL\0"
|
||||
"20...SWITCH\0"
|
||||
"20...NOBOUND_SWITCH\0"
|
||||
"90...ADD_RSP\0"
|
||||
"90...ADD_RSP1\0"
|
||||
"00...ENTER\0"
|
||||
"00=..PUSH_REGS\0"
|
||||
"00=..POP_REGS\0"
|
||||
"00...LEAVE\0"
|
||||
"00...RET\0"
|
||||
"00..NCALL\0"
|
||||
"00..NCALL_INDIRECT\0"
|
||||
"00..NCALL_INDIRECT2\0"
|
||||
"00..NCALL_IMPORT\0"
|
||||
"00..NCALL_EXTERN\0"
|
||||
"00..NASM\0"
|
||||
"10..NPREEMPT\0"
|
||||
"10..NPUSH\0"
|
||||
"00..NPOP\0"
|
||||
"10..NCLFLUSH\0"
|
||||
"10..NINVLPG\0"
|
||||
"10..NIN_U8\0"
|
||||
"10..NIN_U16\0"
|
||||
"10..NIN_U32\0"
|
||||
"20..NOUT_U8\0"
|
||||
"20..NOUT_U16\0"
|
||||
"20..NOUT_U32\0"
|
||||
"00..NGET_RFLAGS\0"
|
||||
"00..NCARRY\0"
|
||||
"10..NSET_RFLAGS\0"
|
||||
"00..NGET_RAX\0"
|
||||
"10..NSET_RAX\0"
|
||||
"00..NGET_RBP\0"
|
||||
"10..NSET_RBP\0"
|
||||
"00..NGET_RSP\0"
|
||||
"10..NSET_RSP\0"
|
||||
"01..NRIP\0"
|
||||
"00..NRDTSC\0"
|
||||
"00..NHPET\0"
|
||||
"20..NBT\0"
|
||||
"20..NBTS\0"
|
||||
"20..NBTR\0"
|
||||
"20..NBTC\0"
|
||||
"20..NLBTS\0"
|
||||
"20..NLBTR\0"
|
||||
"20..NLBTC\0"
|
||||
"10..NBSF\0"
|
||||
"10..NBSR\0"
|
||||
"10..NQUE_INIT\0"
|
||||
"20..NQUE_INS\0"
|
||||
"20..NQUE_INS_REV\0"
|
||||
"10..NQUE_REM\0"
|
||||
"10..NSTRLEN\0"
|
||||
"10...BR_ZERO\0"
|
||||
"10...BR_NOT_ZERO\0"
|
||||
"00...BR_CARRY\0"
|
||||
"00...BR_NOT_CARRY\0"
|
||||
"20...BR_NOT_EQUAL\0"
|
||||
"20...BR_EQUAL_EQUAL\0"
|
||||
"20...BR_GREATER_EQUAL\0"
|
||||
"20...BR_LESS_EQUAL\0"
|
||||
"20...BR_GREATER\0"
|
||||
"20...BR_LESS\0"
|
||||
"21...BR_2NOT_EQUAL\0"
|
||||
"21...BR_2EQUAL_EQUAL\0"
|
||||
"21...BR_2GREATER_EQUAL\0"
|
||||
"21...BR_2LESS_EQUAL\0"
|
||||
"21...BR_2GREATER\0"
|
||||
"21...BR_2LESS\0"
|
||||
"20...BR_AND_ZERO\0"
|
||||
"20...BR_AND_NOT_ZERO\0"
|
||||
"10..NBR_MM_ZERO\0"
|
||||
"10..NBR_MM_NOT_ZERO\0"
|
||||
"20...BR_AND_AND_ZERO\0"
|
||||
"20...BR_AND_AND_NOT_ZERO\0"
|
||||
"20...BR_OR_OR_ZERO\0"
|
||||
"20...BR_OR_OR_NOT_ZERO\0"
|
||||
"20..NBR_BT\0"
|
||||
"20..NBR_BTS\0"
|
||||
"20..NBR_BTR\0"
|
||||
"20..NBR_BTC\0"
|
||||
"20..NBR_LBTS\0"
|
||||
"20..NBR_LBTR\0"
|
||||
"20..NBR_LBTC\0"
|
||||
"20..NBR_NOT_BT\0"
|
||||
"20..NBR_NOT_BTS\0"
|
||||
"20..NBR_NOT_BTR\0"
|
||||
"20..NBR_NOT_BTC\0"
|
||||
"20..NBR_NOT_LBTS\0"
|
||||
"20..NBR_NOT_LBTR\0"
|
||||
"20..NBR_NOT_LBTC\0"
|
||||
"20..NSWAP_U8\0"
|
||||
"20..NSWAP_U16\0"
|
||||
"20..NSWAP_U32\0"
|
||||
"20..NSWAP_U64\0"
|
||||
"10...ABS_I64\0"
|
||||
"10...SIGN_I64\0"
|
||||
"20...MIN_I64\0"
|
||||
"20...MIN_U64\0"
|
||||
"20...MAX_I64\0"
|
||||
"20...MAX_U64\0"
|
||||
"20...MOD_U64\0"
|
||||
"10...SQRI64\0"
|
||||
"10...SQRU64\0"
|
||||
"11.P.SQR\0"
|
||||
"11.P.ABS\0"
|
||||
"11.P.SQRT\0"
|
||||
"11.P.SIN\0"
|
||||
"11.P.COS\0"
|
||||
"11.P.TAN\0"
|
||||
"11.P.ATAN\0"
|
||||
);$AN,"Anchor for adding intermediate codes",A="IC_INIT_TABLE"$
|
||||
}
|
||||
|
||||
U0 CmpFillTables()
|
||||
{
|
||||
U8 *st;
|
||||
I64 i,k;
|
||||
U32 *d;
|
||||
|
||||
cmp.ic_bitmap_assign =CAlloc((IC_NUM_ENTRIES+7)>>3);
|
||||
cmp.ic_bitmap_deref =CAlloc((IC_NUM_ENTRIES+7)>>3);
|
||||
cmp.ic_bitmap_cmp =CAlloc((IC_NUM_ENTRIES+7)>>3);
|
||||
cmp.ic_bitmap_not_const=CAlloc((IC_NUM_ENTRIES+7)>>3);
|
||||
cmp.ic_bitmap_fpop =CAlloc((IC_NUM_ENTRIES+7)>>3);
|
||||
cmp.arg_cnt =CAlloc(IC_NUM_ENTRIES);
|
||||
cmp.result_cnt =CAlloc(IC_NUM_ENTRIES);
|
||||
st=Define("ST_INTERMEDIATE_CODE");
|
||||
for (i=0;i<IC_NUM_ENTRIES;i++) {
|
||||
cmp.arg_cnt[i]=*st-'0';
|
||||
cmp.result_cnt[i]=st[1]-'0';
|
||||
if (st[2]=='*')
|
||||
Bts(cmp.ic_bitmap_deref,i);
|
||||
else if (st[2]=='=')
|
||||
Bts(cmp.ic_bitmap_assign,i);
|
||||
else if (st[2]=='^')
|
||||
Bts(cmp.ic_bitmap_cmp,i);
|
||||
if (st[3]=='P')
|
||||
Bts(cmp.ic_bitmap_fpop,i);
|
||||
if (st[4]=='N')
|
||||
Bts(cmp.ic_bitmap_not_const,i);
|
||||
st+=StrLen(st)+1;
|
||||
//See $LK,"ICPut",A="FF:::/Compiler/ICLCC.CPP,ST_INTERMEDIATE_CODE"$.
|
||||
}
|
||||
|
||||
cmp.to_reg_vars_map=CAlloc(NUM_REGS*sizeof(U8));
|
||||
cmp.num_reg_vars=0;
|
||||
cmp.reg_vars_mask=REG_VARS_MASK;
|
||||
@@ -486,7 +251,7 @@ U0 CmpFillTables()
|
||||
if (Bt(&cmp.non_ptr_vars_mask,i))
|
||||
cmp.non_ptr_vars_map[cmp.num_non_ptr_vars++]=i;
|
||||
|
||||
/* STK TEMP ALLOCATION: See $LK,"::/Compiler/OptPass6.CPP.Z"$.
|
||||
/* STK TEMP ALLOCATION: See $LK,"::/Compiler/OptPass6.CPP"$.
|
||||
|
||||
Expressions are evaluated with a stack machine.
|
||||
|
||||
@@ -503,7 +268,7 @@ STK[2]: RAX 1 1 1 1 1 RAX
|
||||
STK[1]: RAX 2 RAX 5 RAX
|
||||
STK[0]: RAX RAX
|
||||
|
||||
Two regs are allocated for stk temps.
|
||||
Two regs are alloced for stk temps.
|
||||
|
||||
STK[0]:
|
||||
R9 : RAX R9 R9 R9 R9 R9 RAX
|
||||
@@ -562,22 +327,22 @@ STK[0]:
|
||||
d['/']=TK_DIV_EQUAL<<16+'=';
|
||||
|
||||
cmp.binary_ops=d=CAlloc(sizeof(U32)*TK_NUM_TK);
|
||||
d['`'] =(PREC_EXP+ASSOCF_RIGHT)<<16+IC_POWER;
|
||||
d[TK_SHL] =(PREC_EXP+ASSOCF_LEFT)<<16+IC_SHL;
|
||||
d[TK_SHR] =(PREC_EXP+ASSOCF_LEFT)<<16+IC_SHR;
|
||||
d['`'] =(PREC_EXP+ASSOCF_RIGHT)<<16+IC_POWER;
|
||||
d[TK_SHL]=(PREC_EXP+ASSOCF_LEFT)<<16+IC_SHL;
|
||||
d[TK_SHR]=(PREC_EXP+ASSOCF_LEFT)<<16+IC_SHR;
|
||||
|
||||
d['*'] =PREC_MUL<<16+IC_MUL;
|
||||
d['/'] =(PREC_MUL+ASSOCF_LEFT)<<16+IC_DIV;
|
||||
d['%'] =(PREC_MUL+ASSOCF_LEFT)<<16+IC_MOD;
|
||||
d['*']=PREC_MUL<<16+IC_MUL;
|
||||
d['/']=(PREC_MUL+ASSOCF_LEFT)<<16+IC_DIV;
|
||||
d['%']=(PREC_MUL+ASSOCF_LEFT)<<16+IC_MOD;
|
||||
|
||||
d['&'] =PREC_AND<<16+IC_AND;
|
||||
d['&']=PREC_AND<<16+IC_AND;
|
||||
|
||||
d['^'] =PREC_XOR<<16+IC_XOR;
|
||||
d['^']=PREC_XOR<<16+IC_XOR;
|
||||
|
||||
d['|'] =PREC_OR<<16+IC_OR;
|
||||
d['|']=PREC_OR<<16+IC_OR;
|
||||
|
||||
d['+'] =PREC_ADD<<16+IC_ADD;
|
||||
d['-'] =(PREC_ADD+ASSOCF_LEFT)<<16+IC_SUB;
|
||||
d['+']=PREC_ADD<<16+IC_ADD;
|
||||
d['-']=(PREC_ADD+ASSOCF_LEFT)<<16+IC_SUB;
|
||||
|
||||
d['<'] =PREC_CMP<<16+IC_LESS;
|
||||
d['>'] =PREC_CMP<<16+IC_GREATER;
|
||||
@@ -589,11 +354,11 @@ STK[0]:
|
||||
|
||||
d[TK_AND_AND] =PREC_AND_AND<<16+IC_AND_AND;
|
||||
|
||||
d[TK_XOR_XOR]=PREC_XOR_XOR<<16+IC_XOR_XOR;
|
||||
d[TK_XOR_XOR] =PREC_XOR_XOR<<16+IC_XOR_XOR;
|
||||
|
||||
d[TK_OR_OR] =PREC_OR_OR<<16+IC_OR_OR;
|
||||
|
||||
d['='] =(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_ASSIGN;
|
||||
d['='] =(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_ASSIGN;
|
||||
d[TK_SHL_EQUAL]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_SHL_EQUAL;
|
||||
d[TK_SHR_EQUAL]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_SHR_EQUAL;
|
||||
d[TK_MUL_EQUAL]=(PREC_ASSIGN+ASSOCF_RIGHT)<<16+IC_MUL_EQUAL;
|
||||
@@ -23,7 +23,8 @@ U8 *LexStatement2Bin(CLex *lx,I64 *_type,I64 cmp_flags=0)
|
||||
LCCInit(lx);
|
||||
if (!PrsStatement(lx,,,cmp_flags)) {
|
||||
if (lx->lcc.lcc_root.next!=&lx->lcc.lcc_root) {
|
||||
LCCAdd(lx,IC_RETURN_VAL2,0,NULL);
|
||||
lx->lcc.lcc_root.last->ic_flags&=~ICF_NO_DEPEND_RESULT;
|
||||
LCCAdd(lx,IC_RETURN_VAL2,0,0);
|
||||
LCCAdd(lx,IC_RET,0,0);
|
||||
if (result=LCCCompile(lx,&size,NULL,_type)) {
|
||||
if (lx->flags&LF_AOT_COMPILE) {
|
||||
@@ -74,7 +75,7 @@ CExe *CmpJoin(CLex *lx,I64 cmp_flags,U8 *map_name=NULL,U8 mapfile_drv=0)
|
||||
if (lx->htc.fun)
|
||||
lx->htc.glbl_hash_table=HashTableNew(128);
|
||||
else
|
||||
lx->htc.glbl_hash_table=HashTableNew(2048);
|
||||
lx->htc.glbl_hash_table=HashTableNew(1024);
|
||||
if (lx->flags&LF_AOT_COMPILE) {
|
||||
lx->htc.define_hash_table=lx->htc.glbl_hash_table;
|
||||
if (lx->a_depth<=1)
|
||||
@@ -235,7 +236,7 @@ U0 CmpFixUpJITAsm(CLex *lx,CExe *tempx)
|
||||
HashAdd(tempex,Fs->hash_table);
|
||||
SysSymImportsResolve(tempex->str);
|
||||
break;
|
||||
case EIT_REL_I0...EIT_IMM_U64:
|
||||
case EIT_REL_I0...EIT_IMM_I64:
|
||||
if (tempe->str) {
|
||||
if (tempe->flags&EIF_GOTO_LABEL) {
|
||||
if(!(g_lb=LCCGoToLabelFind(lx,str)))
|
||||
@@ -293,7 +294,7 @@ U0 CmpFixUpJITAsm(CLex *lx,CExe *tempx)
|
||||
case EIT_REL_I64:
|
||||
*ptr(I64 *)=i-ptr-8;
|
||||
break;
|
||||
case EIT_IMM_U64:
|
||||
case EIT_IMM_I64:
|
||||
*ptr(I64 *)=i;
|
||||
break;
|
||||
}
|
||||
@@ -326,30 +327,14 @@ U0 CmpFixUpAOTAsm(CLex *lx,CExe *tempx)
|
||||
tempa->next=a->abss;
|
||||
ptr=tempx->buf+tempx->ip+tempa->ip;
|
||||
nobound_switch (tempa->type) {
|
||||
case EAT_ADD_U8:
|
||||
*ptr(U8 *)+=ip2;
|
||||
break;
|
||||
case EAT_SUB_U8:
|
||||
*ptr(U8 *)-=ip2;
|
||||
break;
|
||||
case EAT_ADD_U16:
|
||||
*ptr(U16 *)+=ip2;
|
||||
break;
|
||||
case EAT_SUB_U16:
|
||||
*ptr(U16 *)-=ip2;
|
||||
break;
|
||||
case EAT_ADD_U32:
|
||||
*ptr(U32 *)+=ip2;
|
||||
break;
|
||||
case EAT_SUB_U32:
|
||||
*ptr(U32 *)-=ip2;
|
||||
break;
|
||||
case EAT_ADD_U64:
|
||||
*ptr(I64 *)+=ip2;
|
||||
break;
|
||||
case EAT_SUB_U64:
|
||||
*ptr(I64 *)-=ip2;
|
||||
break;
|
||||
case EAT_ADD_U8: *ptr(U8 *)+=ip2; break;
|
||||
case EAT_SUB_U8: *ptr(U8 *)-=ip2; break;
|
||||
case EAT_ADD_U16: *ptr(U16 *)+=ip2; break;
|
||||
case EAT_SUB_U16: *ptr(U16 *)-=ip2; break;
|
||||
case EAT_ADD_U32: *ptr(U32 *)+=ip2; break;
|
||||
case EAT_SUB_U32: *ptr(U32 *)-=ip2; break;
|
||||
case EAT_ADD_U64: *ptr(I64 *)+=ip2; break;
|
||||
case EAT_SUB_U64: *ptr(I64 *)-=ip2; break;
|
||||
}
|
||||
a->abss=tempa;
|
||||
tempa->ip+=ip2;
|
||||
@@ -360,7 +345,7 @@ U0 CmpFixUpAOTAsm(CLex *lx,CExe *tempx)
|
||||
while (tempe!=&tempx->next_ie) {
|
||||
tempe1=tempe->next;
|
||||
QueRem(tempe);
|
||||
if (EIT_REL_I0<=tempe->type<=EIT_IMM_U64) {
|
||||
if (EIT_REL_I0<=tempe->type<=EIT_IMM_I64) {
|
||||
if (tempe->str) {
|
||||
if (tempe->flags&EIF_GOTO_LABEL) {
|
||||
if(!(g_lb=LCCGoToLabelFind(lx,tempe->str)))
|
||||
@@ -409,7 +394,7 @@ U0 CmpFixUpAOTAsm(CLex *lx,CExe *tempx)
|
||||
case EIT_REL_I64:
|
||||
*ptr(I64 *)=i-ptr-8;
|
||||
break;
|
||||
case EIT_IMM_U64:
|
||||
case EIT_IMM_I64:
|
||||
*ptr(I64 *)=i;
|
||||
break;
|
||||
}
|
||||
@@ -426,21 +411,13 @@ U0 CmpFixUpAOTAsm(CLex *lx,CExe *tempx)
|
||||
case EIT_IMM_U8:
|
||||
case EIT_IMM_U16:
|
||||
case EIT_IMM_U32:
|
||||
case EIT_IMM_U64:
|
||||
case EIT_IMM_I64:
|
||||
case EIT_REL_I0:
|
||||
break;
|
||||
case EIT_REL_I8:
|
||||
*ptr(U8 *) -=ip2;
|
||||
break;
|
||||
case EIT_REL_I16:
|
||||
*ptr(U16 *)-=ip2;
|
||||
break;
|
||||
case EIT_REL_I32:
|
||||
*ptr(U32 *)-=ip2;
|
||||
break;
|
||||
case EIT_REL_I64:
|
||||
*ptr(I64 *)-=ip2;
|
||||
break;
|
||||
case EIT_REL_I8: *ptr(U8 *) -=ip2; break;
|
||||
case EIT_REL_I16: *ptr(U16 *)-=ip2; break;
|
||||
case EIT_REL_I32: *ptr(U32 *)-=ip2; break;
|
||||
case EIT_REL_I64: *ptr(I64 *)-=ip2; break;
|
||||
sub_switch_end:
|
||||
tempe->ip+=ip2;
|
||||
break;
|
||||
@@ -715,11 +692,9 @@ I64 StreamExePrint(U8 *fmt,...)
|
||||
return result;
|
||||
}
|
||||
|
||||
U0 CmpInit()
|
||||
U0 CInit()
|
||||
{
|
||||
cmp.compiled_lines=0;
|
||||
cmp.compiled_funs=0;
|
||||
cmp.compiled_bytes=0;
|
||||
cmp.dont_write_to_dsk=FALSE;
|
||||
CmpLoadDefines;
|
||||
CmpFillTables;
|
||||
@@ -733,4 +708,4 @@ U0 CmpInit()
|
||||
UasmHashLoad;
|
||||
}
|
||||
|
||||
CmpInit;
|
||||
CInit;
|
||||
@@ -0,0 +1,622 @@
|
||||
Bool OptEqu(I64 num,Bool val)
|
||||
{//Set compiler option to value.
|
||||
return BEqu(&Fs->last_lex->opts,num,val);
|
||||
}
|
||||
|
||||
Bool OptOn(I64 num)
|
||||
{//Turn on compiler option.
|
||||
return OptEqu(num,ON);
|
||||
}
|
||||
|
||||
Bool OptOff(I64 num)
|
||||
{//Turn off compiler option.
|
||||
return OptEqu(num,OFF);
|
||||
}
|
||||
|
||||
Bool GetOpt(I64 num)
|
||||
{//Get state of compiler option.
|
||||
return Bt(&Fs->last_lex->opts,num);
|
||||
}
|
||||
|
||||
Bool OTrace(Bool val)
|
||||
{//Displays intermediate code after passes through optimization.
|
||||
return OptEqu(OPTf_OPT_TRACE,val);
|
||||
}
|
||||
|
||||
I64 OTraceMask(I64 i=0b10001111101)
|
||||
{//Ctrls which optimizer passes are displayed.
|
||||
I64 old=Fs->last_lex->otrace_mask;
|
||||
Fs->last_lex->otrace_mask=i;
|
||||
return old;
|
||||
}
|
||||
|
||||
Bool CTrace(Bool val)
|
||||
{//Displays assembly code output from compiler.
|
||||
return OptEqu(OPTf_COMPILE_TRACE,val);
|
||||
}
|
||||
|
||||
Bool Echo(Bool val)
|
||||
{//Displays text as it is being compiled.
|
||||
return OptEqu(OPTf_ECHO,val);
|
||||
}
|
||||
|
||||
U0 StreamDir()
|
||||
{
|
||||
U8 *dirname;
|
||||
if (dirname=DirFile(Fs->last_lex->cur_lfn->full_name)) {
|
||||
StreamPrint("\"%s\"",dirname);
|
||||
Free(dirname);
|
||||
}
|
||||
}
|
||||
|
||||
CIntermediateStruct intermediate_code_table[IC_NUM_ENTRIES]=
|
||||
{
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"END"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"NOP1"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"END_EXP"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"NOP2"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"LABEL"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"CALL_START"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"CALL_END"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"CALL_END2"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"RETURN_VAL"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"RETURN_VAL2"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"IMM_I64"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"IMM_F64"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,TRUE,0,0,0,"STR_CONST"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,TRUE,0,0,0,"ABS_ADDR"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,TRUE,0,0,0,"ADDR_IMPORT"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,TRUE,0,0,0,"HEAP_GLBL"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"SIZEOF"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"TYPE"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,TRUE,0,0,0,"GET_LABEL"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,TRUE,0,0,0,"RBP"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,TRUE,0,0,0,"REG"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"FS"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,TRUE,0,0,0,"MOV_FS"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"GS"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,TRUE,0,0,0,"MOV_GS"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,TRUE,0,0,0,"LEA"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,TRUE,0,0,0,"MOV"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"TO_I64"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"TO_F64"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"TO_BOOL"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"TOUPPER"},
|
||||
{IS_1_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"HOLYC_TYPECAST"},
|
||||
{IS_1_ARG,1,IST_NULL,FALSE,TRUE,0,0,0,"ADDR"},
|
||||
{IS_1_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"COM"},
|
||||
{IS_1_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"NOT"},
|
||||
{IS_1_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"UNARY_MINUS"},
|
||||
{IS_1_ARG,1,IST_DEREF,FALSE,TRUE,0,0,0,"DEREF"},
|
||||
{IS_1_ARG,1,IST_DEREF,FALSE,TRUE,0,0,0,"DEREF_PP"},
|
||||
{IS_1_ARG,1,IST_DEREF,FALSE,TRUE,0,0,0,"DEREF_MM"},
|
||||
{IS_1_ARG,1,IST_DEREF,TRUE,TRUE,0,0,0,"_PP"},
|
||||
{IS_1_ARG,1,IST_DEREF,TRUE,TRUE,0,0,0,"_MM"},
|
||||
{IS_1_ARG,1,IST_DEREF,TRUE,TRUE,0,0,0,"PP_"},
|
||||
{IS_1_ARG,1,IST_DEREF,TRUE,TRUE,0,0,0,"MM_"},
|
||||
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"SHL"},
|
||||
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"SHR"},
|
||||
{IS_1_ARG,1,IST_ASSIGN,FALSE,FALSE,0,0,0,"SHL_CONST"},
|
||||
{IS_1_ARG,1,IST_ASSIGN,FALSE,FALSE,0,0,0,"SHR_CONST"},
|
||||
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"POWER"},
|
||||
{IS_2_ARG,1,IST_NULL,TRUE,FALSE,0,0,0,"MUL"},
|
||||
{IS_2_ARG,1,IST_NULL,TRUE,FALSE,0,0,0,"DIV"},
|
||||
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"MOD"},
|
||||
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"AND"},
|
||||
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"OR"},
|
||||
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"XOR"},
|
||||
{IS_2_ARG,1,IST_NULL,TRUE,FALSE,0,0,0,"ADD"},
|
||||
{IS_2_ARG,1,IST_NULL,TRUE,FALSE,0,0,0,"SUB"},
|
||||
{IS_1_ARG,1,IST_ASSIGN,FALSE,FALSE,0,0,0,"ADD_CONST"},
|
||||
{IS_1_ARG,1,IST_ASSIGN,FALSE,FALSE,0,0,0,"SUB_CONST"},
|
||||
{IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"EQUAL_EQUAL"},
|
||||
{IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"NOT_EQUAL"},
|
||||
{IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"LESS"},
|
||||
{IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"GREATER_EQUAL"},
|
||||
{IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"GREATER"},
|
||||
{IS_2_ARG,1,IST_CMP,FALSE,FALSE,0,0,0,"LESS_EQUAL"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"PUSH_CMP"},
|
||||
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"AND_AND"},
|
||||
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"OR_OR"},
|
||||
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"XOR_XOR"},
|
||||
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"ASSIGN"},
|
||||
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"ASSIGN_PP"},
|
||||
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"ASSIGN_MM"},
|
||||
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"SHL_EQUAL"},
|
||||
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"SHR_EQUAL"},
|
||||
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"MUL_EQUAL"},
|
||||
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"DIV_EQUAL"},
|
||||
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"MOD_EQUAL"},
|
||||
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"AND_EQUAL"},
|
||||
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"OR_EQUAL"},
|
||||
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"XOR_EQUAL"},
|
||||
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"ADD_EQUAL"},
|
||||
{IS_2_ARG,1,IST_ASSIGN,FALSE,TRUE,0,0,0,"SUB_EQUAL"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"JMP"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"SUB_CALL"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"SWITCH"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"NOBOUND_SWITCH"},
|
||||
{IS_V_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"ADD_RSP"},
|
||||
{IS_V_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"ADD_RSP1"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"ENTER"},
|
||||
{IS_0_ARG,0,IST_ASSIGN,FALSE,FALSE,0,0,0,"PUSH_REGS"},
|
||||
{IS_0_ARG,0,IST_ASSIGN,FALSE,FALSE,0,0,0,"POP_REGS"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"LEAVE"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"RET"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"CALL"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"CALL_INDIRECT"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"CALL_INDIRECT2"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"CALL_IMPORT"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"CALL_EXTERN"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"ASM"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"PREEMPT"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"PUSH"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"POP"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"CLFLUSH"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"INVLPG"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"IN_U8"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"IN_U16"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"IN_U32"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"OUT_U8"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"OUT_U16"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"OUT_U32"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"GET_RFLAGS"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"CARRY"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"SET_RFLAGS"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"GET_RAX"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"SET_RAX"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"GET_RBP"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"SET_RBP"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"GET_RSP"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"SET_RSP"},
|
||||
{IS_0_ARG,1,IST_NULL,FALSE,TRUE,0,0,0,"RIP"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"RDTSC"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"HPET"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BT"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BTS"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BTR"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BTC"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"LBTS"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"LBTR"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"LBTC"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BSF"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BSR"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"QUE_INIT"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"QUE_INS"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"QUE_INS_REV"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"QUE_REM"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"STRLEN"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_ZERO"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_NOT_ZERO"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_CARRY"},
|
||||
{IS_0_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_NOT_CARRY"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_EQUAL_EQUAL"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_NOT_EQUAL"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_LESS"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_GREATER_EQUAL"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_GREATER"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_LESS_EQUAL"},
|
||||
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2EQUAL_EQUAL"},
|
||||
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2NOT_EQUAL"},
|
||||
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2LESS"},
|
||||
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2GREATER_EQUAL"},
|
||||
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2GREATER"},
|
||||
{IS_2_ARG,1,IST_NULL,FALSE,FALSE,0,0,0,"BR_2LESS_EQUAL"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_AND_ZERO"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_AND_NOT_ZERO"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BR_MM_ZERO"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BR_MM_NOT_ZERO"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_AND_AND_ZERO"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_AND_AND_NOT_ZERO"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_OR_OR_ZERO"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"BR_OR_OR_NOT_ZERO"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BR_BT"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BR_BTS"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BR_BTR"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BR_BTC"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BR_NOT_BT"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BR_NOT_BTS"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BR_NOT_BTR"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"BR_NOT_BTC"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"SWAP_U8"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"SWAP_U16"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"SWAP_U32"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,TRUE,0,0,0,"SWAP_U64"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"ABS_I64"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"SIGN_I64"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"MIN_I64"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"MIN_U64"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"MAX_I64"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"MAX_U64"},
|
||||
{IS_2_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"MOD_U64"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"SQRI64"},
|
||||
{IS_1_ARG,0,IST_NULL,FALSE,FALSE,0,0,0,"SQRU64"},
|
||||
{IS_1_ARG,1,IST_NULL,TRUE,FALSE,0,0,0,"SQR"},
|
||||
{IS_1_ARG,1,IST_NULL,TRUE,FALSE,0,0,0,"ABS"},
|
||||
{IS_1_ARG,1,IST_NULL,TRUE,FALSE,0,0,0,"SQRT"},
|
||||
{IS_1_ARG,1,IST_NULL,TRUE,FALSE,0,0,0,"SIN"},
|
||||
{IS_1_ARG,1,IST_NULL,TRUE,FALSE,0,0,0,"COS"},
|
||||
{IS_1_ARG,1,IST_NULL,TRUE,FALSE,0,0,0,"TAN"},
|
||||
{IS_1_ARG,1,IST_NULL,TRUE,FALSE,0,0,0,"ATAN"},
|
||||
};
|
||||
|
||||
U0 ICClassPut(CHashClass *c)
|
||||
{
|
||||
I64 i;
|
||||
if (!c) return;
|
||||
if (c->ptr_stars_cnt>4) {
|
||||
PrintErr("put_class ptrcnt=%d\n",c->ptr_stars_cnt);
|
||||
while (TRUE)
|
||||
//TODO:
|
||||
Yield;
|
||||
}
|
||||
for (i=0;i<c->ptr_stars_cnt;i++)
|
||||
'*';
|
||||
c-=c->ptr_stars_cnt;
|
||||
if (c->str)
|
||||
"%s",c->str;
|
||||
else {
|
||||
PrintErr("put_class str=NULL\n");
|
||||
while (TRUE)
|
||||
//TODO:
|
||||
Yield;
|
||||
}
|
||||
'' CH_SPACE;
|
||||
}
|
||||
|
||||
U0 ICArgPut(CICArg *a)
|
||||
{
|
||||
if (a->type_pointed)
|
||||
"%Z %Z %Z ",
|
||||
a->type&RT_MASK,"ST_RAW_TYPES",
|
||||
a->type_pointed&RT_MASK,"ST_RAW_TYPES",
|
||||
a->type>>4,"ST_TY_TYPES";
|
||||
else
|
||||
"%Z %Z ",
|
||||
a->type&RT_MASK,"ST_RAW_TYPES",
|
||||
a->type>>4,"ST_TY_TYPES";
|
||||
switch (a->type>>4) {
|
||||
case TY_STK>>4:
|
||||
"STK";
|
||||
break;
|
||||
case TY_IMM>>4:
|
||||
"#%X",a->disp;
|
||||
break;
|
||||
case TY_REG>>4:
|
||||
"%Z",a->reg,"ST_U64_REGS";
|
||||
break;
|
||||
case TY_DISP>>4:
|
||||
"%X[%Z]",a->disp,a->reg,"ST_U64_REGS";
|
||||
break;
|
||||
case TY_RIP_DISP32>>4:
|
||||
"[%X]",a->disp;
|
||||
break;
|
||||
case TY_SIB>>4:
|
||||
if (a->disp)
|
||||
"%X",a->disp;
|
||||
if (a->reg==REG_RIP)
|
||||
'[';
|
||||
else
|
||||
"[%Z+",a->reg&15,"ST_U64_REGS";
|
||||
"%Z",a->reg>>8&15,"ST_U64_REGS";
|
||||
switch (a->reg>>14) {
|
||||
case 0: "]"; break;
|
||||
case 1: "*2]"; break;
|
||||
case 2: "*4]"; break;
|
||||
case 3: "*8]"; break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
U0 ICPut(CLex *lx,CIntermediateCode *tempi)
|
||||
{
|
||||
I64 opcode=tempi->ic_code,i;
|
||||
if (opcode>=IC_END_EXP && opcode!=IC_NOP2) {
|
||||
"%15ts %016X ",intermediate_code_table[opcode].name,tempi->ic_data;
|
||||
if (lx->pass) {
|
||||
if (tempi->r.type&TY_MASK) {
|
||||
ICArgPut(&tempi->r);
|
||||
"<-";
|
||||
}
|
||||
if (tempi->a1.type&TY_MASK)
|
||||
ICArgPut(&tempi->a1);
|
||||
',';
|
||||
if (tempi->a2.type&TY_MASK)
|
||||
ICArgPut(&tempi->a2);
|
||||
'' CH_SPACE;
|
||||
}
|
||||
ICClassPut(tempi->ic_class);
|
||||
if (tempi->ic_flags & ICF_LOCK)
|
||||
"$$BROWN$$lock$$FG$$ ";
|
||||
if (tempi->ic_flags & ICF_A2_TO_F64)
|
||||
"$$LTBLUE$$a2d$$FG$$ ";
|
||||
if (tempi->ic_flags & ICF_A2_TO_INT)
|
||||
"$$GREEN$$a2i$$FG$$ ";
|
||||
if (tempi->ic_flags & ICF_A1_TO_F64)
|
||||
"$$LTBLUE$$a1d$$FG$$ ";
|
||||
if (tempi->ic_flags & ICF_A1_TO_INT)
|
||||
"$$GREEN$$a1i$$FG$$ ";
|
||||
if (tempi->ic_flags & ICF_R_TO_F64)
|
||||
"$$LTBLUE$$rd$$FG$$ ";
|
||||
if (tempi->ic_flags & ICF_R_TO_INT)
|
||||
"$$GREEN$$ri$$FG$$ ";
|
||||
if (tempi->ic_flags & ICF_USE_F64)
|
||||
"[F64] ";
|
||||
if (tempi->ic_flags & ICF_USE_UNSIGNED)
|
||||
"[unsigned] ";
|
||||
if (tempi->ic_flags & ICF_USE_INT)
|
||||
"[int] ";
|
||||
if (tempi->ic_flags & ICF_NO_DEPEND_RESULT)
|
||||
"-DEP ";
|
||||
if (tempi->ic_flags & ICF_DEPEND_RESULT)
|
||||
"+DEP ";
|
||||
if (tempi->ic_flags & ICF_NOT_ADDR)
|
||||
"NOT_ADDR ";
|
||||
if (tempi->ic_flags & ICF_PUSH_RESULT)
|
||||
"PUSH ";
|
||||
if (tempi->ic_flags & ICF_PUSH_CMP)
|
||||
"PUSH_CMP ";
|
||||
if (tempi->ic_flags & ICF_POP_CMP)
|
||||
"POP_CMP ";
|
||||
if (tempi->ic_flags & ICF_DEL_PREVIOUS_INS)
|
||||
"DELPREV ";
|
||||
if (tempi->ic_flags & ICF_PREVIOUS_DELETED)
|
||||
"PREVDEL ";
|
||||
for (i=0;i<3;i++) {
|
||||
if (Bt(&tempi->ic_flags,ICf_DONT_PUSH_FLOAT0+i))
|
||||
"DONT_PUSH#%d ",i;
|
||||
if (Bt(&tempi->ic_flags,ICf_DONT_POP_FLOAT0+i))
|
||||
"DONT_POP#%d ",i;
|
||||
}
|
||||
if (tempi->ic_flags & ICF_ALTERNATE_TEMPLATE)
|
||||
"ALT_TEMP ";
|
||||
'\n';
|
||||
}
|
||||
}
|
||||
|
||||
U0 LCCQuePut(CLex *lx)
|
||||
{
|
||||
CIntermediateCode *tempi=lx->lcc.lcc_root.next;
|
||||
while (tempi->ic_code) {
|
||||
if (tempi->ic_flags&ICF_TRACE)
|
||||
ICPut(lx,tempi);
|
||||
tempi=tempi->next;
|
||||
}
|
||||
}
|
||||
|
||||
U0 LCCInit(CLex *lx)
|
||||
{
|
||||
CLexCodeCtrl *tempcbh=&lx->lcc;
|
||||
QueInit(&tempcbh->lcc_root.next);
|
||||
QueInit(&tempcbh->lcc_next_misc);
|
||||
tempcbh->lcc_root.ic_code=IC_END;
|
||||
}
|
||||
|
||||
CIntermediateCode *LCCAdd(CLex *lx,
|
||||
I64 opcode_and_precedence,I64 arg, CHashClass *c,I64 flags=0)
|
||||
{
|
||||
CIntermediateCode *tempi=MAlloc(sizeof(CIntermediateCode));
|
||||
tempi->ic_code=opcode_and_precedence.u16[0];
|
||||
tempi->ic_precedence=opcode_and_precedence.u16[1];
|
||||
tempi->ic_data=arg;
|
||||
tempi->ic_class=c;
|
||||
if (Bt(&lx->opts,OPTf_OPT_TRACE)) {
|
||||
Bts(&lx->flags,Lf_OPT_TRACE_PRESENT);
|
||||
flags|=ICF_TRACE;
|
||||
}
|
||||
if (lx->lock_cnt)
|
||||
flags|=ICF_LOCK;
|
||||
tempi->ic_flags=flags;
|
||||
tempi->ic_line=lx->last_line_num;
|
||||
QueIns(tempi,lx->lcc.lcc_root.last);
|
||||
return tempi;
|
||||
}
|
||||
|
||||
U0 LCCPush(CLex *lx)
|
||||
{
|
||||
CLexCodeCtrl *tempcbh=MAlloc(sizeof(CLexCodeCtrl));
|
||||
MemCpy(tempcbh,&lx->lcc,sizeof(CLexCodeCtrl));
|
||||
lx->lcc.lcc_next=tempcbh;
|
||||
}
|
||||
|
||||
CLex *LCCPopNoFree(CLex *lx)
|
||||
{
|
||||
CLexCodeCtrl *tempcbh=lx->lcc.lcc_next;
|
||||
MemCpy(&lx->lcc,tempcbh,sizeof(CLexCodeCtrl));
|
||||
return tempcbh;
|
||||
}
|
||||
|
||||
U0 LCCPop(CLex *lx)
|
||||
{
|
||||
Free(LCCPopNoFree(lx));
|
||||
}
|
||||
|
||||
U0 LCCAppend(CLex *lx, CLexCodeCtrl *tempcbh)
|
||||
{
|
||||
if (tempcbh->lcc_root.next!=&lx->lcc.lcc_root.next) {
|
||||
lx->lcc.lcc_root.last->next=tempcbh->lcc_root.next;
|
||||
tempcbh->lcc_root.next->last=lx->lcc.lcc_root.last;
|
||||
lx->lcc.lcc_root.last=tempcbh->lcc_root.last;
|
||||
tempcbh->lcc_root.last->next=&lx->lcc.lcc_root.next;
|
||||
}
|
||||
if (tempcbh->lcc_next_misc!=&lx->lcc.lcc_next_misc) {
|
||||
lx->lcc.lcc_last_misc->next=tempcbh->lcc_next_misc;
|
||||
tempcbh->lcc_next_misc->last=lx->lcc.lcc_last_misc;
|
||||
lx->lcc.lcc_last_misc=tempcbh->lcc_last_misc;
|
||||
tempcbh->lcc_last_misc->next=&lx->lcc.lcc_next_misc;
|
||||
}
|
||||
Free(tempcbh);
|
||||
}
|
||||
|
||||
CLexCodeMisc *LCCMiscNew(CLex *lx,I64 ty)
|
||||
{
|
||||
CLexCodeMisc *result=CAlloc(sizeof(CLexCodeMisc));
|
||||
result->addr=INVALID_PTR;
|
||||
result->type=ty;
|
||||
QueIns(result,lx->lcc.lcc_last_misc);
|
||||
return result;
|
||||
}
|
||||
|
||||
CLexCodeMisc *LCCGoToLabelFind(CLex *lx,U8 *name)
|
||||
{
|
||||
CLexCodeMisc *mc=lx->lcc.lcc_next_misc;
|
||||
while (mc!=&lx->lcc.lcc_next_misc) {
|
||||
if ((mc->type==CMT_GOTO_LABEL||mc->type==CMT_ASM_LABEL) &&
|
||||
!StrCmp(mc->str,name))
|
||||
return mc;
|
||||
mc=mc->next;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
I64 LCCFloatConstFind(CLex *lx,F64 d)
|
||||
{
|
||||
I64 i;
|
||||
CLexCodeMisc *mc=lx->lcc.lcc_next_misc;
|
||||
while (mc!=&lx->lcc.lcc_next_misc) {
|
||||
if (mc->type==CMT_FLOAT_CONSTS) {
|
||||
for (i=0;i<mc->num_consts;i++)
|
||||
if (mc->float_consts[i]==d)
|
||||
return mc->addr+i*sizeof(F64);
|
||||
if (mc->num_consts<CM_MAX_CONSTS) {
|
||||
mc->float_consts[mc->num_consts++]=d;
|
||||
return mc->addr+i*sizeof(F64);
|
||||
}
|
||||
}
|
||||
mc=mc->next;
|
||||
}
|
||||
mc=LCCMiscNew(lx,CMT_FLOAT_CONSTS);
|
||||
mc->float_consts=MAlloc(CM_MAX_CONSTS*sizeof(F64));
|
||||
mc->float_consts[mc->num_consts++]=d;
|
||||
return mc->addr;
|
||||
}
|
||||
|
||||
U0 LCCDel(CLex *lx,CLexCodeCtrl *lcc)
|
||||
{
|
||||
CLexCodeMisc *mc,*mc1;
|
||||
U8 *undef=NULL;
|
||||
QueDel(&lcc->lcc_root.next);
|
||||
mc=lcc->lcc_next_misc;
|
||||
while (mc!=&lcc->lcc_next_misc) {
|
||||
mc1=mc->next;
|
||||
switch (mc->type) {
|
||||
case CMT_GOTO_LABEL:
|
||||
case CMT_ASM_LABEL:
|
||||
if (!(mc->flags&CMF_DEFINED)) {
|
||||
undef=mc->str;
|
||||
mc->str=NULL;
|
||||
} else if (!mc->use_cnt) {
|
||||
PrintWarn("Unused label %s\n",mc->str);
|
||||
LexWarn(lx,"Unused label at ");
|
||||
}
|
||||
break;
|
||||
case CMT_JMP_TABLE:
|
||||
Free(mc->jmp_table);
|
||||
break;
|
||||
case CMT_FLOAT_CONSTS:
|
||||
Free(mc->float_consts);
|
||||
break;
|
||||
case CMT_ARRAY_DIM:
|
||||
LinkedLstDel(mc->dim);
|
||||
break;
|
||||
case CMT_HASH_ENTRY:
|
||||
HashDel(mc->h);
|
||||
break;
|
||||
}
|
||||
Free(mc->str);
|
||||
Free(mc);
|
||||
mc=mc1;
|
||||
}
|
||||
if (undef) {
|
||||
PrintErr("Undefined goto label %s\n",undef);
|
||||
Free(undef);
|
||||
LexExcept(lx,"Undefined goto label at ");
|
||||
}
|
||||
}
|
||||
|
||||
U0 LCCHeaderPut(CLex *lx,I64 pass,Bool put)
|
||||
{
|
||||
if (Bt(&lx->flags,Lf_OPT_TRACE_PRESENT)) {
|
||||
if (put) {
|
||||
if (Bt(&lx->otrace_mask,pass-1)) {
|
||||
"$$IV,1$$Pass %d:$$IV,0$$\n",pass-1;
|
||||
LCCQuePut(lx);
|
||||
}
|
||||
} else if (Bt(&lx->otrace_mask,pass))
|
||||
"$$IV,1$$Pass %d:$$IV,0$$\n",pass;
|
||||
}
|
||||
lx->pass=pass;
|
||||
}
|
||||
|
||||
U8 *LCCCompile(CLex *lx,I64 *_code_size,CDbgInfo **_dbg,I64 *_type)
|
||||
{
|
||||
U8 *result;
|
||||
CLexCodeMisc *lb;
|
||||
I64 i,code_size,last_code_size;
|
||||
|
||||
COptReg reg_offsets[NUM_REGS];
|
||||
if (_dbg) *_dbg=NULL;
|
||||
lx->pass=0;
|
||||
LCCHeaderPut(lx,1,TRUE);
|
||||
OptPass012(lx);
|
||||
LCCHeaderPut(lx,2,TRUE);
|
||||
OptPass012(lx);
|
||||
LCCHeaderPut(lx,3,TRUE);
|
||||
OptPass3(lx,reg_offsets);
|
||||
LCCHeaderPut(lx,4,TRUE);
|
||||
OptPass4(lx,reg_offsets,_type);
|
||||
LCCHeaderPut(lx,5,TRUE);
|
||||
OptPass5(lx);
|
||||
LCCHeaderPut(lx,6,TRUE);
|
||||
OptPass6(lx);
|
||||
LCCHeaderPut(lx,7,TRUE);
|
||||
|
||||
lb=lx->lcc.lcc_next_misc;
|
||||
while (lb!=&lx->lcc.lcc_next_misc) {
|
||||
if (lb->type==CMT_JMP_TABLE) {
|
||||
for (i=0;i<lb->range;i++)
|
||||
lb->jmp_table[i]=OptLabelFwd(lb->jmp_table[i]);
|
||||
lb->dft=OptLabelFwd(lb->dft);
|
||||
}
|
||||
lb=lb->next;
|
||||
}
|
||||
|
||||
LCCHeaderPut(lx,7,FALSE);
|
||||
OptPass789A(lx,reg_offsets,NULL,NULL);
|
||||
LCCHeaderPut(lx,8,FALSE);
|
||||
OptPass789A(lx,reg_offsets,NULL,NULL);
|
||||
LCCHeaderPut(lx,9,FALSE);
|
||||
code_size=OptPass789A(lx,reg_offsets,NULL,NULL);
|
||||
do {
|
||||
last_code_size=code_size;
|
||||
LCCHeaderPut(lx,9,FALSE);
|
||||
code_size=OptPass789A(lx,reg_offsets,NULL,NULL);
|
||||
if (code_size>last_code_size) {
|
||||
"Pass:9 Code Size\n";
|
||||
LexExcept(lx,"Compiler Optimization Error at ");
|
||||
}
|
||||
} while (code_size<last_code_size);
|
||||
|
||||
if (lx->flags&LF_AOT_COMPILE)
|
||||
result=MAlloc(code_size);
|
||||
else
|
||||
result=MAlloc(code_size,Fs->code_heap);
|
||||
LCCHeaderPut(lx,10,FALSE);
|
||||
code_size=OptPass789A(lx,reg_offsets,result,_dbg);
|
||||
|
||||
LCCDel(lx,&lx->lcc);
|
||||
if (Bt(&lx->opts,OPTf_COMPILE_TRACE)) {
|
||||
if (lx->flags&LF_AOT_COMPILE) {
|
||||
if (lx->a->seg_size==16)
|
||||
Un(result,code_size,16);
|
||||
else if (lx->a->seg_size==64)
|
||||
Un(result,code_size,64);
|
||||
else
|
||||
Un(result,code_size,32);
|
||||
} else
|
||||
Un(result,code_size,64);
|
||||
}
|
||||
if (_code_size) *_code_size=code_size;
|
||||
return result;
|
||||
}
|
||||
Binary file not shown.
+448
-457
@@ -1,460 +1,451 @@
|
||||
$LK,"AsmGlblsResolve ",A="FL:D:/Compiler/Assembler.CPP.Z,284",BI=1$0000007F30 0001 0000000404 Funct Export Res
|
||||
$LK,"AsmHashLoad ",A="FL:D:/Compiler/CmpInit.CPP.Z,68",BI=2$000002939A 0001 00000005BF Funct Export Res
|
||||
$LK,"AsmLexExpression ",A="FL:D:/Compiler/Assembler.CPP.Z,189",BI=3$0000007B08 0004 00000000B7 Funct Export Res
|
||||
$LK,"AsmLineLst ",A="FL:D:/Compiler/Assembler.CPP.Z,31",BI=4$0000007570 0001 0000000148 Funct Export Res
|
||||
$LK,"AsmLocalsResolve ",A="FL:D:/Compiler/Assembler.CPP.Z,250",BI=5$0000007E08 0003 0000000127 Funct Export Res
|
||||
$LK,"AsmMakeArgMask ",A="FL:D:/Compiler/Assembler.CPP.Z,569",BI=6$0000008898 0002 0000000444 Funct Export Res
|
||||
$LK,"AsmPrsInsFlags ",A="FL:D:/Compiler/CmpInit.CPP.Z,18",BI=7$000002915A 0001 000000023B Funct Export Res
|
||||
$LK,"AsmResolve ",A="FL:D:/Compiler/Assembler.CPP.Z,209",BI=8$0000007BC0 0002 0000000245 Funct Export Res
|
||||
$LK,"AsmStoreCodeU32 ",A="FL:D:/Compiler/Assembler.CPP.Z,90",BI=9$00000077C0 0001 0000000145 Funct Export Res
|
||||
$LK,"AsmStoreCodeU64 ",A="FL:D:/Compiler/Assembler.CPP.Z,129",BI=10$0000007908 0005 0000000146 Funct Export Res
|
||||
$LK,"AsmStoreCodeU8 ",A="FL:D:/Compiler/Assembler.CPP.Z,61",BI=11$00000076B8 001D 0000000103 Funct Export Res
|
||||
$LK,"AsmStoreCodeU8At ",A="FL:D:/Compiler/Assembler.CPP.Z,168",BI=12$0000007A50 0007 00000000B7 Funct Export Res
|
||||
$LK,"AsmStoreNum ",A="FL:D:/Compiler/Assembler.CPP.Z,663",BI=13$0000008CE0 0004 00000004A6 Funct Export Res
|
||||
$LK,"AsmUnresolvedAdd ",A="FL:D:/Compiler/Assembler.CPP.Z,1",BI=14$0000007460 0004 000000010C Funct Export Res
|
||||
$LK,"CInternalType ",A="FL:D:/Compiler/CmpInit.CPP.Z,3"$003FD4FE40 0002 000000000A Class
|
||||
$LK,"CMP_TEMPLATES ",A="FL:D:/Compiler/CmpAsm.CPP.Z,5"$0000000000 0001 ExportSysSym Export
|
||||
$LK,"CMP_TEMPLATES_DONT_POP",A="FL:D:/Compiler/CmpAsm.CPP.Z,179"$000000018B 0001 ExportSysSym Export
|
||||
$LK,"CMP_TEMPLATES_DONT_PUSH",A="FL:D:/Compiler/CmpAsm.CPP.Z,268"$0000000257 0001 ExportSysSym Export
|
||||
$LK,"CMP_TEMPLATES_DONT_PUSH2",A="FL:D:/Compiler/CmpAsm.CPP.Z,459"$0000000421 0001 ExportSysSym Export
|
||||
$LK,"CMP_TEMPLATES_DONT_PUSH_POP",A="FL:D:/Compiler/CmpAsm.CPP.Z,395"$0000000391 0001 ExportSysSym Export
|
||||
$LK,"CN_A1 ",A="FL:D:/Compiler/BackF1a.CPP.Z,2"$1 0006 0000000008 DefineStr
|
||||
$LK,"CN_A2 ",A="FL:D:/Compiler/BackF1a.CPP.Z,1"$0 0005 0000000008 DefineStr
|
||||
$LK,"CN_MAIN ",A="FL:D:/Compiler/BackF1a.CPP.Z,3"$2 0022 0000000008 DefineStr
|
||||
$LK,"CN_R ",A="FL:D:/Compiler/BackF1a.CPP.Z,4"$3 0003 0000000008 DefineStr
|
||||
$LK,"COptMemberVar ",A="FL:D:/Compiler/OptLib.CPP.Z,570"$003FC79988 0005 0000000028 Class
|
||||
$LK,"CSubSwitch ",A="FL:D:/Compiler/StmtParser.CPP.Z,1342"$003FC769B0 0004 0000000020 Class
|
||||
$LK,"CSwitchCase ",A="FL:D:/Compiler/StmtParser.CPP.Z,1347"$003FD576B8 0004 0000000020 Class
|
||||
$LK,"CTrace ",A="FL:D:/Compiler/ICLCC.CPP.Z,33",BI=15$0000002898 0000 0000000017 Funct Export Res
|
||||
$LK,"CVI2 ",A="FL:D:/Compiler/StmtParser.CPP.Z,175"$003FC76C90 0003 0000000010 Class
|
||||
$LK,"Cmp ",A="FL:D:/Compiler/CmpMain.CPP.Z,455",BI=16$000002BF32 0000 000000059C Funct Export Res
|
||||
$LK,"CmpBuf ",A="FL:D:/Compiler/CmpMain.CPP.Z,170",BI=17$000002B5FA 0001 00000000B6 Funct Export Res
|
||||
$LK,"CmpF1PushPop ",A="FL:D:/Compiler/OptLib.CPP.Z,553",BI=18$000000BCE6 0002 0000000031 Funct Export Res
|
||||
$LK,"CmpF2PushPop ",A="FL:D:/Compiler/OptLib.CPP.Z,559",BI=19$000000BD1E 0005 0000000074 Funct Export Res
|
||||
$LK,"CmpFillTables ",A="FL:D:/Compiler/CmpInit.CPP.Z,444",BI=20$000002A872 0001 000000051A Funct Export Res
|
||||
$LK,"CmpFixUpAOTAsm ",A="FL:D:/Compiler/CmpMain.CPP.Z,314",BI=21$000002BB42 0000 00000003EA Funct Export Res
|
||||
$LK,"CmpFixUpJITAsm ",A="FL:D:/Compiler/CmpMain.CPP.Z,187",BI=22$000002B6B2 0000 000000048F Funct Export Res
|
||||
$LK,"CmpInit ",A="FL:D:/Compiler/CmpMain.CPP.Z,718",BI=23$000002C9DA 0001 0000000081 Funct Export Res
|
||||
$LK,"CmpJoin ",A="FL:D:/Compiler/CmpMain.CPP.Z,48",BI=24$000002AF72 0001 0000000682 Funct Export Res
|
||||
$LK,"CmpLoadDefines ",A="FL:D:/Compiler/CmpInit.CPP.Z,204",BI=25$000002995A 0001 0000000F18 Funct Export Res
|
||||
$LK,"CmpNoteFloatOp ",A="FL:D:/Compiler/BackF1a.CPP.Z,6",BI=26$000001B3EE 000E 000000020D Funct Export Res
|
||||
$LK,"CmpOffset2Reg ",A="FL:D:/Compiler/OptLib.CPP.Z,83",BI=27$000000B09E 0005 0000000046 Funct Export Res
|
||||
$LK,"CmpPrompt ",A="FL:D:/Compiler/Lex.CPP.Z,1",BI=28$00000038D8 0001 00000001B5 Funct Export Res
|
||||
$LK,"CmpRawType ",A="FL:D:/Compiler/OptLib.CPP.Z,533",BI=29$000000BC86 0006 0000000025 Funct Export Res
|
||||
$LK,"CmpRawTypePointed ",A="FL:D:/Compiler/OptLib.CPP.Z,542",BI=30$000000BCAE 0005 0000000033 Funct Export Res
|
||||
$LK,"CmpSetFloatOpPushPop",A="FL:D:/Compiler/BackF1a.CPP.Z,57",BI=31$000001B5FE 000C 0000000075 Funct Export Res
|
||||
$LK,"Echo ",A="FL:D:/Compiler/ICLCC.CPP.Z,38",BI=32$00000028B0 0000 0000000017 Funct Export Res
|
||||
$LK,"ExeFile ",A="FL:D:/Compiler/CmpMain.CPP.Z,650",BI=33$000002C6D2 0000 000000007B Funct Export Res
|
||||
$LK,"ExeFile2 ",A="FL:D:/Compiler/CmpMain.CPP.Z,689",BI=34$000002C86A 0000 0000000079 Funct Export Res
|
||||
$LK,"ExePrint ",A="FL:D:/Compiler/CmpMain.CPP.Z,641",BI=35$000002C682 0000 0000000049 Funct Export Res
|
||||
$LK,"ExePrint2 ",A="FL:D:/Compiler/CmpMain.CPP.Z,680",BI=36$000002C822 0000 0000000047 Funct Export Res
|
||||
$LK,"ExePutS ",A="FL:D:/Compiler/CmpMain.CPP.Z,606",BI=37$000002C4D2 0003 00000001A9 Funct Export Res
|
||||
$LK,"ExePutS2 ",A="FL:D:/Compiler/CmpMain.CPP.Z,661",BI=38$000002C752 0002 00000000CC Funct Export Res
|
||||
$LK,"FBO1_F64 ",A="FL:D:/Compiler/OptLib.CPP.Z,94"$2 0002 0000000008 DefineStr
|
||||
$LK,"FBO1_INT ",A="FL:D:/Compiler/OptLib.CPP.Z,93"$1 0013 0000000008 DefineStr
|
||||
$LK,"FBO1_NOT_CONST ",A="FL:D:/Compiler/OptLib.CPP.Z,92"$0 0004 0000000008 DefineStr
|
||||
$LK,"GetOpt ",A="FL:D:/Compiler/ICLCC.CPP.Z,16",BI=39$0000002810 0004 000000002C Funct Export Res
|
||||
$LK,"HashEntrySize ",A="FL:D:/Compiler/Hash1b.CPP.Z,1",BI=40$0000007158 0000 0000000103 Funct Export Res
|
||||
$LK,"HashEntrySize2 ",A="FL:D:/Compiler/Hash1b.CPP.Z,32",BI=41$0000007260 0002 00000001A4 Funct Export Res
|
||||
$LK,"HashTableSize2 ",A="FL:D:/Compiler/Hash1b.CPP.Z,69",BI=42$0000007408 0000 0000000054 Funct Export Res
|
||||
$LK,"ICAddEct ",A="FL:D:/Compiler/Back1a.CPP.Z,1",BI=43$000001F056 0005 00000002F3 Funct Export Res
|
||||
$LK,"ICAddRSP ",A="FL:D:/Compiler/BackLib.CPP.Z,69",BI=44$0000019D86 0017 00000002A7 Funct Export Res
|
||||
$LK,"ICAddSubEctEqual ",A="FL:D:/Compiler/Back1a.CPP.Z,505",BI=45$000002095E 0005 0000000673 Funct Export Res
|
||||
$LK,"ICAddSubEctImm ",A="FL:D:/Compiler/Back1a.CPP.Z,57",BI=46$000001F34E 000D 0000000685 Funct Export Res
|
||||
$LK,"ICAndAnd ",A="FL:D:/Compiler/Back1b.CPP.Z,30",BI=47$00000215FE 0001 000000014B Funct Export Res
|
||||
$LK,"ICAndBranch ",A="FL:D:/Compiler/Back1c.CPP.Z,1",BI=48$0000023896 0002 00000006E6 Funct Export Res
|
||||
$LK,"ICAndEqual ",A="FL:D:/Compiler/Back1c.CPP.Z,675",BI=49$0000025776 0001 000000010D Funct Export Res
|
||||
$LK,"ICArgPut ",A="FL:D:/Compiler/ICLCC.CPP.Z,73",BI=50$00000029D0 0003 00000002D6 Funct Export Res
|
||||
$LK,"ICAssign ",A="FL:D:/Compiler/Back1c.CPP.Z,159",BI=51$0000023F7E 0001 0000000301 Funct Export Res
|
||||
$LK,"ICAssignPostIncDec ",A="FL:D:/Compiler/Back1b.CPP.Z,534",BI=52$0000022C56 0002 0000000210 Funct Export Res
|
||||
$LK,"ICBitOps ",A="FL:D:/Compiler/Back1b.CPP.Z,244",BI=53$0000021EF6 0007 00000004F1 Funct Export Res
|
||||
$LK,"ICBrBitOps ",A="FL:D:/Compiler/Back1c.CPP.Z,207",BI=54$0000024286 0008 00000009FB Funct Export Res
|
||||
$LK,"ICBuiltInFloatConst ",A="FL:D:/Compiler/BackLib.CPP.Z,420",BI=55$000001A8C6 000F 00000000BD Funct Export Res
|
||||
$LK,"ICClassPut ",A="FL:D:/Compiler/ICLCC.CPP.Z,49",BI=56$00000028F8 0001 00000000D3 Funct Export Res
|
||||
$LK,"ICCmp ",A="FL:D:/Compiler/Back1b.CPP.Z,124",BI=57$0000021A0E 0006 00000004E6 Funct Export Res
|
||||
$LK,"ICCmpAndBranch ",A="FL:D:/Compiler/Back1b.CPP.Z,575",BI=58$0000022E66 000C 0000000737 Funct Export Res
|
||||
$LK,"ICCopyTemplate ",A="FL:D:/Compiler/BackF1a.CPP.Z,69",BI=59$000001B676 0013 000000021D Funct Export Res
|
||||
$LK,"ICDeref ",A="FL:D:/Compiler/BackLib.CPP.Z,656",BI=60$000001B32E 0001 00000000B9 Funct Export Res
|
||||
$LK,"ICDerefPostIncDec ",A="FL:D:/Compiler/Back1b.CPP.Z,491",BI=61$0000022A5E 0002 00000001F1 Funct Export Res
|
||||
$LK,"ICDiv ",A="FL:D:/Compiler/Back1a.CPP.Z,413",BI=62$000002048E 0001 00000000F1 Funct Export Res
|
||||
$LK,"ICDivEqual ",A="FL:D:/Compiler/Back1a.CPP.Z,432",BI=63$0000020586 0002 00000002DE Funct Export Res
|
||||
$LK,"ICFAdd ",A="FL:D:/Compiler/BackF1b.CPP.Z,633",BI=64$000001EA16 0001 00000001FF Funct Export Res
|
||||
$LK,"ICFCmp ",A="FL:D:/Compiler/BackF1a.CPP.Z,549",BI=65$000001C9EE 0004 000000018B Funct Export Res
|
||||
$LK,"ICFCmpAndBranch ",A="FL:D:/Compiler/BackF1b.CPP.Z,325",BI=66$000001DE4E 0004 00000009F7 Funct Export Res
|
||||
$LK,"ICFCvt ",A="FL:D:/Compiler/BackF1a.CPP.Z,115",BI=67$000001B896 000C 000000017F Funct Export Res
|
||||
$LK,"ICFCvt2 ",A="FL:D:/Compiler/BackF1a.CPP.Z,163",BI=68$000001BA16 0010 0000000116 Funct Export Res
|
||||
$LK,"ICFDiv ",A="FL:D:/Compiler/BackF1b.CPP.Z,621",BI=69$000001E966 0001 00000000A9 Funct Export Res
|
||||
$LK,"ICFMod ",A="FL:D:/Compiler/BackF1a.CPP.Z,241",BI=70$000001BD0E 0001 0000000145 Funct Export Res
|
||||
$LK,"ICFModEqual ",A="FL:D:/Compiler/BackF1a.CPP.Z,589",BI=71$000001CB7E 0001 00000003D7 Funct Export Res
|
||||
$LK,"ICFMul ",A="FL:D:/Compiler/BackF1b.CPP.Z,603",BI=72$000001E846 0001 000000011B Funct Export Res
|
||||
$LK,"ICFOp ",A="FL:D:/Compiler/BackF1a.CPP.Z,350",BI=73$000001C14E 0004 000000089D Funct Export Res
|
||||
$LK,"ICFOpEqual ",A="FL:D:/Compiler/BackF1b.CPP.Z,1",BI=74$000001CF56 0004 0000000EF7 Funct Export Res
|
||||
$LK,"ICFPostIncDec ",A="FL:D:/Compiler/BackF1b.CPP.Z,716",BI=75$000001EE4E 0002 0000000151 Funct Export Res
|
||||
$LK,"ICFPow ",A="FL:D:/Compiler/BackF1a.CPP.Z,271",BI=76$000001BE56 0001 00000002F7 Funct Export Res
|
||||
$LK,"ICFPreIncDec ",A="FL:D:/Compiler/BackF1b.CPP.Z,694",BI=77$000001ED3E 0002 000000010A Funct Export Res
|
||||
$LK,"ICFSub ",A="FL:D:/Compiler/BackF1b.CPP.Z,671",BI=78$000001EC16 0001 0000000124 Funct Export Res
|
||||
$LK,"ICFTemplateFun ",A="FL:D:/Compiler/BackF1b.CPP.Z,744",BI=79$000001EFA6 0007 00000000AA Funct Export Res
|
||||
$LK,"ICFUnaryMinus ",A="FL:D:/Compiler/BackF1a.CPP.Z,190",BI=80$000001BB2E 0001 00000001E0 Funct Export Res
|
||||
$LK,"ICFlagBranch ",A="FL:D:/Compiler/Back1b.CPP.Z,803",BI=81$000002378E 0004 0000000106 Funct Export Res
|
||||
$LK,"ICLastIns ",A="FL:D:/Compiler/BackLib.CPP.Z,59",BI=82$0000019D46 0002 0000000040 Funct Export Res
|
||||
$LK,"ICLea ",A="FL:D:/Compiler/BackLib.CPP.Z,622",BI=83$000001B17E 0004 00000001AA Funct Export Res
|
||||
$LK,"ICLocalVarInit ",A="FL:D:/Compiler/Back1c.CPP.Z,908",BI=84$0000026196 0001 0000000078 Funct Export Res
|
||||
$LK,"ICMinMax ",A="FL:D:/Compiler/Back1c.CPP.Z,496",BI=85$000002504E 0004 00000002AB Funct Export Res
|
||||
$LK,"ICMod ",A="FL:D:/Compiler/Back1a.CPP.Z,486",BI=86$0000020866 0001 00000000F1 Funct Export Res
|
||||
$LK,"ICModU64 ",A="FL:D:/Compiler/Back1c.CPP.Z,575",BI=87$000002534E 0001 00000001B7 Funct Export Res
|
||||
$LK,"ICModr1 ",A="FL:D:/Compiler/BackLib.CPP.Z,140",BI=88$000001A02E 0017 00000002FE Funct Export Res
|
||||
$LK,"ICModr2 ",A="FL:D:/Compiler/BackLib.CPP.Z,230",BI=89$000001A32E 0016 00000000A6 Funct Export Res
|
||||
$LK,"ICMov ",A="FL:D:/Compiler/BackLib.CPP.Z,442",BI=90$000001A986 019A 00000007F4 Funct Export Res
|
||||
$LK,"ICMul ",A="FL:D:/Compiler/Back1a.CPP.Z,289",BI=91$000001FDCE 0001 00000002B8 Funct Export Res
|
||||
$LK,"ICMulEqual ",A="FL:D:/Compiler/Back1a.CPP.Z,346",BI=92$0000020086 0001 0000000406 Funct Export Res
|
||||
$LK,"ICNot ",A="FL:D:/Compiler/Back1b.CPP.Z,10",BI=93$00000214FE 0001 00000000FF Funct Export Res
|
||||
$LK,"ICOpSizeRex ",A="FL:D:/Compiler/BackLib.CPP.Z,28",BI=94$0000019C5E 0006 0000000040 Funct Export Res
|
||||
$LK,"ICOrEqual ",A="FL:D:/Compiler/Back1c.CPP.Z,698",BI=95$0000025886 0001 000000010D Funct Export Res
|
||||
$LK,"ICOrOr ",A="FL:D:/Compiler/Back1b.CPP.Z,59",BI=96$000002174E 0001 0000000162 Funct Export Res
|
||||
$LK,"ICPop ",A="FL:D:/Compiler/BackLib.CPP.Z,361",BI=97$000001A6CE 0009 00000000EA Funct Export Res
|
||||
$LK,"ICPopRegs ",A="FL:D:/Compiler/BackLib.CPP.Z,388",BI=98$000001A7BE 000C 0000000057 Funct Export Res
|
||||
$LK,"ICPostIncDec ",A="FL:D:/Compiler/Back1b.CPP.Z,451",BI=99$000002285E 0002 00000001FF Funct Export Res
|
||||
$LK,"ICPreIncDec ",A="FL:D:/Compiler/Back1b.CPP.Z,415",BI=100$000002267E 0004 00000001DB Funct Export Res
|
||||
$LK,"ICPreempt ",A="FL:D:/Compiler/Back1b.CPP.Z,348",BI=101$00000223EE 0001 0000000122 Funct Export Res
|
||||
$LK,"ICPush ",A="FL:D:/Compiler/BackLib.CPP.Z,310",BI=102$000001A51E 001F 0000000152 Funct Export Res
|
||||
$LK,"ICPushRegs ",A="FL:D:/Compiler/BackLib.CPP.Z,348",BI=103$000001A676 0006 0000000054 Funct Export Res
|
||||
$LK,"ICPut ",A="FL:D:/Compiler/ICLCC.CPP.Z,118",BI=104$0000002CA8 0008 00000003B2 Funct Export Res
|
||||
$LK,"ICQueInit ",A="FL:D:/Compiler/Back1c.CPP.Z,384",BI=105$0000024C86 0001 0000000070 Funct Export Res
|
||||
$LK,"ICQueIns ",A="FL:D:/Compiler/Back1c.CPP.Z,398",BI=106$0000024CF6 0001 0000000162 Funct Export Res
|
||||
$LK,"ICQueInsRev ",A="FL:D:/Compiler/Back1c.CPP.Z,439",BI=107$0000024E5E 0001 0000000162 Funct Export Res
|
||||
$LK,"ICQueRem ",A="FL:D:/Compiler/Back1c.CPP.Z,480",BI=108$0000024FC6 0001 0000000088 Funct Export Res
|
||||
$LK,"ICRex ",A="FL:D:/Compiler/BackLib.CPP.Z,22",BI=109$0000019C2E 0016 000000002D Funct Export Res
|
||||
$LK,"ICShift ",A="FL:D:/Compiler/Back1a.CPP.Z,643",BI=110$0000020FD6 0004 00000001A3 Funct Export Res
|
||||
$LK,"ICShiftEqual ",A="FL:D:/Compiler/Back1a.CPP.Z,676",BI=111$000002117E 0002 000000030E Funct Export Res
|
||||
$LK,"ICSlashOp ",A="FL:D:/Compiler/BackLib.CPP.Z,282",BI=112$000001A3D6 0027 0000000145 Funct Export Res
|
||||
$LK,"ICSqr ",A="FL:D:/Compiler/Back1c.CPP.Z,568",BI=113$00000252FE 0002 000000004A Funct Export Res
|
||||
$LK,"ICSub ",A="FL:D:/Compiler/Back1a.CPP.Z,211",BI=114$000001F9D6 0001 00000003F5 Funct Export Res
|
||||
$LK,"ICSwap ",A="FL:D:/Compiler/Back1c.CPP.Z,617",BI=115$0000025506 0001 000000026E Funct Export Res
|
||||
$LK,"ICSwitch ",A="FL:D:/Compiler/Back1c.CPP.Z,744",BI=116$0000025A9E 0002 00000006F2 Funct Export Res
|
||||
$LK,"ICTest ",A="FL:D:/Compiler/BackLib.CPP.Z,410",BI=117$000001A876 000C 000000004E Funct Export Res
|
||||
$LK,"ICTestAndBranch ",A="FL:D:/Compiler/Back1b.CPP.Z,755",BI=118$000002359E 0002 00000001EC Funct Export Res
|
||||
$LK,"ICToBool ",A="FL:D:/Compiler/Back1b.CPP.Z,400",BI=119$0000022606 0001 0000000075 Funct Export Res
|
||||
$LK,"ICToF64 ",A="FL:D:/Compiler/Back1b.CPP.Z,395",BI=120$00000225C6 0001 000000003D Funct Export Res
|
||||
$LK,"ICToI64 ",A="FL:D:/Compiler/Back1b.CPP.Z,390",BI=121$0000022586 0001 000000003D Funct Export Res
|
||||
$LK,"ICToUpper ",A="FL:D:/Compiler/Back1b.CPP.Z,379",BI=122$0000022516 0001 000000006B Funct Export Res
|
||||
$LK,"ICU16 ",A="FL:D:/Compiler/BackLib.CPP.Z,35",BI=123$0000019C9E 0092 0000000029 Funct Export Res
|
||||
$LK,"ICU24 ",A="FL:D:/Compiler/BackLib.CPP.Z,41",BI=124$0000019CCE 0063 0000000026 Funct Export Res
|
||||
$LK,"ICU32 ",A="FL:D:/Compiler/BackLib.CPP.Z,47",BI=125$0000019CF6 0054 0000000026 Funct Export Res
|
||||
$LK,"ICU64 ",A="FL:D:/Compiler/BackLib.CPP.Z,53",BI=126$0000019D1E 0009 0000000028 Funct Export Res
|
||||
$LK,"ICU8 ",A="FL:D:/Compiler/BackLib.CPP.Z,17",BI=127$0000019C06 0063 0000000028 Funct Export Res
|
||||
$LK,"ICUnaries ",A="FL:D:/Compiler/Back1b.CPP.Z,1",BI=128$000002148E 0002 0000000069 Funct Export Res
|
||||
$LK,"ICXorEqual ",A="FL:D:/Compiler/Back1c.CPP.Z,721",BI=129$0000025996 0001 0000000107 Funct Export Res
|
||||
$LK,"ICXorXor ",A="FL:D:/Compiler/Back1b.CPP.Z,91",BI=130$00000218B6 0001 0000000155 Funct Export Res
|
||||
$LK,"ICZero ",A="FL:D:/Compiler/BackLib.CPP.Z,401",BI=131$000001A816 0017 000000005E Funct Export Res
|
||||
$LK,"IncludeDepth ",A="FL:D:/Compiler/ICLCC.CPP.Z,43",BI=132$00000028C8 0000 0000000030 Funct Export Res
|
||||
$LK,"InstEntriesCompare ",A="FL:D:/Compiler/Unassembler.CPP.Z,1",BI=133$0000000738 0001 00000002A9 Funct Export Res
|
||||
$LK,"InstEntryFind ",A="FL:D:/Compiler/Unassembler.CPP.Z,72",BI=134$00000009E8 0002 00000003C9 Funct Export Res
|
||||
$LK,"IsLexExpression2Bin ",A="FL:D:/Compiler/ExpParser.CPP.Z,1153",BI=135$000000ECAE 0000 0000000029 Funct Export Res
|
||||
$LK,"LCCAdd ",A="FL:D:/Compiler/ICLCC.CPP.Z,200",BI=136$00000030D8 00A9 000000009F Funct Export Res
|
||||
$LK,"LCCAppend ",A="FL:D:/Compiler/ICLCC.CPP.Z,239",BI=137$0000003200 0003 00000000A6 Funct Export Res
|
||||
$LK,"LCCCompile ",A="FL:D:/Compiler/ICLCC.CPP.Z,356",BI=138$0000003630 0006 00000002A7 Funct Export Res
|
||||
$LK,"LCCDel ",A="FL:D:/Compiler/ICLCC.CPP.Z,299",BI=139$0000003420 0001 0000000164 Funct Export Res
|
||||
$LK,"LCCFloatConstFind ",A="FL:D:/Compiler/ICLCC.CPP.Z,277",BI=140$0000003358 000F 00000000C6 Funct Export Res
|
||||
$LK,"LCCGoToLabelFind ",A="FL:D:/Compiler/ICLCC.CPP.Z,265",BI=141$0000003300 0005 0000000057 Funct Export Res
|
||||
$LK,"LCCHeaderPut ",A="FL:D:/Compiler/ICLCC.CPP.Z,342",BI=142$0000003588 000B 00000000A2 Funct Export Res
|
||||
$LK,"LCCInit ",A="FL:D:/Compiler/ICLCC.CPP.Z,192",BI=143$0000003098 000A 000000003A Funct Export Res
|
||||
$LK,"LCCMiscNew ",A="FL:D:/Compiler/ICLCC.CPP.Z,256",BI=144$00000032A8 0021 0000000055 Funct Export Res
|
||||
$LK,"LCCPop ",A="FL:D:/Compiler/ICLCC.CPP.Z,234",BI=145$00000031E0 0008 000000001A Funct Export Res
|
||||
$LK,"LCCPopNoFree ",A="FL:D:/Compiler/ICLCC.CPP.Z,227",BI=146$00000031B0 0003 000000002E Funct Export Res
|
||||
$LK,"LCCPush ",A="FL:D:/Compiler/ICLCC.CPP.Z,220",BI=147$0000003178 000E 0000000037 Funct Export Res
|
||||
$LK,"LCCQuePut ",A="FL:D:/Compiler/ICLCC.CPP.Z,182",BI=148$0000003060 0001 0000000037 Funct Export Res
|
||||
$LK,"Lex ",A="FL:D:/Compiler/Lex.CPP.Z,725",BI=149$00000054C8 00ED 0000001881 Funct Export Res
|
||||
$LK,"LexAttachDoc ",A="FL:D:/Compiler/Lex.CPP.Z,393",BI=150$0000004A70 0001 0000000163 Funct Export Res
|
||||
$LK,"LexBackupLastChar ",A="FL:D:/Compiler/Lex.CPP.Z,131",BI=151$0000003E4C 0003 0000000041 Funct Export Res
|
||||
$LK,"LexD2I32 ",A="FL:D:/Compiler/ExpParser.CPP.Z,1198",BI=152$000000EDCE 0000 00000000A6 Funct Export Res
|
||||
$LK,"LexD3I32 ",A="FL:D:/Compiler/ExpParser.CPP.Z,1214",BI=153$000000EE76 0000 00000000D9 Funct Export Res
|
||||
$LK,"LexDel ",A="FL:D:/Compiler/Lex.CPP.Z,66",BI=154$0000003BD0 0004 00000000A5 Funct Export Res
|
||||
$LK,"LexDocRead ",A="FL:D:/Compiler/Lex.CPP.Z,372",BI=155$00000049DC 0001 0000000087 Funct Export Res
|
||||
$LK,"LexDollar ",A="FL:D:/Compiler/Lex.CPP.Z,142",BI=156$0000003E94 0003 0000000070 Funct Export Res
|
||||
$LK,"LexExcept ",A="FL:D:/Compiler/Lex.CPP.Z,1601",BI=157$0000007068 00B8 00000000ED Funct Export Res
|
||||
$LK,"LexExpression ",A="FL:D:/Compiler/ExpParser.CPP.Z,1186",BI=158$000000ED8E 0002 000000003F Funct Export Res
|
||||
$LK,"LexExpression2Bin ",A="FL:D:/Compiler/ExpParser.CPP.Z,1135",BI=159$000000EC16 0006 0000000094 Funct Export Res
|
||||
$LK,"LexExpressionF64 ",A="FL:D:/Compiler/ExpParser.CPP.Z,1172",BI=160$000000ED36 0000 0000000054 Funct Export Res
|
||||
$LK,"LexExpressionI64 ",A="FL:D:/Compiler/ExpParser.CPP.Z,1158",BI=161$000000ECDE 000A 0000000054 Funct Export Res
|
||||
$LK,"LexExtStr ",A="FL:D:/Compiler/Lex.CPP.Z,1518",BI=162$0000006D50 0004 00000000C5 Funct Export Res
|
||||
$LK,"LexFirstRem ",A="FL:D:/Compiler/Lex.CPP.Z,332",BI=163$0000004884 0000 00000000BC Funct Export Res
|
||||
$LK,"LexGetChar ",A="FL:D:/Compiler/Lex.CPP.Z,156",BI=164$0000003F04 0031 000000094F Funct Export Res
|
||||
$LK,"LexInStr ",A="FL:D:/Compiler/Lex.CPP.Z,628",BI=165$0000005198 0001 000000032A Funct Export Res
|
||||
$LK,"LexIncludeStr ",A="FL:D:/Compiler/Lex.CPP.Z,354",BI=166$0000004944 0003 0000000098 Funct Export Res
|
||||
$LK,"LexNew ",A="FL:D:/Compiler/Lex.CPP.Z,35",BI=167$0000003A90 0004 000000013D Funct Export Res
|
||||
$LK,"LexPop ",A="FL:D:/Compiler/Lex.CPP.Z,450",BI=168$0000004C60 0004 0000000074 Funct Export Res
|
||||
$LK,"LexPush ",A="FL:D:/Compiler/Lex.CPP.Z,438",BI=169$0000004BD8 000F 0000000081 Funct Export Res
|
||||
$LK,"LexPutLine ",A="FL:D:/Compiler/Lex.CPP.Z,1543",BI=170$0000006E18 0003 000000009B Funct Export Res
|
||||
$LK,"LexPutPos ",A="FL:D:/Compiler/Lex.CPP.Z,1571",BI=171$0000006EB8 0003 00000000CA Funct Export Res
|
||||
$LK,"LexPutToken ",A="FL:D:/Compiler/Lex.CPP.Z,108",BI=172$0000003D18 0001 000000012B Funct Export Res
|
||||
$LK,"LexSize ",A="FL:D:/Compiler/Lex.CPP.Z,88",BI=173$0000003C78 0000 000000009B Funct Export Res
|
||||
$LK,"LexSkipEol ",A="FL:D:/Compiler/Lex.CPP.Z,325",BI=174$0000004854 0004 000000002B Funct Export Res
|
||||
$LK,"LexStatement2Bin ",A="FL:D:/Compiler/CmpMain.CPP.Z,15",BI=175$000002AE3A 0001 0000000131 Funct Export Res
|
||||
$LK,"LexWarn ",A="FL:D:/Compiler/Lex.CPP.Z,1585",BI=176$0000006F88 0009 00000000D9 Funct Export Res
|
||||
$LK,"MDR_D32_INDIRECT_REG",A="FL:D:/Compiler/BackLib.CPP.Z,134"$3 0002 0000000008 DefineStr
|
||||
$LK,"MDR_D8_INDIRECT_REG ",A="FL:D:/Compiler/BackLib.CPP.Z,133"$2 0002 0000000008 DefineStr
|
||||
$LK,"MDR_INDIRECT_REG ",A="FL:D:/Compiler/BackLib.CPP.Z,132"$1 0002 0000000008 DefineStr
|
||||
$LK,"MDR_REG ",A="FL:D:/Compiler/BackLib.CPP.Z,131"$0 0002 0000000008 DefineStr
|
||||
$LK,"MDR_RIP_REL ",A="FL:D:/Compiler/BackLib.CPP.Z,138"$7 0004 0000000008 DefineStr
|
||||
$LK,"MDR_SIB_D32_INDIRECT_REG",A="FL:D:/Compiler/BackLib.CPP.Z,137"$6 0003 0000000008 DefineStr
|
||||
$LK,"MDR_SIB_D8_INDIRECT_REG",A="FL:D:/Compiler/BackLib.CPP.Z,136"$5 0002 0000000008 DefineStr
|
||||
$LK,"MDR_SIB_INDIRECT_REG",A="FL:D:/Compiler/BackLib.CPP.Z,135"$4 0002 0000000008 DefineStr
|
||||
$LK,"MemberAdd ",A="FL:D:/Compiler/Lex.CPP.Z,519",BI=177$0000004E10 0004 00000001BA Funct Export Res
|
||||
$LK,"MemberFind ",A="FL:D:/Compiler/Lex.CPP.Z,484",BI=178$0000004D60 0005 0000000067 Funct Export Res
|
||||
$LK,"MemberFind2 ",A="FL:D:/Compiler/Lex.CPP.Z,504",BI=179$0000004DC8 0001 0000000044 Funct Export Res
|
||||
$LK,"MemberLstDel ",A="FL:D:/Compiler/Lex.CPP.Z,567",BI=180$0000004FD0 0001 00000000F3 Funct Export Res
|
||||
$LK,"MemberLstNew ",A="FL:D:/Compiler/StmtParser.CPP.Z,38",BI=181$000000F026 0003 000000002A Funct Export Res
|
||||
$LK,"MemberLstSize ",A="FL:D:/Compiler/Lex.CPP.Z,601",BI=182$00000050C8 0002 00000000CF Funct Export Res
|
||||
$LK,"MemberMetaData ",A="FL:D:/Compiler/Lex.CPP.Z,462",BI=183$0000004CD8 0000 0000000041 Funct Export Res
|
||||
$LK,"MemberMetaFind ",A="FL:D:/Compiler/Lex.CPP.Z,473",BI=184$0000004D20 0000 0000000040 Funct Export Res
|
||||
$LK,"NUM_INTERNAL_TYPES ",A="FL:D:/Compiler/CmpInit.CPP.Z,1"$17 0002 0000000008 DefineStr
|
||||
$LK,"OTrace ",A="FL:D:/Compiler/ICLCC.CPP.Z,21",BI=185$0000002840 0000 0000000017 Funct Export Res
|
||||
$LK,"OTraceMask ",A="FL:D:/Compiler/ICLCC.CPP.Z,26",BI=186$0000002858 0000 0000000039 Funct Export Res
|
||||
$LK,"OptBrNotZero ",A="FL:D:/Compiler/OptLib.CPP.Z,361",BI=187$000000B7DE 0004 0000000403 Funct Export Res
|
||||
$LK,"OptBrZero ",A="FL:D:/Compiler/OptLib.CPP.Z,213",BI=188$000000B3D6 0006 0000000403 Funct Export Res
|
||||
$LK,"OptClassFwd ",A="FL:D:/Compiler/OptLib.CPP.Z,9",BI=189$000000AEFE 0013 000000002B Funct Export Res
|
||||
$LK,"OptEqu ",A="FL:D:/Compiler/ICLCC.CPP.Z,1",BI=190$00000027B0 0005 000000002E Funct Export Res
|
||||
$LK,"OptFixSizeOf ",A="FL:D:/Compiler/OptLib.CPP.Z,509",BI=191$000000BBE6 0003 000000009B Funct Export Res
|
||||
$LK,"OptFixupBinaryOp1 ",A="FL:D:/Compiler/OptLib.CPP.Z,96",BI=192$000000B0E6 0013 00000001CB Funct Export Res
|
||||
$LK,"OptFixupBinaryOp2 ",A="FL:D:/Compiler/OptLib.CPP.Z,162",BI=193$000000B2B6 0001 0000000054 Funct Export Res
|
||||
$LK,"OptFixupUnaryOp ",A="FL:D:/Compiler/OptLib.CPP.Z,178",BI=194$000000B30E 0003 00000000C8 Funct Export Res
|
||||
$LK,"OptFree ",A="FL:D:/Compiler/OptLib.CPP.Z,33",BI=195$000000AFAE 0023 0000000024 Funct Export Res
|
||||
$LK,"OptIC4 ",A="FL:D:/Compiler/OptPass4.CPP.Z,1",BI=196$00000179AE 0001 00000005CD Funct Export Res
|
||||
$LK,"OptIC6 ",A="FL:D:/Compiler/OptPass6.CPP.Z,1",BI=197$00000192C6 0001 0000000128 Funct Export Res
|
||||
$LK,"OptLabelFwd ",A="FL:D:/Compiler/OptLib.CPP.Z,1",BI=198$000000AED6 0010 0000000028 Funct Export Res
|
||||
$LK,"OptLag ",A="FL:D:/Compiler/OptLib.CPP.Z,40",BI=199$000000AFD6 000E 000000002A Funct Export Res
|
||||
$LK,"OptLag1 ",A="FL:D:/Compiler/OptLib.CPP.Z,51",BI=200$000000B006 0006 0000000031 Funct Export Res
|
||||
$LK,"OptLag2 ",A="FL:D:/Compiler/OptLib.CPP.Z,62",BI=201$000000B03E 0003 000000002A Funct Export Res
|
||||
$LK,"OptLead1 ",A="FL:D:/Compiler/OptLib.CPP.Z,73",BI=202$000000B06E 0004 0000000030 Funct Export Res
|
||||
$LK,"OptMVCompare ",A="FL:D:/Compiler/OptLib.CPP.Z,576",BI=203$000000BD96 0001 000000001A Funct Export Res
|
||||
$LK,"OptOff ",A="FL:D:/Compiler/ICLCC.CPP.Z,11",BI=204$00000027F8 0000 0000000016 Funct Export Res
|
||||
$LK,"OptOn ",A="FL:D:/Compiler/ICLCC.CPP.Z,6",BI=205$00000027E0 0000 0000000016 Funct Export Res
|
||||
$LK,"OptPass012 ",A="FL:D:/Compiler/OptPass012.CPP.Z,23",BI=206$0000013B76 0000 00000027CC Funct Export Res
|
||||
$LK,"OptPass3 ",A="FL:D:/Compiler/OptPass3.CPP.Z,1",BI=207$0000016346 0000 0000001663 Funct Export Res
|
||||
$LK,"OptPass4 ",A="FL:D:/Compiler/OptPass4.CPP.Z,171",BI=208$0000017F7E 0000 0000000F05 Funct Export Res
|
||||
$LK,"OptPass5 ",A="FL:D:/Compiler/OptPass5.CPP.Z,1",BI=209$0000018E86 0000 000000043F Funct Export Res
|
||||
$LK,"OptPass6 ",A="FL:D:/Compiler/OptPass6.CPP.Z,112",BI=210$0000019716 0000 00000004EA Funct Export Res
|
||||
$LK,"OptPass6Lag ",A="FL:D:/Compiler/OptPass6.CPP.Z,28",BI=211$00000193EE 0001 0000000327 Funct Export Res
|
||||
$LK,"OptPass789 ",A="FL:D:/Compiler/OptPass789.CPP.Z,1",BI=212$000002620E 0000 0000002E9E Funct Export Res
|
||||
$LK,"OptSetNOP1 ",A="FL:D:/Compiler/OptLib.CPP.Z,17",BI=213$000000AF2E 0079 000000003A Funct Export Res
|
||||
$LK,"OptSetNOP2 ",A="FL:D:/Compiler/OptLib.CPP.Z,25",BI=214$000000AF6E 000D 000000003C Funct Export Res
|
||||
$LK,"PE_CHECK_BINARY_OPS1",A="FL:D:/Compiler/ExpParser.CPP.Z,43"$5 0001 0000000008 DefineStr
|
||||
$LK,"PE_CHECK_BINARY_OPS2",A="FL:D:/Compiler/ExpParser.CPP.Z,44"$6 0001 0000000008 DefineStr
|
||||
$LK,"PE_DEREFERENCE ",A="FL:D:/Compiler/ExpParser.CPP.Z,42"$4 0003 0000000008 DefineStr
|
||||
$LK,"PE_DO_BINARY_OP ",A="FL:D:/Compiler/ExpParser.CPP.Z,46"$8 0001 0000000008 DefineStr
|
||||
$LK,"PE_DO_UNARY_OP ",A="FL:D:/Compiler/ExpParser.CPP.Z,45"$7 0001 0000000008 DefineStr
|
||||
$LK,"PE_MAYBE_MODIFIERS ",A="FL:D:/Compiler/ExpParser.CPP.Z,40"$2 000A 0000000008 DefineStr
|
||||
$LK,"PE_POP_ALL1 ",A="FL:D:/Compiler/ExpParser.CPP.Z,49"$11 0001 0000000008 DefineStr
|
||||
$LK,"PE_POP_ALL2 ",A="FL:D:/Compiler/ExpParser.CPP.Z,50"$12 0001 0000000008 DefineStr
|
||||
$LK,"PE_POP_HIGHER ",A="FL:D:/Compiler/ExpParser.CPP.Z,47"$9 0001 0000000008 DefineStr
|
||||
$LK,"PE_PUSH_LOWER ",A="FL:D:/Compiler/ExpParser.CPP.Z,48"$10 0001 0000000008 DefineStr
|
||||
$LK,"PE_UNARY_MODIFIERS ",A="FL:D:/Compiler/ExpParser.CPP.Z,41"$3 0009 0000000008 DefineStr
|
||||
$LK,"PE_UNARY_TERM1 ",A="FL:D:/Compiler/ExpParser.CPP.Z,38"$0 0001 0000000008 DefineStr
|
||||
$LK,"PE_UNARY_TERM2 ",A="FL:D:/Compiler/ExpParser.CPP.Z,39"$1 0003 0000000008 DefineStr
|
||||
$LK,"ParenWarning ",A="FL:D:/Compiler/ExpParser.CPP.Z,1",BI=215$000000BDB6 0004 000000004C Funct Export Res
|
||||
$LK,"PrsAddOp ",A="FL:D:/Compiler/ExpParser.CPP.Z,52",BI=216$000000BEFE 0002 00000001EE Funct Export Res
|
||||
$LK,"PrsArrayDims ",A="FL:D:/Compiler/StmtParser.CPP.Z,303",BI=217$000000FAAE 0001 000000012D Funct Export Res
|
||||
$LK,"PrsAsmArg ",A="FL:D:/Compiler/Assembler.CPP.Z,428",BI=218$0000008470 0002 0000000424 Funct Export Res
|
||||
$LK,"PrsAsmBlk ",A="FL:D:/Compiler/Assembler.CPP.Z,1277",BI=219$000000A5E6 0002 00000008ED Funct Export Res
|
||||
$LK,"PrsAsmDefine ",A="FL:D:/Compiler/Assembler.CPP.Z,1188",BI=220$000000A286 0004 000000029D Funct Export Res
|
||||
$LK,"PrsAsmImm ",A="FL:D:/Compiler/Assembler.CPP.Z,394",BI=221$0000008338 0006 0000000131 Funct Export Res
|
||||
$LK,"PrsAsmInstruction ",A="FL:D:/Compiler/Assembler.CPP.Z,781",BI=222$000000918E 0001 00000010F3 Funct Export Res
|
||||
$LK,"PrsBinFile ",A="FL:D:/Compiler/Assembler.CPP.Z,1261",BI=223$000000A526 0001 00000000BB Funct Export Res
|
||||
$LK,"PrsClass ",A="FL:D:/Compiler/StmtParser.CPP.Z,785",BI=224$0000010B76 0002 0000000264 Funct Export Res
|
||||
$LK,"PrsClassNew ",A="FL:D:/Compiler/StmtParser.CPP.Z,1",BI=225$000000EF56 0003 0000000068 Funct Export Res
|
||||
$LK,"PrsDoWhile ",A="FL:D:/Compiler/StmtParser.CPP.Z,1281",BI=226$0000011F36 0001 0000000137 Funct Export Res
|
||||
$LK,"PrsDotDotDot ",A="FL:D:/Compiler/StmtParser.CPP.Z,340",BI=227$000000FBDE 0001 0000000111 Funct Export Res
|
||||
$LK,"PrsExpression ",A="FL:D:/Compiler/ExpParser.CPP.Z,298",BI=228$000000C756 0010 0000000149 Funct Export Res
|
||||
$LK,"PrsExpression2 ",A="FL:D:/Compiler/ExpParser.CPP.Z,102",BI=229$000000C0EE 0001 0000000667 Funct Export Res
|
||||
$LK,"PrsFor ",A="FL:D:/Compiler/StmtParser.CPP.Z,1305",BI=230$000001206E 0001 0000000162 Funct Export Res
|
||||
$LK,"PrsFun ",A="FL:D:/Compiler/StmtParser.CPP.Z,914",BI=231$0000010FC6 0001 00000003B7 Funct Export Res
|
||||
$LK,"PrsFunCall ",A="FL:D:/Compiler/ExpParser.CPP.Z,409",BI=232$000000CBF6 0003 000000082D Funct Export Res
|
||||
$LK,"PrsFunJoin ",A="FL:D:/Compiler/StmtParser.CPP.Z,851",BI=233$0000010DDE 0005 00000001E8 Funct Export Res
|
||||
$LK,"PrsFunNew ",A="FL:D:/Compiler/StmtParser.CPP.Z,22",BI=234$000000EFBE 0001 0000000068 Funct Export Res
|
||||
$LK,"PrsGlblInit ",A="FL:D:/Compiler/StmtParser.CPP.Z,263",BI=235$000000F8EE 0002 000000007C Funct Export Res
|
||||
$LK,"PrsGlblVarLst ",A="FL:D:/Compiler/StmtParser.CPP.Z,976",BI=236$000001137E 0007 0000000991 Funct Export Res
|
||||
$LK,"PrsIf ",A="FL:D:/Compiler/StmtParser.CPP.Z,1231",BI=237$0000011D16 0001 000000012C Funct Export Res
|
||||
$LK,"PrsKeyWord ",A="FL:D:/Compiler/StmtParser.CPP.Z,45",BI=238$000000F056 000C 0000000040 Funct Export Res
|
||||
$LK,"PrsNoUnusedWarn ",A="FL:D:/Compiler/StmtParser.CPP.Z,1553",BI=239$0000012A66 0001 000000008F Funct Export Res
|
||||
$LK,"PrsOffsetOf ",A="FL:D:/Compiler/ExpParser.CPP.Z,379",BI=240$000000CAAE 0002 0000000148 Funct Export Res
|
||||
$LK,"PrsPop ",A="FL:D:/Compiler/ExpParser.CPP.Z,13",BI=241$000000BE2E 0017 0000000022 Funct Export Res
|
||||
$LK,"PrsPop2 ",A="FL:D:/Compiler/ExpParser.CPP.Z,23",BI=242$000000BE8E 0001 000000002D Funct Export Res
|
||||
$LK,"PrsPopDeref ",A="FL:D:/Compiler/ExpParser.CPP.Z,28",BI=243$000000BEBE 0004 000000003F Funct Export Res
|
||||
$LK,"PrsPush ",A="FL:D:/Compiler/ExpParser.CPP.Z,8",BI=244$000000BE06 0017 0000000028 Funct Export Res
|
||||
$LK,"PrsPush2 ",A="FL:D:/Compiler/ExpParser.CPP.Z,18",BI=245$000000BE56 0004 0000000033 Funct Export Res
|
||||
$LK,"PrsSizeOf ",A="FL:D:/Compiler/ExpParser.CPP.Z,331",BI=246$000000C8A6 0001 0000000207 Funct Export Res
|
||||
$LK,"PrsStatement ",A="FL:D:/Compiler/StmtParser.CPP.Z,1664",BI=247$0000012F66 0004 0000000C09 Funct Export Res
|
||||
$LK,"PrsStaticInit ",A="FL:D:/Compiler/StmtParser.CPP.Z,272",BI=248$000000F96E 0002 000000013E Funct Export Res
|
||||
$LK,"PrsStreamBlk ",A="FL:D:/Compiler/StmtParser.CPP.Z,1567",BI=249$0000012AF6 0000 00000001B2 Funct Export Res
|
||||
$LK,"PrsSwitch ",A="FL:D:/Compiler/StmtParser.CPP.Z,1354",BI=250$00000121D6 0002 000000088F Funct Export Res
|
||||
$LK,"PrsTryBlk ",A="FL:D:/Compiler/StmtParser.CPP.Z,1603",BI=251$0000012CAE 0001 00000002B7 Funct Export Res
|
||||
$LK,"PrsType ",A="FL:D:/Compiler/StmtParser.CPP.Z,375",BI=252$000000FCF6 0002 000000039A Funct Export Res
|
||||
$LK,"PrsUnaryModifier ",A="FL:D:/Compiler/ExpParser.CPP.Z,980",BI=253$000000E3B6 0000 0000000859 Funct Export Res
|
||||
$LK,"PrsUnaryTerm ",A="FL:D:/Compiler/ExpParser.CPP.Z,617",BI=254$000000D426 0000 0000000F8E Funct Export Res
|
||||
$LK,"PrsVarInit ",A="FL:D:/Compiler/StmtParser.CPP.Z,66",BI=255$000000F126 0001 00000004C8 Funct Export Res
|
||||
$LK,"PrsVarInit2 ",A="FL:D:/Compiler/StmtParser.CPP.Z,181",BI=256$000000F5EE 0004 00000002FE Funct Export Res
|
||||
$LK,"PrsVarLst ",A="FL:D:/Compiler/StmtParser.CPP.Z,469",BI=257$0000010096 0006 0000000ADC Funct Export Res
|
||||
$LK,"PrsWhile ",A="FL:D:/Compiler/StmtParser.CPP.Z,1259",BI=258$0000011E46 0001 00000000EF Funct Export Res
|
||||
$LK,"SLASH_OP_DEC ",A="FL:D:/Compiler/BackLib.CPP.Z,262"$0x052B0000 0006 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_DIV ",A="FL:D:/Compiler/BackLib.CPP.Z,267"$0x00000000 0001 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_FADD ",A="FL:D:/Compiler/BackLib.CPP.Z,271"$0x0000C1DE 0002 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_FDIV ",A="FL:D:/Compiler/BackLib.CPP.Z,275"$0x0000F9DE 0002 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_FDIVR ",A="FL:D:/Compiler/BackLib.CPP.Z,276"$0x0000F1DE 0003 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_FILD ",A="FL:D:/Compiler/BackLib.CPP.Z,280"$0x00000000 0002 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_FISTTP ",A="FL:D:/Compiler/BackLib.CPP.Z,279"$0x00000000 0002 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_FLD ",A="FL:D:/Compiler/BackLib.CPP.Z,277"$0x00000000 0008 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_FMUL ",A="FL:D:/Compiler/BackLib.CPP.Z,274"$0x0000C9DE 0002 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_FSTP ",A="FL:D:/Compiler/BackLib.CPP.Z,278"$0x00000000 000D 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_FSUB ",A="FL:D:/Compiler/BackLib.CPP.Z,272"$0x0000E9DE 0002 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_FSUBR ",A="FL:D:/Compiler/BackLib.CPP.Z,273"$0x0000E1DE 0003 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_IMUL ",A="FL:D:/Compiler/BackLib.CPP.Z,266"$0x00000000 0001 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_INC ",A="FL:D:/Compiler/BackLib.CPP.Z,261"$0x00030000 0004 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_MOV ",A="FL:D:/Compiler/BackLib.CPP.Z,268"$0x00000000 0002 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_MUL ",A="FL:D:/Compiler/BackLib.CPP.Z,265"$0x00000000 0001 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_NEG ",A="FL:D:/Compiler/BackLib.CPP.Z,264"$0x00000000 0001 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_NOT ",A="FL:D:/Compiler/BackLib.CPP.Z,263"$0x00000000 0001 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_POP ",A="FL:D:/Compiler/BackLib.CPP.Z,270"$0x00000000 0001 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_PUSH ",A="FL:D:/Compiler/BackLib.CPP.Z,269"$0x00000000 0001 0000000018 DefineStr
|
||||
$LK,"StrMatchBits ",A="FL:D:/Compiler/Unassembler.CPP.Z,225",BI=259$0000000EC8 0002 0000000073 Funct Export Res
|
||||
$LK,"StreamExePrint ",A="FL:D:/Compiler/CmpMain.CPP.Z,700",BI=260$000002C8EA 0000 00000000EC Funct Export Res
|
||||
$LK,"StreamPrint ",A="FL:D:/Compiler/CmpMain.CPP.Z,1",BI=261$000002AD92 0000 00000000A8 Funct Export Res
|
||||
$LK,"U ",A="FL:D:/Compiler/Unassembler.CPP.Z,643",BI=262$0000002600 0000 00000000CF Funct Export Res
|
||||
$LK,"UasmHashLoad ",A="FL:D:/Compiler/Unassembler.CPP.Z,187",BI=263$0000000DB8 0001 0000000110 Funct Export Res
|
||||
$LK,"Ui ",A="FL:D:/Compiler/Unassembler.CPP.Z,238",BI=264$0000000F40 0002 00000016C0 Funct Export Res
|
||||
$LK,"Un ",A="FL:D:/Compiler/Unassembler.CPP.Z,658",BI=265$00000026D0 0008 00000000DA Funct Export Res
|
||||
$LK,"UndefinedExtern ",A="FL:D:/Compiler/StmtParser.CPP.Z,54",BI=266$000000F096 0001 0000000048 Funct Export Res
|
||||
$LK,"UnusedExternWarning ",A="FL:D:/Compiler/StmtParser.CPP.Z,60",BI=267$000000F0DE 0004 0000000043 Funct Export Res
|
||||
$LK,"asm_seg_prefixes ",A="FL:D:/Compiler/Assembler.CPP.Z,779"$0000009188 0001 0000000006 GlbVar Export
|
||||
$LK,"cmp ",A="FL:D:/Compiler/Compiler.PRJ.Z,13"$00000004E0 00E2 0000000229 GlbVar Export
|
||||
$LK,"cmp_templates ",A="FL:D:/Compiler/CmpExts.CPP.Z,37"$0000000000 0002 0000000004 GlbVar Export
|
||||
$LK,"cmp_templates_dont_pop",A="FL:D:/Compiler/CmpExts.CPP.Z,38"$000000018B 0002 0000000004 GlbVar Export
|
||||
$LK,"cmp_templates_dont_push",A="FL:D:/Compiler/CmpExts.CPP.Z,40"$0000000257 0002 0000000004 GlbVar Export
|
||||
$LK,"cmp_templates_dont_push2",A="FL:D:/Compiler/CmpExts.CPP.Z,39"$0000000421 0002 0000000004 GlbVar Export
|
||||
$LK,"cmp_templates_dont_push_pop",A="FL:D:/Compiler/CmpExts.CPP.Z,41"$0000000391 0002 0000000004 GlbVar Export
|
||||
$LK,"cmp_type_flags_src_code",A="FL:D:/Compiler/Lex.CPP.Z,390"$0000004A68 0001 0000000008 GlbVar Export
|
||||
$LK,"internal_types_table",A="FL:D:/Compiler/CmpInit.CPP.Z,8"$00000290B0 0001 00000000AA GlbVar Export
|
||||
$LK,"lex_zeros ",A="FL:D:/Compiler/Lex.CPP.Z,129"$0000003E48 000A 0000000004 GlbVar Export
|
||||
$LK,"uasm ",A="FL:D:/Compiler/Compiler.PRJ.Z,14"$0000000710 001C 0000000028 GlbVar Export
|
||||
| ||||