TempleOSTS_131005.ISO
This commit is contained in:
1 parent
1343005a29
commit
2d2a65d572
547 files changed
+33608
-12549
No files matched your search
+274
-284
@@ -1,28 +1,30 @@
|
||||
U0 AsmUnresolvedAdd(CAsmCtrl *a,U8 *exp,I64 type,I64 ip,I64 rel_ip,
|
||||
CLexUndef *undef_hash,I64 line_num,Bool U8_avail,Bool glbl)
|
||||
U0 AsmUnresolvedAdd(CAsmCtrl *a,U8 *ex,I64 type,I64 ip,I64 rel_ip,
|
||||
CLexUndef *undef_local,CLexUndef *undef_glbl,I64 line_num,
|
||||
Bool U8_avail)
|
||||
{
|
||||
CAsmUnresolvedRef *tempu=MAlloc(sizeof(CAsmUnresolvedRef));
|
||||
tempu->exp=exp;
|
||||
tempu->ex=ex;
|
||||
tempu->type=type;
|
||||
tempu->ip=ip;
|
||||
tempu->rel_ip=rel_ip;
|
||||
tempu->undef_hash=undef_hash;
|
||||
tempu->lit=FALSE;
|
||||
tempu->imm_flag=FALSE;
|
||||
tempu->line_num=line_num;
|
||||
tempu->U8_avail=U8_avail;
|
||||
tempu->str=NULL;
|
||||
if (glbl) {
|
||||
tempu->next=a->glbl_unresolved;
|
||||
a->glbl_unresolved=tempu;
|
||||
if (undef_hash->hash->type & HTF_IMPORT) {
|
||||
tempu->str=StrNew(undef_hash->hash->str);
|
||||
if (undef_hash->hash->type & HTF_LIT)
|
||||
tempu->lit=TRUE;
|
||||
}
|
||||
} else {
|
||||
if (undef_local) {
|
||||
tempu->undef_hash=undef_local;
|
||||
tempu->next=a->local_unresolved;
|
||||
a->local_unresolved=tempu;
|
||||
a->has_locals=TRUE;
|
||||
} else {
|
||||
tempu->undef_hash=undef_glbl;
|
||||
tempu->next=a->glbl_unresolved;
|
||||
a->glbl_unresolved=tempu;
|
||||
if (undef_glbl->hash->type & HTF_IMPORT) {
|
||||
tempu->str=StrNew(undef_glbl->hash->str);
|
||||
if (undef_glbl->hash->type & HTF_IMM)
|
||||
tempu->imm_flag=TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,11 +64,11 @@ U0 AsmStoreCodeU8(CLex *lx,U8 b)
|
||||
{
|
||||
CAsmCtrl *a=lx->a;
|
||||
I64 i=a->ip>>ASM_CODE_BLK_BITS;
|
||||
CAsmCodeBlk *tempc=a->code;
|
||||
CAsmCodeBlk *tempc=a->cb;
|
||||
while (i--)
|
||||
if (!(tempc=tempc->next)) {
|
||||
i=a->ip>>ASM_CODE_BLK_BITS+1;
|
||||
tempc=&a->code;
|
||||
tempc=&a->cb;
|
||||
while (i--) {
|
||||
if (!tempc->next)
|
||||
tempc->next=CAlloc(sizeof(CAsmCodeBlk));
|
||||
@@ -83,8 +85,8 @@ U0 AsmStoreCodeU8(CLex *lx,U8 b)
|
||||
"%02X ",b;
|
||||
a->display_col+=3;
|
||||
}
|
||||
if (a->ip>a->num_code_U8s)
|
||||
a->num_code_U8s=a->ip;
|
||||
if (a->ip>a->num_ex_U8s)
|
||||
a->num_ex_U8s=a->ip;
|
||||
}
|
||||
|
||||
U0 AsmStoreCodeU32(CLex *lx,U32 d)
|
||||
@@ -93,17 +95,17 @@ U0 AsmStoreCodeU32(CLex *lx,U32 d)
|
||||
I64 i=a->ip>>ASM_CODE_BLK_BITS,
|
||||
j=(a->ip+sizeof(U32))>>ASM_CODE_BLK_BITS;
|
||||
U32 *_d;
|
||||
CAsmCodeBlk *tempc=a->code;
|
||||
CAsmCodeBlk *tempc=a->cb;
|
||||
if (i!=j) {
|
||||
for (i=0;i<sizeof(U32);i++)
|
||||
AsmStoreCodeU8(lx,d.u8[i]);
|
||||
return;
|
||||
}
|
||||
tempc=a->code;
|
||||
tempc=a->cb;
|
||||
while (i--)
|
||||
if (!(tempc=tempc->next)) {
|
||||
i=a->ip>>ASM_CODE_BLK_BITS+1;
|
||||
tempc=&a->code;
|
||||
tempc=&a->cb;
|
||||
while (i--) {
|
||||
if (!tempc->next)
|
||||
tempc->next=CAlloc(sizeof(CAsmCodeBlk));
|
||||
@@ -122,8 +124,8 @@ U0 AsmStoreCodeU32(CLex *lx,U32 d)
|
||||
"%08X ",d;
|
||||
a->display_col+=9;
|
||||
}
|
||||
if (a->ip>a->num_code_U8s)
|
||||
a->num_code_U8s=a->ip;
|
||||
if (a->ip>a->num_ex_U8s)
|
||||
a->num_ex_U8s=a->ip;
|
||||
}
|
||||
|
||||
U0 AsmStoreCodeU64(CLex *lx,U64 d)
|
||||
@@ -132,17 +134,17 @@ U0 AsmStoreCodeU64(CLex *lx,U64 d)
|
||||
I64 i=a->ip>>ASM_CODE_BLK_BITS,
|
||||
j=(a->ip+sizeof(I64))>>ASM_CODE_BLK_BITS,
|
||||
*qq;
|
||||
CAsmCodeBlk *tempc=a->code;
|
||||
CAsmCodeBlk *tempc=a->cb;
|
||||
if (i!=j) {
|
||||
for (i=0;i<sizeof(I64);i++)
|
||||
AsmStoreCodeU8(lx,d.u8[i]);
|
||||
return;
|
||||
}
|
||||
tempc=a->code;
|
||||
tempc=a->cb;
|
||||
while (i--)
|
||||
if (!(tempc=tempc->next)) {
|
||||
i=a->ip>>ASM_CODE_BLK_BITS+1;
|
||||
tempc=&a->code;
|
||||
tempc=&a->cb;
|
||||
while (i--) {
|
||||
if (!tempc->next)
|
||||
tempc->next=CAlloc(sizeof(CAsmCodeBlk));
|
||||
@@ -161,15 +163,15 @@ U0 AsmStoreCodeU64(CLex *lx,U64 d)
|
||||
"%016X ",d;
|
||||
a->display_col+=17;
|
||||
}
|
||||
if (a->ip>a->num_code_U8s)
|
||||
a->num_code_U8s=a->ip;
|
||||
if (a->ip>a->num_ex_U8s)
|
||||
a->num_ex_U8s=a->ip;
|
||||
}
|
||||
|
||||
U0 AsmStoreCodeU8At(CLex *lx,U8 b,I64 ip)
|
||||
{
|
||||
CAsmCtrl *a=lx->a;
|
||||
I64 i=ip>>ASM_CODE_BLK_BITS+1;
|
||||
CAsmCodeBlk *tempc=&a->code;
|
||||
CAsmCodeBlk *tempc=&a->cb;
|
||||
while (i--) {
|
||||
if (!tempc->next) {
|
||||
tempc->next=CAlloc(sizeof(CAsmCodeBlk));
|
||||
@@ -178,18 +180,18 @@ U0 AsmStoreCodeU8At(CLex *lx,U8 b,I64 ip)
|
||||
tempc=tempc->next;
|
||||
}
|
||||
tempc->body[ip & (ASM_CODE_BLK_SIZE-1)]=b;
|
||||
if (ip+1>a->num_code_U8s)
|
||||
a->num_code_U8s=ip+1;
|
||||
if (ip+1>a->num_ex_U8s)
|
||||
a->num_ex_U8s=ip+1;
|
||||
}
|
||||
|
||||
I64 AsmExpressionEval(CLex *lx)
|
||||
I64 AsmLexExpression(CLex *lx)
|
||||
{
|
||||
U8 *exp;
|
||||
U8 *ex;
|
||||
I64 result=0;
|
||||
lx->undef_hash_entry=NULL;
|
||||
lx->flags&=~(LF_UNRESOLVED+LF_LOCAL);
|
||||
lx->abs_cnts=0;
|
||||
if (!GetExpression(lx,&exp))
|
||||
if (!IsLexExpression2Bin(lx,&ex))
|
||||
LexSkipEol(lx);
|
||||
else {
|
||||
if (lx->abs_cnts.externs)
|
||||
@@ -197,8 +199,8 @@ I64 AsmExpressionEval(CLex *lx)
|
||||
if (lx->flags & LF_UNRESOLVED)
|
||||
LexExcept(lx,"ST_UNDEFINED_SYM");
|
||||
else {
|
||||
result=Call(exp);
|
||||
ExpressionDel(exp);
|
||||
result=Call(ex);
|
||||
ExpressionBinDel(ex);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
@@ -221,7 +223,7 @@ U0 AsmLocalsResolve(CLex *lx)
|
||||
templu=tempu->undef_hash;
|
||||
while (templu) {
|
||||
if (templu->hash->type & HTF_UNRESOLVED) {
|
||||
PrintFErr("%S%04d %s %s\n","ST_UNDEFINED_SYM_LINE",
|
||||
PrintErr("%S%04d %s %s\n","ST_UNDEFINED_SYM_LINE",
|
||||
tempu->line_num,a->last_label,templu->hash->str);
|
||||
LexExcept(lx);
|
||||
}
|
||||
@@ -229,17 +231,17 @@ U0 AsmLocalsResolve(CLex *lx)
|
||||
templu=templu->next;
|
||||
}
|
||||
if (!undefined) {
|
||||
r=Call(tempu->exp);
|
||||
r=Call(tempu->ex);
|
||||
if (!(tempu->type & 1)) {
|
||||
r-=tempu->rel_ip;
|
||||
if (tempu->type==EIE_REL_U8 && !(MIN_I8<=r<=MAX_I8) ||
|
||||
tempu->type==EIE_REL_U16 && !(MIN_I16<=r<=MAX_I16) ) {
|
||||
PrintFErr("%S%04d %s %s\n","ST_BRANCH_OUT_OF_RANGE_LINE",
|
||||
PrintErr("%S%04d %s %s\n","ST_BRANCH_OUT_OF_RANGE_LINE",
|
||||
tempu->line_num,a->last_label,label);
|
||||
LexExcept(lx);
|
||||
}
|
||||
if (tempu->U8_avail && tempu->type>EIE_LIT_U8 && -124<=r<=123)
|
||||
PrintFWarn("%S%04d %s %s\n","ST_COULD_USE_I8_DISP_LINE",
|
||||
if (tempu->U8_avail && tempu->type>EIE_IMM_U8 && -124<=r<=123)
|
||||
PrintWarn("%S%04d %s %s\n","ST_COULD_USE_I8_DISP_LINE",
|
||||
tempu->line_num,a->last_label,label);
|
||||
}
|
||||
AsmStoreCodeU8At(lx,r.u8[0],tempu->ip);
|
||||
@@ -257,7 +259,7 @@ U0 AsmLocalsResolve(CLex *lx)
|
||||
}
|
||||
}
|
||||
}
|
||||
ExpressionDel(tempu->exp);
|
||||
ExpressionBinDel(tempu->ex);
|
||||
LinkedLstDel(tempu->undef_hash);
|
||||
Free(tempu);
|
||||
tempu=tempu1;
|
||||
@@ -270,7 +272,7 @@ U0 AsmLocalsResolve(CLex *lx)
|
||||
a->has_locals=FALSE;
|
||||
}
|
||||
|
||||
U0 AsmGlblsResolve(CLex *lx,CExe *ex)
|
||||
U0 AsmGlblsResolve(CLex *lx,CExe *tempx)
|
||||
{
|
||||
CAsmCtrl *a=lx->a;
|
||||
CHashFun *tempf;
|
||||
@@ -278,7 +280,7 @@ U0 AsmGlblsResolve(CLex *lx,CExe *ex)
|
||||
I64 j,r=0;
|
||||
CExeImportExport *tempe,*tempe1;
|
||||
CLexUndef *templu;
|
||||
CHashExport *tempess;
|
||||
CHashExport *tempex;
|
||||
U8 *label;
|
||||
Bool undefined;
|
||||
CExternUsage *tempeu,*tempeu8;
|
||||
@@ -290,19 +292,19 @@ U0 AsmGlblsResolve(CLex *lx,CExe *ex)
|
||||
templu=tempu->undef_hash;
|
||||
while (templu) {
|
||||
if (templu->hash->type & HTF_UNRESOLVED) {
|
||||
tempess=templu->hash;
|
||||
if (tempess->type & HTT_EXPORT_SYS_SYM &&
|
||||
tempess->type & HTF_UNRESOLVED &&
|
||||
!(tempess->type & HTF_IMPORT) &&
|
||||
(tempf=HashFind(tempess->str,lx->htc.hash_table_lst,HTT_FUN)) &&
|
||||
tempex=templu->hash;
|
||||
if (tempex->type & HTT_EXPORT_SYS_SYM &&
|
||||
tempex->type & HTF_UNRESOLVED &&
|
||||
!(tempex->type & HTF_IMPORT) &&
|
||||
(tempf=HashFind(tempex->str,lx->htc.hash_table_lst,HTT_FUN)) &&
|
||||
!Bt(tempf->flags,Cf_EXTERN)) {
|
||||
tempess->val=tempf->executable_addr;
|
||||
tempess->type&=~HTF_UNRESOLVED;
|
||||
tempex->val=tempf->executable_addr;
|
||||
tempex->type&=~HTF_UNRESOLVED;
|
||||
label=templu->hash->str;
|
||||
} else {
|
||||
if (!(tempess->type & HTF_IMPORT)) {
|
||||
PrintFErr("%S%04d %s\n",
|
||||
"ST_UNDEFINED_SYM_LINE",tempu->line_num,tempess->str);
|
||||
if (!(tempex->type & HTF_IMPORT)) {
|
||||
PrintErr("%S%04d %s\n",
|
||||
"ST_UNDEFINED_SYM_LINE",tempu->line_num,tempex->str);
|
||||
LexExcept(lx);
|
||||
}
|
||||
undefined=TRUE;
|
||||
@@ -311,7 +313,7 @@ U0 AsmGlblsResolve(CLex *lx,CExe *ex)
|
||||
label=templu->hash->str;
|
||||
templu=templu->next;
|
||||
}
|
||||
r=Call(tempu->exp);
|
||||
r=Call(tempu->ex);
|
||||
if (!(tempu->type & 1))
|
||||
r-=tempu->rel_ip;
|
||||
if (undefined) {
|
||||
@@ -327,12 +329,12 @@ U0 AsmGlblsResolve(CLex *lx,CExe *ex)
|
||||
if (!(tempu->type & 1)) { //Rel?
|
||||
if (tempu->type==EIE_REL_U8 && !(MIN_I8<=r<=MAX_I8) ||
|
||||
tempu->type==EIE_REL_U16 && !(MIN_I16<=r<=MAX_I16)) {
|
||||
PrintFErr("%S%04d %s\n","ST_BRANCH_OUT_OF_RANGE_LINE",
|
||||
PrintErr("%S%04d %s\n","ST_BRANCH_OUT_OF_RANGE_LINE",
|
||||
tempu->line_num,label);
|
||||
LexExcept(lx);
|
||||
}
|
||||
if (tempu->U8_avail && tempu->type>EIE_LIT_U8 && -124<=r<=123)
|
||||
PrintFWarn("%S%04d %s %s\n","ST_COULD_USE_I8_DISP_LINE",
|
||||
if (tempu->U8_avail && tempu->type>EIE_IMM_U8 && -124<=r<=123)
|
||||
PrintWarn("%S%04d %s %s\n","ST_COULD_USE_I8_DISP_LINE",
|
||||
tempu->line_num,a->last_label,label);
|
||||
}
|
||||
}
|
||||
@@ -350,35 +352,35 @@ U0 AsmGlblsResolve(CLex *lx,CExe *ex)
|
||||
}
|
||||
}
|
||||
}
|
||||
ExpressionDel(tempu->exp);
|
||||
ExpressionBinDel(tempu->ex);
|
||||
LinkedLstDel(tempu->undef_hash);
|
||||
Free(tempu);
|
||||
tempu=tempu1;
|
||||
}
|
||||
|
||||
tempess=lx->htc.glbl_hash_table->next_added;
|
||||
while (tempess!=lx->htc.glbl_hash_table) {
|
||||
if (tempess->type & HTF_IMPORT && tempess->use_cnt) {
|
||||
if (tempe=tempess->ie_lst) {
|
||||
if (tempess->import_name)
|
||||
tempe->str=StrNew(tempess->import_name);
|
||||
tempex=lx->htc.glbl_hash_table->next_added;
|
||||
while (tempex!=lx->htc.glbl_hash_table) {
|
||||
if (tempex->type & HTF_IMPORT) {
|
||||
if (tempex->use_cnt && (tempe=tempex->ie_lst)) {
|
||||
if (tempex->import_name)
|
||||
tempe->str=StrNew(tempex->import_name);
|
||||
else
|
||||
tempe->str=StrNew(tempess->str);
|
||||
tempe->str=StrNew(tempex->str);
|
||||
do {
|
||||
tempe1=tempe->next;
|
||||
QueIns(tempe,ex->last_ie);
|
||||
QueIns(tempe,tempx->last_ie);
|
||||
} while (tempe=tempe1);
|
||||
tempess->ie_lst=NULL;
|
||||
tempex->ie_lst=NULL;
|
||||
}
|
||||
} else if (tempess->type & HTF_EXPORT) {
|
||||
if (tempess->type & HTF_UNRESOLVED) {
|
||||
PrintFErr("%S%s\n","ST_UNDEFINED_SYM",tempess->str);
|
||||
} else if (tempex->type & HTF_EXPORT) {
|
||||
if (tempex->type & HTF_UNRESOLVED) {
|
||||
PrintErr("%S%s\n","ST_UNDEFINED_SYM",tempex->str);
|
||||
LexExcept(lx);
|
||||
}
|
||||
tempe=CAlloc(sizeof(CExeImportExport));
|
||||
tempe->type=EIE_REL_EXPORT;
|
||||
if (tempess->type & HTT_FUN) {
|
||||
tempf=tempess;
|
||||
if (tempex->type & HTT_FUN) {
|
||||
tempf=tempex;
|
||||
tempe->ip=tempf->executable_addr;
|
||||
tempeu=tempf->ext_lst;
|
||||
while (tempeu) {
|
||||
@@ -391,17 +393,17 @@ U0 AsmGlblsResolve(CLex *lx,CExe *ex)
|
||||
Free(tempeu);
|
||||
tempeu=tempeu8;
|
||||
}
|
||||
} else if (tempess->type & HTT_GLBL_VAR)
|
||||
tempe->ip=tempess(CHashGlblVar *)->data_addr_ip;
|
||||
} else if (tempex->type & HTT_GLBL_VAR)
|
||||
tempe->ip=tempex(CHashGlblVar *)->data_addr_ip;
|
||||
else
|
||||
tempe->ip=tempess->val;
|
||||
if (tempess->type & HTF_LIT)
|
||||
tempe->ip=tempex->val;
|
||||
if (tempex->type & HTF_IMM)
|
||||
tempe->type++;
|
||||
tempe->str=StrNew(tempess->str);
|
||||
tempe->src_link=StrNew(tempess->src_link);
|
||||
QueIns(tempe,ex->last_ie);
|
||||
tempe->str=StrNew(tempex->str);
|
||||
tempe->src_link=StrNew(tempex->src_link);
|
||||
QueIns(tempe,tempx->last_ie);
|
||||
}
|
||||
tempess=tempess->next_added;
|
||||
tempex=tempex->next_added;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -415,7 +417,7 @@ Bool PrsAsmImm(CLex *lx,CAsmArg *arg)
|
||||
lx->undef_hash_entry=NULL;
|
||||
lx->abs_cnts=0;
|
||||
lx->flags&=~(LF_UNRESOLVED+LF_LOCAL);
|
||||
if (!GetExpression(lx,&arg->num.exp))
|
||||
if (!IsLexExpression2Bin(lx,&arg->num.ex))
|
||||
LexSkipEol(lx);
|
||||
else {
|
||||
if (lx->abs_cnts.externs)
|
||||
@@ -430,11 +432,11 @@ Bool PrsAsmImm(CLex *lx,CAsmArg *arg)
|
||||
lx->a->has_locals=TRUE;
|
||||
}
|
||||
} else {
|
||||
arg->num.i=Call(arg->num.exp);
|
||||
arg->num.i=Call(arg->num.ex);
|
||||
arg->num.undef_glbl=lx->undef_hash_entry;
|
||||
lx->undef_hash_entry=NULL;
|
||||
ExpressionDel(arg->num.exp);
|
||||
arg->num.exp=NULL;
|
||||
ExpressionBinDel(arg->num.ex);
|
||||
arg->num.ex=NULL;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
@@ -453,7 +455,7 @@ U0 PrsAsmArg(CLex *lx,CAsmArg *arg)
|
||||
while (TRUE) {
|
||||
if (lx->token==TK_IDENT) {
|
||||
if (temph=lx->hash_entry) {
|
||||
if (temph->type&HTT_TYPE_MASK==HTT_REG) {
|
||||
if (temph->type&HTG_TYPE_MASK==HTT_REG) {
|
||||
tempr=temph;
|
||||
switch (tempr->reg_type) {
|
||||
case REGT_R8:
|
||||
@@ -490,7 +492,7 @@ U0 PrsAsmArg(CLex *lx,CAsmArg *arg)
|
||||
Lex(lx);
|
||||
return;
|
||||
}
|
||||
} else if (temph->type&HTT_TYPE_MASK==HTT_ASM_KEYWORD) {
|
||||
} else if (temph->type&HTG_TYPE_MASK==HTT_ASM_KEYWORD) {
|
||||
switch (temph->user_data0) {
|
||||
case AKW_I8:
|
||||
case AKW_U8:
|
||||
@@ -530,7 +532,7 @@ U0 PrsAsmArg(CLex *lx,CAsmArg *arg)
|
||||
while (lx->token && lx->token!=']') {
|
||||
if (lx->token==TK_IDENT) {
|
||||
if (temph=lx->hash_entry) {
|
||||
if (temph->type&HTT_TYPE_MASK==HTT_REG &&
|
||||
if (temph->type&HTG_TYPE_MASK==HTT_REG &&
|
||||
REGT_R16<=temph(CHashReg *)->reg_type<=REGT_R64) {
|
||||
tempr=temph;
|
||||
if (arg->reg1==CREG_NONE) {
|
||||
@@ -581,88 +583,98 @@ U0 PrsAsmArg(CLex *lx,CAsmArg *arg)
|
||||
}
|
||||
|
||||
|
||||
U0 AsmMakeArgMask(CLex *lx,CAsmArg *arg,I64 *mask)
|
||||
U0 AsmMakeArgMask(CLex *lx,CAsmArg *arg,I64 *_mask)
|
||||
{
|
||||
CAsmCtrl *a=lx->a;
|
||||
if (arg->just_seg) {
|
||||
switch (arg->seg) {
|
||||
case 0: *mask=1<<ARGT_ES|1<<ARGT_SREG; break;
|
||||
case 1: *mask=1<<ARGT_CS|1<<ARGT_SREG; break;
|
||||
case 2: *mask=1<<ARGT_SS|1<<ARGT_SREG; break;
|
||||
case 3: *mask=1<<ARGT_DS|1<<ARGT_SREG; break;
|
||||
case 4: *mask=1<<ARGT_FS|1<<ARGT_SREG; break;
|
||||
case 5: *mask=1<<ARGT_GS|1<<ARGT_SREG; break;
|
||||
case 0: *_mask=1<<ARGT_ES|1<<ARGT_SREG; break;
|
||||
case 1: *_mask=1<<ARGT_CS|1<<ARGT_SREG; break;
|
||||
case 2: *_mask=1<<ARGT_SS|1<<ARGT_SREG; break;
|
||||
case 3: *_mask=1<<ARGT_DS|1<<ARGT_SREG; break;
|
||||
case 4: *_mask=1<<ARGT_FS|1<<ARGT_SREG; break;
|
||||
case 5: *_mask=1<<ARGT_GS|1<<ARGT_SREG; break;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (arg->fstk!=CREG_NONE) {
|
||||
if (arg->fstk)
|
||||
*mask=1<<ARGT_STI;
|
||||
*_mask=1<<ARGT_STI;
|
||||
else
|
||||
*mask=1<<ARGT_ST0|1<<ARGT_STI;
|
||||
*_mask=1<<ARGT_ST0|1<<ARGT_STI;
|
||||
return;
|
||||
}
|
||||
switch (arg->size) {
|
||||
case 0: *mask=0x3FF0FFFFFE; break;
|
||||
case 1: *mask=0x1110111112; break;
|
||||
case 2: *mask=0x2220222224; break;
|
||||
case 4: *mask=0x0440444448; break;
|
||||
case 8: *mask=0x0880888880; break;
|
||||
case 0: *_mask=0x3FF0FFFFFE; break;
|
||||
case 1: *_mask=0x1110111112; break;
|
||||
case 2: *_mask=0x2220222224; break;
|
||||
case 4: *_mask=0x0440444448; break;
|
||||
case 8: *_mask=0x0880888880; break;
|
||||
}
|
||||
if (a->seg_size==64)
|
||||
*mask&= 0xFF0FFFFFFF;
|
||||
*_mask&=0xFF0FFFFFFF;
|
||||
|
||||
if (arg->reg1!=CREG_NONE && arg->imm_or_off_present && !arg->num.i) {
|
||||
if (!arg->num.undef_glbl && !arg->num.undef_local)
|
||||
if (arg->reg1!=CREG_NONE && arg->imm_or_off_present && !arg->num.i &&
|
||||
!arg->num.undef_glbl && !arg->num.undef_local)
|
||||
arg->imm_or_off_present=FALSE; //Zero displacement
|
||||
}
|
||||
|
||||
if (arg->reg2!=CREG_NONE || arg->scale!=1) {
|
||||
*mask&= 0x0000FF0000;
|
||||
*_mask&=0x0000FF0000;
|
||||
return;
|
||||
}
|
||||
|
||||
if (arg->indirect) {
|
||||
if (arg->imm_or_off_present)
|
||||
*mask&=0x00FFFF0000;
|
||||
*_mask&=0x00FFFF0000;
|
||||
else
|
||||
*mask&=0x000FFF0000;
|
||||
*_mask&=0x000FFF0000;
|
||||
} else {
|
||||
if (arg->imm_or_off_present)
|
||||
*mask&=0x000F00F0FE;
|
||||
*_mask&=0x000F00F0FE;
|
||||
else
|
||||
*mask&=0x3F0FFF0F00;
|
||||
*_mask&=0x3F0FFF0F00;
|
||||
}
|
||||
if (arg->seg!=CREG_NONE)
|
||||
*mask&= 0x00FFFF0000;
|
||||
*_mask&=0x00FFFF0000;
|
||||
if (arg->reg1==CREG_NONE) {
|
||||
if (arg->indirect)
|
||||
*mask&=0x00FFFF0000;
|
||||
else if (MIN_I8<=arg->num.i<=MAX_I8)
|
||||
*mask&=0x000000F0FE;
|
||||
else if (MIN_I8<=arg->num.i<=MAX_U8)
|
||||
*mask&=0x000000E0FE;
|
||||
else if (MIN_I16<=arg->num.i<=MAX_I16)
|
||||
*mask&=0x000000E0EE;
|
||||
else if (MIN_I16<=arg->num.i<=MAX_U16)
|
||||
*mask&=0x000000C0EE;
|
||||
else if (MIN_I32<=arg->num.i<=MAX_I32)
|
||||
*mask&=0x000000C0CE;
|
||||
else if (MIN_I32<=arg->num.i<=MAX_U32)
|
||||
*mask&=0x00000080CE;
|
||||
else
|
||||
*mask&=0x000000808E;
|
||||
*_mask&=0x00FFFF0000;
|
||||
else if (arg->num.i<0) {
|
||||
if (arg->num.i>=MIN_I8)
|
||||
*_mask&=0xF08E;
|
||||
else if (arg->num.i>=MIN_I16)
|
||||
*_mask&=0xE08E;
|
||||
else if (arg->num.i>=MIN_I32)
|
||||
*_mask&=0xC08E;
|
||||
else
|
||||
*_mask&=0x808E;
|
||||
} else {
|
||||
if (arg->num.i<=MAX_I8)
|
||||
*_mask&=0xF0FE;
|
||||
else if (arg->num.i<=MAX_U8)
|
||||
*_mask&=0xE0FE;
|
||||
else if (arg->num.i<=MAX_I16)
|
||||
*_mask&=0xE0EE;
|
||||
else if (arg->num.i<=MAX_U16)
|
||||
*_mask&=0xC0EE;
|
||||
else if (arg->num.i<=MAX_I32)
|
||||
*_mask&=0xC0CE;
|
||||
else if (arg->num.i<=MAX_U32)
|
||||
*_mask&=0x80CE;
|
||||
else
|
||||
*_mask&=0x808E;
|
||||
}
|
||||
} else {
|
||||
*mask&= 0x3F00FF0F00;
|
||||
*_mask&= 0x3F00FF0F00;
|
||||
if (!arg->indirect) //M8-M64
|
||||
*mask&= 0xFFFF0FFFFF;
|
||||
*_mask&=0xFFFF0FFFFF;
|
||||
}
|
||||
switch (arg->reg1) {
|
||||
case CREG_RAX: *_mask&=~0x3000000000; break;
|
||||
case CREG_RCX: *_mask&=~0x2F00000000; break;
|
||||
case CREG_RDX: *_mask&=~0x1F00000000; break;
|
||||
default: *_mask&=~0x3F00000000;
|
||||
}
|
||||
if (arg->reg1)
|
||||
*mask&= 0x30FFFFFFFF;
|
||||
if (arg->reg1!=1)
|
||||
*mask&= 0x2FFFFFFFFF;
|
||||
if (arg->reg1!=2)
|
||||
*mask&= 0x1FFFFFFFFF;
|
||||
}
|
||||
|
||||
Bool AsmStoreNum(CLex *lx,CAsmNum2 *num2,I64 cnt,Bool U8_avail)
|
||||
@@ -671,21 +683,16 @@ Bool AsmStoreNum(CLex *lx,CAsmNum2 *num2,I64 cnt,Bool U8_avail)
|
||||
I64 i;
|
||||
CExeAbsAddr *tempa;
|
||||
|
||||
if (!num2->lit)
|
||||
if (!num2->imm_flag)
|
||||
num2->num.i-=num2->rel;
|
||||
for (i=0;i<cnt;i++) {
|
||||
if (num2->U8_cnt==1) {
|
||||
if (num2->num.undef_local)
|
||||
AsmUnresolvedAdd(a,num2->num.exp,EIE_REL_U8+num2->lit,a->ip,num2->rel,
|
||||
num2->num.undef_local,lx->cur_lfn->line_num,U8_avail,FALSE);
|
||||
else if (num2->num.undef_glbl)
|
||||
AsmUnresolvedAdd(a,num2->num.exp,EIE_REL_U8+num2->lit,a->ip,num2->rel,
|
||||
num2->num.undef_glbl,lx->cur_lfn->line_num,U8_avail,TRUE);
|
||||
else {
|
||||
if (!num2->lit && !(MIN_I8<=num2->num.i<=MAX_I8))
|
||||
LexExcept(lx,"ST_BRANCH_OUT_OF_RANGE");
|
||||
}
|
||||
if (num2->lit) {
|
||||
if (num2->num.undef_local||num2->num.undef_glbl)
|
||||
AsmUnresolvedAdd(a,num2->num.ex,EIE_REL_U8+num2->imm_flag,a->ip,num2->rel,
|
||||
num2->num.undef_local,num2->num.undef_glbl,lx->cur_lfn->line_num,U8_avail);
|
||||
else if (!num2->imm_flag && !(MIN_I8<=num2->num.i<=MAX_I8))
|
||||
LexExcept(lx,"ST_BRANCH_OUT_OF_RANGE");
|
||||
if (num2->imm_flag) {
|
||||
if (num2->num.abs_cnts.abs_addres & 1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
@@ -702,98 +709,82 @@ Bool AsmStoreNum(CLex *lx,CAsmNum2 *num2,I64 cnt,Bool U8_avail)
|
||||
tempa->type=EAA_SUB_U8;
|
||||
}
|
||||
}
|
||||
AsmStoreCodeU8(lx,num2->num.i.u8[0]);
|
||||
} else if (num2->U8_cnt==2) {
|
||||
if (num2->num.undef_local)
|
||||
AsmUnresolvedAdd(a,num2->num.exp,EIE_REL_U16+num2->lit,a->ip,num2->rel,
|
||||
num2->num.undef_local,lx->cur_lfn->line_num,U8_avail,FALSE);
|
||||
else if (num2->num.undef_glbl)
|
||||
AsmUnresolvedAdd(a,num2->num.exp,EIE_REL_U16+num2->lit,a->ip,num2->rel,
|
||||
num2->num.undef_glbl,lx->cur_lfn->line_num,U8_avail,TRUE);
|
||||
else if (!num2->lit && !(MIN_I16<=num2->num.i<=MAX_I16))
|
||||
LexExcept(lx,"ST_BRANCH_OUT_OF_RANGE");
|
||||
if (num2->lit) {
|
||||
if (num2->num.abs_cnts.abs_addres & 1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
tempa->ip=a->ip;
|
||||
tempa->type=EAA_ADD_U16;
|
||||
AsmStoreCodeU8(lx,num2->num.i);
|
||||
} else {
|
||||
if (num2->U8_cnt==2) {
|
||||
if (num2->num.undef_local||num2->num.undef_glbl)
|
||||
AsmUnresolvedAdd(a,num2->num.ex,EIE_REL_U16+num2->imm_flag,a->ip,num2->rel,
|
||||
num2->num.undef_local,num2->num.undef_glbl,lx->cur_lfn->line_num,U8_avail);
|
||||
else if (!num2->imm_flag && !(MIN_I16<=num2->num.i<=MAX_I16))
|
||||
LexExcept(lx,"ST_BRANCH_OUT_OF_RANGE");
|
||||
if (num2->imm_flag) {
|
||||
if (num2->num.abs_cnts.abs_addres & 1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
tempa->ip=a->ip;
|
||||
tempa->type=EAA_ADD_U16;
|
||||
}
|
||||
} else {
|
||||
if (num2->num.abs_cnts.c_addres & 1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
tempa->ip=a->ip;
|
||||
tempa->type=EAA_SUB_U16;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (num2->num.abs_cnts.c_addres & 1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
tempa->ip=a->ip;
|
||||
tempa->type=EAA_SUB_U16;
|
||||
AsmStoreCodeU8(lx,num2->num.i.u8[0]);
|
||||
AsmStoreCodeU8(lx,num2->num.i.u8[1]);
|
||||
} else if (num2->U8_cnt==4) {
|
||||
if (num2->num.undef_local||num2->num.undef_glbl)
|
||||
AsmUnresolvedAdd(a,num2->num.ex,EIE_REL_U32+num2->imm_flag,a->ip,num2->rel,
|
||||
num2->num.undef_local,num2->num.undef_glbl,lx->cur_lfn->line_num,U8_avail);
|
||||
else if (!num2->imm_flag && !(MIN_I32<=num2->num.i<=MAX_I32))
|
||||
LexExcept(lx,"ST_BRANCH_OUT_OF_RANGE");
|
||||
if (num2->imm_flag) {
|
||||
if (num2->num.abs_cnts.abs_addres & 1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
tempa->ip=a->ip;
|
||||
tempa->type=EAA_ADD_U32;
|
||||
}
|
||||
} else {
|
||||
if (num2->num.abs_cnts.c_addres & 1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
tempa->ip=a->ip;
|
||||
tempa->type=EAA_SUB_U32;
|
||||
}
|
||||
}
|
||||
AsmStoreCodeU32(lx,num2->num.i);
|
||||
} else if (num2->U8_cnt==8) {
|
||||
if (num2->num.undef_local||num2->num.undef_glbl)
|
||||
AsmUnresolvedAdd(a,num2->num.ex,EIE_REL_U64+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) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
tempa->ip=a->ip;
|
||||
tempa->type=EAA_ADD_U64;
|
||||
}
|
||||
} else {
|
||||
if (num2->num.abs_cnts.c_addres & 1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
tempa->ip=a->ip;
|
||||
tempa->type=EAA_SUB_U64;
|
||||
}
|
||||
}
|
||||
AsmStoreCodeU64(lx,num2->num.i);
|
||||
}
|
||||
AsmStoreCodeU8(lx,num2->num.i.u8[0]);
|
||||
AsmStoreCodeU8(lx,num2->num.i.u8[1]);
|
||||
if (U8_avail && !num2->num.undef_local && !num2->num.undef_glbl &&
|
||||
!num2->lit && -124<=num2->num.i<=123) {
|
||||
LexPutWarn(lx,"ST_COULD_USE_I8_DISP");
|
||||
return FALSE;
|
||||
}
|
||||
} else if (num2->U8_cnt==4) {
|
||||
if (num2->num.undef_local)
|
||||
AsmUnresolvedAdd(a,num2->num.exp,EIE_REL_U32+num2->lit,a->ip,num2->rel,
|
||||
num2->num.undef_local,lx->cur_lfn->line_num,U8_avail,FALSE);
|
||||
else if (num2->num.undef_glbl)
|
||||
AsmUnresolvedAdd(a,num2->num.exp,EIE_REL_U32+num2->lit,a->ip,num2->rel,
|
||||
num2->num.undef_glbl,lx->cur_lfn->line_num,U8_avail,TRUE);
|
||||
if (num2->lit) {
|
||||
if (num2->num.abs_cnts.abs_addres & 1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
tempa->ip=a->ip;
|
||||
tempa->type=EAA_ADD_U32;
|
||||
}
|
||||
} else {
|
||||
if (num2->num.abs_cnts.c_addres & 1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
tempa->ip=a->ip;
|
||||
tempa->type=EAA_SUB_U32;
|
||||
}
|
||||
}
|
||||
AsmStoreCodeU32(lx,num2->num.i.u32[0]);
|
||||
if (U8_avail && !num2->num.undef_local && !num2->num.undef_glbl &&
|
||||
!num2->lit && -124<=num2->num.i<=123) {
|
||||
LexPutWarn(lx,"ST_COULD_USE_I8_DISP");
|
||||
return FALSE;
|
||||
}
|
||||
} else if (num2->U8_cnt==8) {
|
||||
//TODO
|
||||
if (num2->num.undef_local)
|
||||
AsmUnresolvedAdd(a,num2->num.exp,EIE_REL_U32+num2->lit,a->ip,num2->rel,
|
||||
num2->num.undef_local,lx->cur_lfn->line_num,U8_avail,FALSE);
|
||||
else if (num2->num.undef_glbl)
|
||||
AsmUnresolvedAdd(a,num2->num.exp,EIE_REL_U32+num2->lit,a->ip,num2->rel,
|
||||
num2->num.undef_glbl,lx->cur_lfn->line_num,U8_avail,TRUE);
|
||||
if (num2->lit) {
|
||||
if (num2->num.abs_cnts.abs_addres & 1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
tempa->ip=a->ip;
|
||||
tempa->type=EAA_ADD_U64;
|
||||
}
|
||||
} else {
|
||||
if (num2->num.abs_cnts.c_addres & 1) {
|
||||
tempa=CAlloc(sizeof(CExeAbsAddr));
|
||||
tempa->next=a->abss;
|
||||
a->abss=tempa;
|
||||
tempa->ip=a->ip;
|
||||
tempa->type=EAA_SUB_U64;
|
||||
}
|
||||
}
|
||||
AsmStoreCodeU64(lx,num2->num.i);
|
||||
if (U8_avail && !num2->num.undef_local && !num2->num.undef_glbl &&
|
||||
!num2->lit && -124<=num2->num.i<=123) {
|
||||
!num2->imm_flag && -124<=num2->num.i<=123) {
|
||||
LexPutWarn(lx,"ST_COULD_USE_I8_DISP");
|
||||
return FALSE;
|
||||
}
|
||||
@@ -804,8 +795,7 @@ Bool AsmStoreNum(CLex *lx,CAsmNum2 *num2,I64 cnt,Bool U8_avail)
|
||||
|
||||
U8 asm_seg_prefixes[6]={0x26,0x2E,0x36,0x3E,0x64,0x65};
|
||||
|
||||
Bool AsmCodeInstruction(CLex *lx,
|
||||
CHashOpcode *tempo,I64 argcnt)
|
||||
Bool PrsAsmInstruction(CLex *lx,CHashOpcode *tempo,I64 argcnt)
|
||||
{
|
||||
CAsmCtrl *a=lx->a;
|
||||
I64 i,j,a1,a2,om,seg,arg1mask,arg2mask;
|
||||
@@ -839,8 +829,8 @@ Bool AsmCodeInstruction(CLex *lx,
|
||||
else if (!(tempi->flags & IEF_NO_REX))
|
||||
cur.REX=0x40;
|
||||
}
|
||||
cur.disp.lit=1;
|
||||
cur.imm.lit=1;
|
||||
cur.disp.imm_flag=TRUE;
|
||||
cur.imm.imm_flag=TRUE;
|
||||
om=tempi->opcode_modifier;
|
||||
a1=tempi->arg1;
|
||||
a2=tempi->arg2;
|
||||
@@ -863,20 +853,20 @@ Bool AsmCodeInstruction(CLex *lx,
|
||||
|
||||
if (om==OM_CB) {
|
||||
cur.imm.U8_cnt=1;
|
||||
cur.imm.lit=0;
|
||||
cur.imm.imm_flag=FALSE;
|
||||
} else if (om==OM_CW) {
|
||||
cur.imm.U8_cnt=2;
|
||||
cur.imm.lit=0;
|
||||
cur.imm.imm_flag=FALSE;
|
||||
} else if (om==OM_CD) {
|
||||
cur.imm.U8_cnt=4;
|
||||
cur.imm.lit=0;
|
||||
cur.imm.imm_flag=FALSE;
|
||||
}
|
||||
|
||||
if (argcnt==1) {
|
||||
if (best.U8_cnt!=255 && !found_second_possible && !best.is_dft) {
|
||||
found_second_possible=TRUE;
|
||||
if (!a->arg1.size)
|
||||
PrintFWarn("%S%s,%04d\n","ST_NO_SIZE_SPECIFIED",
|
||||
PrintWarn("%S%s,%04d\n","ST_NO_SIZE_SPECIFIED",
|
||||
lx->cur_lfn->name,lx->cur_lfn->line_num-1);
|
||||
}
|
||||
if (tempi->flags & IEF_PLUS_OPCODE) {
|
||||
@@ -903,7 +893,7 @@ Bool AsmCodeInstruction(CLex *lx,
|
||||
MemCpy(&cur.disp.num,&tempa1->num,sizeof(CAsmNum));
|
||||
cur.disp.U8_cnt=4;
|
||||
if (a->seg_size==64)
|
||||
cur.disp.lit=0;
|
||||
cur.disp.imm_flag=FALSE;
|
||||
} else {
|
||||
if (tempa1->reg2==CREG_NONE && tempa1->scale==1) {
|
||||
cur.ModrM|=tempa1->reg1&7;
|
||||
@@ -951,7 +941,7 @@ Bool AsmCodeInstruction(CLex *lx,
|
||||
if (!ModrM_complete) {
|
||||
if (tempa1->imm_or_off_present) {
|
||||
MemCpy(&cur.disp.num,&tempa1->num,sizeof(CAsmNum));
|
||||
if (!cur.disp.num.exp && MIN_I8<=cur.disp.num.i<=MAX_I8) {
|
||||
if (!cur.disp.num.ex && MIN_I8<=cur.disp.num.i<=MAX_I8) {
|
||||
cur.ModrM|=0x40;
|
||||
cur.disp.U8_cnt=1;
|
||||
} else if (a->seg_size==16) {
|
||||
@@ -983,7 +973,7 @@ Bool AsmCodeInstruction(CLex *lx,
|
||||
if (best.U8_cnt!=255 && !found_second_possible && !best.is_dft) {
|
||||
found_second_possible=TRUE;
|
||||
if (!a->arg1.size && !a->arg2.size)
|
||||
PrintFWarn("%S%s,%04d\n","ST_NO_SIZE_SPECIFIED",
|
||||
PrintWarn("%S%s,%04d\n","ST_NO_SIZE_SPECIFIED",
|
||||
lx->cur_lfn->name,lx->cur_lfn->line_num-1);
|
||||
}
|
||||
if (tempi->flags & IEF_PLUS_OPCODE) {
|
||||
@@ -1091,11 +1081,11 @@ Bool AsmCodeInstruction(CLex *lx,
|
||||
MemCpy(&cur.disp.num,&tempa1->num,sizeof(CAsmNum));
|
||||
cur.disp.U8_cnt=4;
|
||||
if (a->seg_size==64)
|
||||
cur.disp.lit=0;
|
||||
cur.disp.imm_flag=FALSE;
|
||||
} else {
|
||||
if (tempa1->imm_or_off_present) {
|
||||
MemCpy(&cur.disp.num,&tempa1->num,sizeof(CAsmNum));
|
||||
if (!cur.disp.num.exp && MIN_I8<=cur.disp.num.i<=MAX_I8) {
|
||||
if (!cur.disp.num.ex && MIN_I8<=cur.disp.num.i<=MAX_I8) {
|
||||
cur.ModrM|=0x40;
|
||||
cur.disp.U8_cnt=1;
|
||||
} else if (a->seg_size==16) {
|
||||
@@ -1159,8 +1149,8 @@ Bool AsmCodeInstruction(CLex *lx,
|
||||
if (a->seg_size==64 && cur.REX&0x40==0x40 &&
|
||||
(cur.REX!=0x40 || tempi->flags&IEF_40_REX || cur.has_REX) &&
|
||||
(cur.REX&7 || !(tempi->flags&IEF_REX_ONLY_R8_R15 ||
|
||||
tempi->flags&IEF_REX_XOR_LIKE && tempa1->reg1==tempa2->reg1 && cur.ModrM&0xC0==0xC0)))
|
||||
cur.U8_cnt++;
|
||||
tempi->flags&IEF_REX_XOR_LIKE && tempa1->reg1==tempa2->reg1 && cur.ModrM&0xC0==0xC0)))
|
||||
cur.U8_cnt++;
|
||||
if (cur.U8_cnt<best.U8_cnt &&
|
||||
!(tempi->flags & IEF_DONT_SWITCH_MODES &&
|
||||
(cur.has_addr_prefix || cur.has_operand_prefix)))
|
||||
@@ -1183,8 +1173,8 @@ Bool AsmCodeInstruction(CLex *lx,
|
||||
if (a->seg_size==64 && best.REX&0x40==0x40 &&
|
||||
(best.REX!=0x40 || tempi->flags&IEF_40_REX || best.has_REX) &&
|
||||
(best.REX&7||!(tempi->flags&IEF_REX_ONLY_R8_R15 ||
|
||||
tempi->flags&IEF_REX_XOR_LIKE && tempa1->reg1==tempa2->reg1 && best.ModrM&0xC0==0xC0)))
|
||||
AsmStoreCodeU8(lx,best.REX);
|
||||
tempi->flags&IEF_REX_XOR_LIKE && tempa1->reg1==tempa2->reg1 && best.ModrM&0xC0==0xC0)))
|
||||
AsmStoreCodeU8(lx,best.REX);
|
||||
for (j=0;j<tempi->opcode_cnt-1;j++)
|
||||
AsmStoreCodeU8(lx,tempi->opcode[j]);
|
||||
AsmStoreCodeU8(lx,best.last_opcode_U8);
|
||||
@@ -1213,7 +1203,7 @@ Bool AsmCodeInstruction(CLex *lx,
|
||||
}
|
||||
|
||||
|
||||
U0 DefineU8s(CLex *lx,I64 U8_cnt)
|
||||
U0 PrsAsmDefine(CLex *lx,I64 U8_cnt)
|
||||
{
|
||||
CAsmCtrl *a=lx->a;
|
||||
Bool is_dup;
|
||||
@@ -1236,7 +1226,7 @@ U0 DefineU8s(CLex *lx,I64 U8_cnt)
|
||||
lx->abs_cnts=0;
|
||||
lx->undef_hash_entry=NULL;
|
||||
lx->flags&=~(LF_UNRESOLVED+LF_LOCAL);
|
||||
if (!GetExpression(lx,&num2.num.exp))
|
||||
if (!IsLexExpression2Bin(lx,&num2.num.ex))
|
||||
LexSkipEol(lx);
|
||||
else {
|
||||
if (lx->abs_cnts.externs)
|
||||
@@ -1251,8 +1241,8 @@ U0 DefineU8s(CLex *lx,I64 U8_cnt)
|
||||
lx->undef_hash_entry=NULL;
|
||||
}
|
||||
} else {
|
||||
i=Call(num2.num.exp);
|
||||
ExpressionDel(num2.num.exp);
|
||||
i=Call(num2.num.ex);
|
||||
ExpressionBinDel(num2.num.ex);
|
||||
}
|
||||
}
|
||||
if (lx->token==TK_IDENT && lx->hash_entry) {
|
||||
@@ -1261,14 +1251,14 @@ U0 DefineU8s(CLex *lx,I64 U8_cnt)
|
||||
if (Lex(lx)!='(')
|
||||
LexExcept(lx,"ST_EXPECTING_LEFT_PAREN");
|
||||
Lex(lx); //skip (
|
||||
dup_val=AsmExpressionEval(lx);
|
||||
dup_val=AsmLexExpression(lx);
|
||||
if (lx->token!=')')
|
||||
LexExcept(lx,"ST_EXPECTING_RIGHT_PAREN");
|
||||
Lex(lx); //SKIP )
|
||||
}
|
||||
}
|
||||
num2.rel=0;
|
||||
num2.lit=1;
|
||||
num2.imm_flag=TRUE;
|
||||
num2.num.abs_cnts=lx->abs_cnts;
|
||||
if (is_dup) {
|
||||
if (num2.num.undef_local || num2.num.undef_glbl)
|
||||
@@ -1296,12 +1286,12 @@ U0 PrsAsmBlk(CLex *lx)
|
||||
old_hash_mask=lx->htc.hash_mask,
|
||||
old_flags=lx->flags & LF_ASM_EXPRESSIONS;
|
||||
CHashOpcode *tempo;
|
||||
CHashExport *tempess;
|
||||
CHashExport *tempex;
|
||||
U8 *next_last_label;
|
||||
|
||||
a->seg_size=64;
|
||||
lx->flags|=LF_ASM_EXPRESSIONS;
|
||||
lx->htc.hash_mask=lx->htc.hash_mask&~(HTF_FLAGS_MASK|HTT_FILE|HTT_INTERNAL_TYPE|HTT_MODULE)|HTT_ASM_KEYWORD;
|
||||
lx->htc.hash_mask=lx->htc.hash_mask&~(HTG_FLAGS_MASK|HTT_FILE|HTT_INTERNAL_TYPE|HTT_MODULE)|HTT_ASM_KEYWORD;
|
||||
if (lx->token!='{')
|
||||
LexExcept(lx,"ST_EXPECTING_LEFT_BRACE");
|
||||
else
|
||||
@@ -1318,13 +1308,13 @@ U0 PrsAsmBlk(CLex *lx)
|
||||
if (lx->token!=TK_IDENT)
|
||||
LexExcept(lx,"ST_EXPECTING_IDENTIFIER");
|
||||
else {
|
||||
tempess=NULL;
|
||||
tempess=CAlloc(sizeof(CHashExport));
|
||||
tempess->str=lx->ident;
|
||||
tempex=NULL;
|
||||
tempex=CAlloc(sizeof(CHashExport));
|
||||
tempex->str=lx->ident;
|
||||
lx->ident=0;
|
||||
tempess->type=HTT_EXPORT_SYS_SYM|HTF_UNRESOLVED;
|
||||
HashAdd(tempess,lx->htc.glbl_hash_table);
|
||||
tempess->type|=HTF_IMPORT;
|
||||
tempex->type=HTT_EXPORT_SYS_SYM|HTF_UNRESOLVED;
|
||||
HashAdd(tempex,lx->htc.glbl_hash_table);
|
||||
tempex->type|=HTF_IMPORT;
|
||||
if (Lex(lx)==',')
|
||||
Lex(lx); //skip ','
|
||||
}
|
||||
@@ -1341,12 +1331,12 @@ U0 PrsAsmBlk(CLex *lx)
|
||||
LexExcept(lx,"ST_JUST_ONE_ORG_ALLOWED");
|
||||
if (a->ip)
|
||||
LexExcept(lx,"ST_ORG_MUST_BE_AT_BEGINNING");
|
||||
a->module_org=AsmExpressionEval(lx);
|
||||
a->module_org=AsmLexExpression(lx);
|
||||
break;
|
||||
case AKW_ALIGN:
|
||||
if (lx->htc.local_var_lst)
|
||||
LexExcept(lx,"ST_NO_FUN_ASM_ALIGN");
|
||||
i=AsmExpressionEval(lx);
|
||||
i=AsmLexExpression(lx);
|
||||
if (Bsf(i)!=Bsr(i))
|
||||
LexExcept(lx,"ST_ALIGN_MUST_BE_POWER_OF_TWO");
|
||||
if (!(lx->flags&LF_AOT_COMPILE) && i>8)
|
||||
@@ -1355,21 +1345,21 @@ U0 PrsAsmBlk(CLex *lx)
|
||||
i=CeilU64(a->ip,i);
|
||||
if (lx->token==',')
|
||||
Lex(lx);
|
||||
k=AsmExpressionEval(lx);
|
||||
k=AsmLexExpression(lx);
|
||||
for (j=a->ip;j<i;j++)
|
||||
AsmStoreCodeU8(lx,k);
|
||||
break;
|
||||
case AKW_DU8:
|
||||
DefineU8s(lx,1);
|
||||
PrsAsmDefine(lx,1);
|
||||
break;
|
||||
case AKW_DU16:
|
||||
DefineU8s(lx,2);
|
||||
PrsAsmDefine(lx,2);
|
||||
break;
|
||||
case AKW_DU32:
|
||||
DefineU8s(lx,4);
|
||||
PrsAsmDefine(lx,4);
|
||||
break;
|
||||
case AKW_DU64:
|
||||
DefineU8s(lx,8);
|
||||
PrsAsmDefine(lx,8);
|
||||
break;
|
||||
case AKW_LIST:
|
||||
a->lst=TRUE;
|
||||
@@ -1406,7 +1396,7 @@ U0 PrsAsmBlk(CLex *lx)
|
||||
}
|
||||
}
|
||||
}
|
||||
AsmCodeInstruction(lx,tempo,argcnt);
|
||||
PrsAsmInstruction(lx,tempo,argcnt);
|
||||
} else if (lx->hash_entry->type & HTT_EXPORT_SYS_SYM) {
|
||||
if (Btr(&lx->hash_entry->type,HTf_UNRESOLVED)) {
|
||||
if (lx->hash_entry->type & HTF_LOCAL) {
|
||||
@@ -1441,27 +1431,27 @@ U0 PrsAsmBlk(CLex *lx)
|
||||
LexExcept(lx,"ST_SYNTAX_ERROR");
|
||||
} else {
|
||||
if (lx->token==TK_IDENT) {
|
||||
tempess=CAlloc(sizeof(CHashExport));
|
||||
tempess->str=lx->ident;
|
||||
tempex=CAlloc(sizeof(CHashExport));
|
||||
tempex->str=lx->ident;
|
||||
lx->ident=0;
|
||||
tempess->type=HTT_EXPORT_SYS_SYM;
|
||||
tempess->val=a->ip;
|
||||
tempex->type=HTT_EXPORT_SYS_SYM;
|
||||
tempex->val=a->ip;
|
||||
Lex(lx); //Skip ident
|
||||
if (lx->token!=':' && lx->token!=TK_DBL_COLON)
|
||||
LexExcept(lx,"ST_EXPECTING_COLON");
|
||||
else {
|
||||
if (*tempess->str=='@' && tempess->str[1]=='@') {
|
||||
if (*tempex->str=='@' && tempex->str[1]=='@') {
|
||||
if (lx->token==TK_DBL_COLON)
|
||||
LexExcept(lx,"ST_NO_LOCAL_GLBL_EXPORT");
|
||||
HashAdd(tempess,lx->htc.local_hash_table);
|
||||
HashAdd(tempex,lx->htc.local_hash_table);
|
||||
a->has_locals=TRUE;
|
||||
} else
|
||||
HashAdd(tempess,lx->htc.glbl_hash_table);
|
||||
HashAdd(tempex,lx->htc.glbl_hash_table);
|
||||
if (lx->token==TK_DBL_COLON) {
|
||||
tempess->type|=HTF_EXPORT;
|
||||
SetSrcFileInfo(lx,tempess);
|
||||
tempex->type|=HTF_EXPORT;
|
||||
SetSrcFileInfo(lx,tempex);
|
||||
AsmLocalsResolve(lx);
|
||||
a->last_label=tempess->str;
|
||||
a->last_label=tempex->str;
|
||||
}
|
||||
Lex(lx);
|
||||
}
|
||||
|
||||
+115
-129
@@ -620,9 +620,9 @@ U0 ICZero(CIntermediateCode *tempi,I64 r)
|
||||
ICU16(tempi,0xC033+r<<8+r<<11);
|
||||
}
|
||||
|
||||
U0 ICOr(CIntermediateCode *tempi,I64 r)
|
||||
U0 ICTest(CIntermediateCode *tempi,I64 r)
|
||||
{
|
||||
I64 i=0xC00B48; //OR R,R
|
||||
I64 i=0xC08548; //TEST R,R
|
||||
if (r>7) {
|
||||
i+=5;
|
||||
r&=7;
|
||||
@@ -942,7 +942,7 @@ U0 ICAddEct(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,
|
||||
ICMov(tempi,t1,r1,d1,TY_REG+IT_I64,result_reg,0,ip);
|
||||
}
|
||||
|
||||
U0 ICAddConst(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,
|
||||
U0 ICAddSubEctImm(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,
|
||||
I64 t2,I64 r2,I64 d2,I64 d,I64 op,I64 ip)
|
||||
{
|
||||
I64 i,r;
|
||||
@@ -1089,7 +1089,7 @@ U0 ICAddConst(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,
|
||||
}
|
||||
break;
|
||||
case TY_STK>>4:
|
||||
ICAddConst(tempi,TY_REG+IT_I64,CREG_RAX,0,t2,r2,d2,d,op,ip);
|
||||
ICAddSubEctImm(tempi,TY_REG+IT_I64,CREG_RAX,0,t2,r2,d2,d,op,ip);
|
||||
ICPushRegs(tempi,1<<CREG_RAX);
|
||||
return;
|
||||
}
|
||||
@@ -1272,7 +1272,7 @@ U0 ICFUnaryMinus(CLex *lx,CIntermediateCode *tempi,U8 *buf2,I64 ip)
|
||||
if (!(builtin1=ICBuiltInFloatConst(p1->disp(F64)))) {
|
||||
t1=TY_RIP_DISP32+IT_I64;
|
||||
r1=CREG_RIP;
|
||||
d1=CBFloatConstFind(lx,p1->disp(F64))+buf2;
|
||||
d1=LCCFloatConstFind(lx,p1->disp(F64))+buf2;
|
||||
}
|
||||
} else {
|
||||
ICPush(tempi,p1->type,p1->reg,p1->disp,ip);
|
||||
@@ -1334,7 +1334,7 @@ U0 ICFPow(CLex *lx,CIntermediateCode *tempi,U8 *buf,I64 ip)
|
||||
{ //for POW
|
||||
I64 i;
|
||||
CExeImportExport *tempe;
|
||||
CHashExport *tempess=HashFind("SYS_POW",lx->htc.hash_table_lst,HTT_EXPORT_SYS_SYM);
|
||||
CHashExport *tempex=HashFind("SYS_POW",lx->htc.hash_table_lst,HTT_EXPORT_SYS_SYM);
|
||||
|
||||
if (tempi->ic_flags & ICF_P1_FIRST) {
|
||||
ICMov(tempi,TY_REG+IT_I64,CREG_RDX,0,
|
||||
@@ -1348,22 +1348,22 @@ U0 ICFPow(CLex *lx,CIntermediateCode *tempi,U8 *buf,I64 ip)
|
||||
tempi->p1.type,tempi->p1.reg,tempi->p1.disp,ip);
|
||||
}
|
||||
if (lx->flags&LF_AOT_COMPILE) {
|
||||
if (!tempess) {
|
||||
tempess=CAlloc(sizeof(CHashExport));
|
||||
tempess->str=StrNew("SYS_POW");
|
||||
tempess->type=HTT_EXPORT_SYS_SYM|HTF_UNRESOLVED|HTF_IMPORT;
|
||||
HashAdd(tempess,lx->htc.glbl_hash_table);
|
||||
if (!tempex) {
|
||||
tempex=CAlloc(sizeof(CHashExport));
|
||||
tempex->str=StrNew("SYS_POW");
|
||||
tempex->type=HTT_EXPORT_SYS_SYM|HTF_UNRESOLVED|HTF_IMPORT;
|
||||
HashAdd(tempex,lx->htc.glbl_hash_table);
|
||||
}
|
||||
if (tempess->type&HTF_IMPORT) {
|
||||
if (GetOpt(OPTf_USE_LIT64)) {
|
||||
if (tempex->type&HTF_IMPORT) {
|
||||
if (GetOpt(OPTf_USE_IMM64)) {
|
||||
ICU16(tempi,0xBB48);
|
||||
ICU64(tempi,0);
|
||||
if (buf) {
|
||||
tempe=CAlloc(sizeof(CExeImportExport));
|
||||
tempe->type=EIE_LIT_U64;
|
||||
tempe->type=EIE_IMM_U64;
|
||||
tempe->ip=ip+tempi->ic_cnt-8;
|
||||
tempe->next=tempess->ie_lst;
|
||||
tempess->ie_lst=tempe;
|
||||
tempe->next=tempex->ie_lst;
|
||||
tempex->ie_lst=tempe;
|
||||
}
|
||||
ICU16(tempi,0xD3FF);
|
||||
} else {
|
||||
@@ -1373,19 +1373,19 @@ U0 ICFPow(CLex *lx,CIntermediateCode *tempi,U8 *buf,I64 ip)
|
||||
tempe=CAlloc(sizeof(CExeImportExport));
|
||||
tempe->type=EIE_REL_U32;
|
||||
tempe->ip=ip+tempi->ic_cnt-4;
|
||||
tempe->next=tempess->ie_lst;
|
||||
tempess->ie_lst=tempe;
|
||||
tempe->next=tempex->ie_lst;
|
||||
tempex->ie_lst=tempe;
|
||||
}
|
||||
}
|
||||
} else { //Kernel
|
||||
if (tempess->type&HTF_UNRESOLVED)
|
||||
if (tempex->type&HTF_UNRESOLVED)
|
||||
throw(EXCEPT_COMPILER,23);
|
||||
else {
|
||||
i=tempess->val-(ip+tempi->ic_cnt+5);
|
||||
i=tempex->val-(ip+tempi->ic_cnt+5);
|
||||
if (!(MIN_I32<=i<=MAX_I32)) {
|
||||
throw(EXCEPT_COMPILER,23);
|
||||
// ICU16(tempi,0xBB48);
|
||||
// ICU64(tempi,tempess->val);
|
||||
// ICU64(tempi,tempex->val);
|
||||
// ICU16(tempi,0xD3FF);
|
||||
} else {
|
||||
ICU8(tempi,0xE8);
|
||||
@@ -1394,10 +1394,10 @@ U0 ICFPow(CLex *lx,CIntermediateCode *tempi,U8 *buf,I64 ip)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
i=tempess->val-(ip+tempi->ic_cnt+5);
|
||||
i=tempex->val-(ip+tempi->ic_cnt+5);
|
||||
if (!(MIN_I32<=i<=MAX_I32)) {
|
||||
ICU16(tempi,0xBB48);
|
||||
ICU64(tempi,tempess->val);
|
||||
ICU64(tempi,tempex->val);
|
||||
ICU16(tempi,0xD3FF);
|
||||
} else {
|
||||
ICU8(tempi,0xE8);
|
||||
@@ -1443,7 +1443,7 @@ U0 ICFOp(CLex *lx,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
if (!(builtin2=ICBuiltInFloatConst(p2->disp(F64)))) {
|
||||
t2=TY_RIP_DISP32+IT_I64;
|
||||
r2=CREG_RIP;
|
||||
d2=CBFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
d2=LCCFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
}
|
||||
} else {
|
||||
ICPush(tempi,p2->type,p2->reg,p2->disp,ip);
|
||||
@@ -1466,7 +1466,7 @@ U0 ICFOp(CLex *lx,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
if (!(builtin1=ICBuiltInFloatConst(p1->disp(F64)))) {
|
||||
t1=TY_RIP_DISP32+IT_I64;
|
||||
r1=CREG_RIP;
|
||||
d1=CBFloatConstFind(lx,p1->disp(F64))+buf2;
|
||||
d1=LCCFloatConstFind(lx,p1->disp(F64))+buf2;
|
||||
}
|
||||
} else {
|
||||
ICPush(tempi,p1->type,p1->reg,p1->disp,ip);
|
||||
@@ -1486,7 +1486,7 @@ U0 ICFOp(CLex *lx,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
if (!(builtin2=ICBuiltInFloatConst(p2->disp(F64)))) {
|
||||
t2=TY_RIP_DISP32+IT_I64;
|
||||
r2=CREG_RIP;
|
||||
d2=CBFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
d2=LCCFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
}
|
||||
} else {
|
||||
ICPush(tempi,p2->type,p2->reg,p2->disp,ip);
|
||||
@@ -1520,7 +1520,7 @@ U0 ICFOp(CLex *lx,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
if (!(builtin2=ICBuiltInFloatConst(p2->disp(F64)))) {
|
||||
t2=TY_RIP_DISP32+IT_I64;
|
||||
r2=CREG_RIP;
|
||||
d2=CBFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
d2=LCCFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
}
|
||||
} else {
|
||||
ICPush(tempi,p2->type,p2->reg,p2->disp,ip);
|
||||
@@ -1540,7 +1540,7 @@ U0 ICFOp(CLex *lx,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
if (!(builtin1=ICBuiltInFloatConst(p1->disp(F64)))) {
|
||||
t1=TY_RIP_DISP32+IT_I64;
|
||||
r1=CREG_RIP;
|
||||
d1=CBFloatConstFind(lx,p1->disp(F64))+buf2;
|
||||
d1=LCCFloatConstFind(lx,p1->disp(F64))+buf2;
|
||||
}
|
||||
} else {
|
||||
ICPush(tempi,p1->type,p1->reg,p1->disp,ip);
|
||||
@@ -1794,7 +1794,7 @@ U0 ICFOpEqual(CLex *lx,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
if (!(builtin2=ICBuiltInFloatConst(p2->disp(F64)))) {
|
||||
t2=TY_RIP_DISP32+IT_I64;
|
||||
r2=CREG_RIP;
|
||||
d2=CBFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
d2=LCCFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
}
|
||||
} else {
|
||||
ICPush(tempi,p2->type,p2->reg,p2->disp,ip);
|
||||
@@ -1830,7 +1830,7 @@ U0 ICFOpEqual(CLex *lx,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
if (!(builtin2=ICBuiltInFloatConst(p2->disp(F64)))) {
|
||||
t2=TY_RIP_DISP32+IT_I64;
|
||||
r2=CREG_RIP;
|
||||
d2=CBFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
d2=LCCFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
}
|
||||
} else {
|
||||
ICPush(tempi,p2->type,p2->reg,p2->disp,ip);
|
||||
@@ -1943,7 +1943,7 @@ U0 ICFOpEqual(CLex *lx,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
if (!(builtin2=ICBuiltInFloatConst(p2->disp(F64)))) {
|
||||
t2=TY_RIP_DISP32+IT_I64;
|
||||
r2=CREG_RIP;
|
||||
d2=CBFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
d2=LCCFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
}
|
||||
} else {
|
||||
ICPush(tempi,p2->type,p2->reg,p2->disp,ip);
|
||||
@@ -1980,7 +1980,7 @@ U0 ICFOpEqual(CLex *lx,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
if (!(builtin2=ICBuiltInFloatConst(p2->disp(F64)))) {
|
||||
t2=TY_RIP_DISP32+IT_I64;
|
||||
r2=CREG_RIP;
|
||||
d2=CBFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
d2=LCCFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
}
|
||||
} else {
|
||||
ICPush(tempi,p2->type,p2->reg,p2->disp,ip);
|
||||
@@ -2046,7 +2046,7 @@ U0 ICFCmpAndBranch(CLex *lx,CIntermediateCode *tempi,I64 ip,
|
||||
Bool dont_push_float,dont_pop_float,alt,short_jmp;
|
||||
I64 i,rsp_size=0,builtin1=0,builtin2=0,
|
||||
t1,r1,d1,t2,r2,d2;
|
||||
CCodeBlkMisc *lb;
|
||||
CLexCodeMisc *lb;
|
||||
U8 *buf2;
|
||||
|
||||
if (tempi->ic_flags&ICF_ALTERNATE_TEMPLATE) {
|
||||
@@ -2083,7 +2083,7 @@ U0 ICFCmpAndBranch(CLex *lx,CIntermediateCode *tempi,I64 ip,
|
||||
tempi->ic_flags&ICF_PUSH_CMP) {
|
||||
t2=TY_RIP_DISP32+IT_I64;
|
||||
r2=CREG_RIP;
|
||||
d2=CBFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
d2=LCCFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
}
|
||||
} else {
|
||||
ICPush(tempi,p2->type,p2->reg,p2->disp,ip2);
|
||||
@@ -2111,7 +2111,7 @@ U0 ICFCmpAndBranch(CLex *lx,CIntermediateCode *tempi,I64 ip,
|
||||
if (!(builtin1=ICBuiltInFloatConst(p1->disp(F64)))) {
|
||||
t1=TY_RIP_DISP32+IT_I64;
|
||||
r1=CREG_RIP;
|
||||
d1=CBFloatConstFind(lx,p1->disp(F64))+buf2;
|
||||
d1=LCCFloatConstFind(lx,p1->disp(F64))+buf2;
|
||||
}
|
||||
} else {
|
||||
ICPush(tempi,p1->type,p1->reg,p1->disp,ip2);
|
||||
@@ -2133,7 +2133,7 @@ U0 ICFCmpAndBranch(CLex *lx,CIntermediateCode *tempi,I64 ip,
|
||||
tempi->ic_flags&ICF_PUSH_CMP) {
|
||||
t2=TY_RIP_DISP32+IT_I64;
|
||||
r2=CREG_RIP;
|
||||
d2=CBFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
d2=LCCFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
}
|
||||
} else {
|
||||
ICPush(tempi,p2->type,p2->reg,p2->disp,ip2);
|
||||
@@ -2171,7 +2171,7 @@ U0 ICFCmpAndBranch(CLex *lx,CIntermediateCode *tempi,I64 ip,
|
||||
tempi->ic_flags&ICF_PUSH_CMP) {
|
||||
t2=TY_RIP_DISP32+IT_I64;
|
||||
r2=CREG_RIP;
|
||||
d2=CBFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
d2=LCCFloatConstFind(lx,p2->disp(F64))+buf2;
|
||||
}
|
||||
} else {
|
||||
ICPush(tempi,p2->type,p2->reg,p2->disp,ip2);
|
||||
@@ -2197,7 +2197,7 @@ U0 ICFCmpAndBranch(CLex *lx,CIntermediateCode *tempi,I64 ip,
|
||||
if (!(builtin1=ICBuiltInFloatConst(p1->disp(F64)))) {
|
||||
t1=TY_RIP_DISP32+IT_I64;
|
||||
r1=CREG_RIP;
|
||||
d1=CBFloatConstFind(lx,p1->disp(F64))+buf2;
|
||||
d1=LCCFloatConstFind(lx,p1->disp(F64))+buf2;
|
||||
}
|
||||
} else {
|
||||
ICPush(tempi,p1->type,p1->reg,p1->disp,ip2);
|
||||
@@ -2283,33 +2283,36 @@ U0 ICFCmpAndBranch(CLex *lx,CIntermediateCode *tempi,I64 ip,
|
||||
lb=OptLabelFwd(tempi->ic_data);
|
||||
short_jmp=ToBool(tempi->ic_flags&ICF_SHORT_JMP);
|
||||
if (!buf && lb->addr!=INVALID_PTR) {
|
||||
i=lb->addr-ip;
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
i=lb->addr-(ip+2);
|
||||
if (lb->flags&CMF_POP_CMP) {
|
||||
if(tempi->ic_flags&ICF_PUSH_CMP)
|
||||
i+=4;
|
||||
else
|
||||
i+=8;
|
||||
if (MIN_I8+2<i<MAX_I8+2)
|
||||
}
|
||||
if (MIN_I8<=i<=MAX_I8)
|
||||
short_jmp=TRUE;
|
||||
}
|
||||
|
||||
if (short_jmp) {
|
||||
tempi->ic_flags|=ICF_SHORT_JMP;
|
||||
i=lb->addr-(ip+2);
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
if (lb->flags&CMF_POP_CMP) {
|
||||
if(tempi->ic_flags&ICF_PUSH_CMP)
|
||||
i+=4;
|
||||
else
|
||||
i+=8;
|
||||
}
|
||||
ICU16(tempi,i<<8+us.u8[2]);
|
||||
} else {
|
||||
tempi->ic_flags&=~ICF_SHORT_JMP;
|
||||
i=lb->addr-(ip+6);
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
if (lb->flags&CMF_POP_CMP) {
|
||||
if(tempi->ic_flags&ICF_PUSH_CMP)
|
||||
i+=4;
|
||||
else
|
||||
i+=8;
|
||||
}
|
||||
ICU16(tempi,us.u16[0]);
|
||||
ICU32(tempi,i);
|
||||
}
|
||||
@@ -2715,7 +2718,7 @@ U0 ICAddSubEctEqual(CIntermediateCode *tempi,I64 ptype,I64 t1,I64 r1,I64 d1,
|
||||
I64 result_reg,temp,i;
|
||||
if (tempi->ic_flags & ICF_NOT_ADDR) {
|
||||
if (t3&TY_MASK==TY_IMM) {
|
||||
ICAddConst(tempi,
|
||||
ICAddSubEctImm(tempi,
|
||||
t2&TY_MASK+ptype,r2,d2,t2&TY_MASK+ptype,r2,d2,d3,op,ip);
|
||||
if (t1&TY_MASK)
|
||||
ICMov(tempi,t1,r1,d1,t2&TY_MASK+ptype,r2,d2,ip);
|
||||
@@ -2969,7 +2972,7 @@ U0 ICNot(CIntermediateCode *tempi,I64 ip)
|
||||
ICU8(tempi,0xFF);
|
||||
} else {
|
||||
ICMov(tempi,TY_REG+IT_I64,CREG_RAX,0,tempi->p1.type,tempi->p1.reg,tempi->p1.disp,ip);
|
||||
ICOr(tempi,CREG_RAX);
|
||||
ICTest(tempi,CREG_RAX);
|
||||
}
|
||||
ICU24(tempi,0xC0940F); //SETZ AL
|
||||
ICU32(tempi,0xC0B60F48); //MOVZX RAX,AL
|
||||
@@ -2998,9 +3001,9 @@ U0 ICAndAnd(CIntermediateCode *tempi,I64 ip)
|
||||
r2=tempi->p1.reg;
|
||||
}
|
||||
ICZero(tempi,CREG_RAX);
|
||||
ICOr(tempi,r2);
|
||||
ICTest(tempi,r2);
|
||||
ICU16(tempi,0x0874);
|
||||
ICOr(tempi,CREG_RCX);
|
||||
ICTest(tempi,CREG_RCX);
|
||||
ICU16(tempi,0x0374);
|
||||
ICU24(tempi,0xC0FF48);
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,TY_REG+IT_I64,CREG_RAX,0,ip);
|
||||
@@ -3057,12 +3060,12 @@ U0 ICXorXor(CIntermediateCode *tempi,I64 ip)
|
||||
r2=tempi->p1.reg;
|
||||
}
|
||||
ICZero(tempi,CREG_RBX);
|
||||
ICOr(tempi,r2);
|
||||
ICTest(tempi,r2);
|
||||
ICU16(tempi,0x0374);
|
||||
ICU24(tempi,0xC3FF48);
|
||||
|
||||
ICZero(tempi,CREG_RAX);
|
||||
ICOr(tempi,CREG_RCX);
|
||||
ICTest(tempi,CREG_RCX);
|
||||
ICU16(tempi,0x0374);
|
||||
ICU24(tempi,0xC0FF48);
|
||||
|
||||
@@ -3297,7 +3300,7 @@ U0 ICBitOps(CIntermediateCode *tempi,CICArg *p1,CICArg *p2,CIntermediateCode *te
|
||||
|
||||
U0 ICPreempt(CIntermediateCode *tempi,I64 ip)
|
||||
{
|
||||
CIntermediateCode *tempi2=tempi+1;
|
||||
CIntermediateCode *tempi2=tempi->next;
|
||||
if (tempi->p1.type&TY_MASK==TY_IMM) {
|
||||
ICZero(tempi,CREG_RBX);
|
||||
ICU32(tempi,0x1B8B4864);
|
||||
@@ -3314,7 +3317,7 @@ U0 ICPreempt(CIntermediateCode *tempi,I64 ip)
|
||||
ICZero(tempi,CREG_RAX);
|
||||
ICZero(tempi,CREG_RBX);
|
||||
ICU32(tempi,0x1B8B4864);
|
||||
ICOr(tempi,CREG_RCX);
|
||||
ICTest(tempi,CREG_RCX);
|
||||
ICU16(tempi,0x0774);
|
||||
ICU24(tempi,0x6BBA0F);
|
||||
ICU16(tempi,CTask.task_flags+TASKf_PREEMPT<<8);
|
||||
@@ -3357,7 +3360,7 @@ U0 ICToBool(CLex *,CIntermediateCode *tempi,I64 ip)
|
||||
tempi->p1.type,tempi->p1.reg,tempi->p1.disp,ip);
|
||||
r=CREG_RAX;
|
||||
}
|
||||
ICOr(tempi,r);
|
||||
ICTest(tempi,r);
|
||||
ICU24(tempi,0xC0950F); //SETNZ AL
|
||||
ICU32(tempi,0xC0B60F48); //MOVZX RAX,AL
|
||||
}
|
||||
@@ -3384,7 +3387,7 @@ U0 ICPreIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
CHashClass *tempc=tempi->ic_class,*tempc1=tempc-1;
|
||||
if (tempi->ic_flags & ICF_NOT_ADDR) {
|
||||
if (tempc->ptr_cnt && tempc1->size!=1) {
|
||||
ICAddConst(tempi,tempi->p1.type&TY_MASK+tempi->p1.ptype,tempi->p1.reg,tempi->p1.disp,
|
||||
ICAddSubEctImm(tempi,tempi->p1.type&TY_MASK+tempi->p1.ptype,tempi->p1.reg,tempi->p1.disp,
|
||||
tempi->p1.type&TY_MASK+tempi->p1.ptype,tempi->p1.reg,tempi->p1.disp,
|
||||
tempc1->size,op.u16[3],ip);
|
||||
} else
|
||||
@@ -3402,7 +3405,7 @@ U0 ICPreIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
}
|
||||
if (tempc->ptr_cnt &&
|
||||
tempc1->size!=1) {
|
||||
ICAddConst(tempi,TY_DISP+tempi->p1.ptype,r,0,
|
||||
ICAddSubEctImm(tempi,TY_DISP+tempi->p1.ptype,r,0,
|
||||
TY_DISP+tempi->p1.ptype,r,0,
|
||||
tempc1->size,op.u16[3],ip);
|
||||
} else
|
||||
@@ -3426,7 +3429,7 @@ U0 ICPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
}
|
||||
if (tempc->ptr_cnt &&
|
||||
tempc1->size!=1) {
|
||||
ICAddConst(tempi,tempi->p1.type&TY_MASK+tempi->p1.ptype,tempi->p1.reg,tempi->p1.disp,
|
||||
ICAddSubEctImm(tempi,tempi->p1.type&TY_MASK+tempi->p1.ptype,tempi->p1.reg,tempi->p1.disp,
|
||||
tempi->p1.type&TY_MASK+tempi->p1.ptype,tempi->p1.reg,tempi->p1.disp,
|
||||
tempc1->size,op.u16[3],ip);
|
||||
} else
|
||||
@@ -3446,7 +3449,7 @@ U0 ICPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
}
|
||||
if (tempc->ptr_cnt &&
|
||||
tempc1->size!=1) {
|
||||
ICAddConst(tempi,TY_DISP+tempi->p1.ptype,r,0,
|
||||
ICAddSubEctImm(tempi,TY_DISP+tempi->p1.ptype,r,0,
|
||||
TY_DISP+tempi->p1.ptype,r,0,
|
||||
tempc1->size,op.u16[3],ip);
|
||||
} else
|
||||
@@ -3472,7 +3475,7 @@ U0 ICDerefPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
TY_DISP+t,r,0,ip);
|
||||
if (tempc1->size!=1) {
|
||||
ICAddConst(tempi,tempi->p1.type&TY_MASK+IT_I64,tempi->p1.reg,tempi->p1.disp,
|
||||
ICAddSubEctImm(tempi,tempi->p1.type&TY_MASK+IT_I64,tempi->p1.reg,tempi->p1.disp,
|
||||
tempi->p1.type&TY_MASK+IT_I64,tempi->p1.reg,tempi->p1.disp,
|
||||
tempc1->size,op.u16[3],ip);
|
||||
} else
|
||||
@@ -3488,7 +3491,7 @@ U0 ICDerefPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
ICMov(tempi,TY_REG+IT_I64,CREG_RDX,0,
|
||||
TY_DISP+IT_I64,r,0,ip);
|
||||
if (tempc1->size!=1) {
|
||||
ICAddConst(tempi,TY_DISP+IT_I64,r,0,
|
||||
ICAddSubEctImm(tempi,TY_DISP+IT_I64,r,0,
|
||||
TY_DISP+IT_I64,r,0,
|
||||
tempc1->size,op.u16[3],ip);
|
||||
} else
|
||||
@@ -3515,7 +3518,7 @@ U0 ICAssignPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
tempi->p2.type,tempi->p2.reg,tempi->p2.disp,ip);
|
||||
if (tempc1->size!=1 || tempi->p1.type&TY_MASK==TY_STK) {
|
||||
ICAddConst(tempi,tempi->p1.type,tempi->p1.reg,tempi->p1.disp,
|
||||
ICAddSubEctImm(tempi,tempi->p1.type,tempi->p1.reg,tempi->p1.disp,
|
||||
TY_REG+IT_I64,r,0,
|
||||
tempc1->size,op.u16[3],ip);
|
||||
} else
|
||||
@@ -3531,7 +3534,7 @@ U0 ICAssignPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
tempi->p2.type,tempi->p2.reg,tempi->p2.disp,ip);
|
||||
if (tempc1->size!=1) {
|
||||
ICAddConst(tempi,TY_DISP+IT_I64,CREG_RDX,0,
|
||||
ICAddSubEctImm(tempi,TY_DISP+IT_I64,CREG_RDX,0,
|
||||
TY_REG+IT_I64,CREG_RCX,0,
|
||||
tempc1->size,op.u16[3],ip);
|
||||
} else
|
||||
@@ -3544,9 +3547,9 @@ U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip,
|
||||
I64 us,I64 is,I64 not_us,I64 not_is,
|
||||
U8 *buf,I64 ip2)
|
||||
{
|
||||
I64 r1,d1,r2,i=0x48,j,t1,t2,result_reg;
|
||||
I64 r1,r2,i=0x48,j,t1,t2,result_reg;
|
||||
Bool short_jmp,done;
|
||||
CCodeBlkMisc *lb;
|
||||
CLexCodeMisc *lb;
|
||||
CICArg *p1=&tempi->p1,*p2=&tempi->p2,*swap;
|
||||
|
||||
j=p1->disp;
|
||||
@@ -3560,33 +3563,11 @@ U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip,
|
||||
|
||||
j=p2->disp;
|
||||
if (p2->type&TY_MASK==TY_IMM && MIN_I32<=j<=MAX_I32) {
|
||||
if (!has_result &&
|
||||
p1->type&TY_MASK==TY_DISP && //TODO, other modes
|
||||
p1->type&IT_MASK>=IT_I64) {
|
||||
r1=p1->reg;
|
||||
d1=p1->disp;
|
||||
if (r1>7) {
|
||||
i++;
|
||||
r1&=7;
|
||||
}
|
||||
if (MIN_I8<=j<=MAX_I8)
|
||||
i+=0x388300;
|
||||
else
|
||||
i+=0x388100;
|
||||
if (!d1) {
|
||||
ICU24(tempi,0x000000+i+r1<<16);
|
||||
} else if (MIN_I8<=d1<=MAX_I8) {
|
||||
ICU24(tempi,0x400000+i+r1<<16);
|
||||
ICU8(tempi,d1);
|
||||
} else {
|
||||
ICU24(tempi,0x800000+i+r1<<16);
|
||||
ICU32(tempi,d1);
|
||||
}
|
||||
if (MIN_I8<=j<=MAX_I8)
|
||||
ICU8(tempi,j);
|
||||
else
|
||||
ICU32(tempi,j);
|
||||
} else {
|
||||
if (!has_result && TY_REG<=p1->type&TY_MASK<=TY_RIP_DISP32)
|
||||
ICAddSubEctImm(tempi,tempi->p1.type,tempi->p1.reg,tempi->p1.disp,
|
||||
tempi->p1.type,tempi->p1.reg,tempi->p1.disp,
|
||||
j,0x073B,ip2);
|
||||
else {
|
||||
if (p1->type&TY_MASK==TY_REG)
|
||||
r1=p1->reg;
|
||||
else {
|
||||
@@ -3595,13 +3576,13 @@ U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip,
|
||||
}
|
||||
if (!j) {
|
||||
if (is.u8[2]==0x7C) {
|
||||
ICOr(tempi,r1);
|
||||
ICTest(tempi,r1);
|
||||
is=0x78880F;
|
||||
} else if (is.u8[2]==0x7D) {
|
||||
ICOr(tempi,r1);
|
||||
ICTest(tempi,r1);
|
||||
is=0x79890F;
|
||||
} else if (is.u8[2]==0x74 || is.u8[2]==0x75)
|
||||
ICOr(tempi,r1);
|
||||
ICTest(tempi,r1);
|
||||
else {
|
||||
if (r1>7)
|
||||
i++;
|
||||
@@ -3705,33 +3686,36 @@ U0 ICCmpAndBranch(CIntermediateCode *tempi,Bool has_result,I64 ip,
|
||||
lb=OptLabelFwd(tempi->ic_data);
|
||||
short_jmp=ToBool(tempi->ic_flags&ICF_SHORT_JMP);
|
||||
if (!buf && lb->addr!=INVALID_PTR) {
|
||||
i=lb->addr-ip;
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
i=lb->addr-(ip+2);
|
||||
if (lb->flags&CMF_POP_CMP) {
|
||||
if(tempi->ic_flags&ICF_PUSH_CMP)
|
||||
i+=4;
|
||||
else
|
||||
i+=8;
|
||||
if (MIN_I8+2<i<MAX_I8+2)
|
||||
}
|
||||
if (MIN_I8<=i<=MAX_I8)
|
||||
short_jmp=TRUE;
|
||||
}
|
||||
|
||||
if (short_jmp) {
|
||||
tempi->ic_flags|=ICF_SHORT_JMP;
|
||||
i=lb->addr-(ip+2);
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
if (lb->flags&CMF_POP_CMP) {
|
||||
if(tempi->ic_flags&ICF_PUSH_CMP)
|
||||
i+=4;
|
||||
else
|
||||
i+=8;
|
||||
}
|
||||
ICU16(tempi,i<<8+is.u8[2]);
|
||||
} else {
|
||||
tempi->ic_flags&=~ICF_SHORT_JMP;
|
||||
i=lb->addr-(ip+6);
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
if (lb->flags&CMF_POP_CMP) {
|
||||
if(tempi->ic_flags&ICF_PUSH_CMP)
|
||||
i+=4;
|
||||
else
|
||||
i+=8;
|
||||
}
|
||||
ICU16(tempi,is.u16[0]);
|
||||
ICU32(tempi,i);
|
||||
}
|
||||
@@ -3743,7 +3727,7 @@ U0 ICTestAndBranch(CIntermediateCode *tempi,I64 ip,I64 is,U8 *buf,I64 ip2)
|
||||
{
|
||||
I64 i;
|
||||
Bool short_jmp;
|
||||
CCodeBlkMisc *lb;
|
||||
CLexCodeMisc *lb;
|
||||
|
||||
if (tempi->p1.type&TY_MASK!=TY_REG) {
|
||||
if (tempi->p1.type&IT_MASK<=IT_U8 &&
|
||||
@@ -3755,32 +3739,32 @@ U0 ICTestAndBranch(CIntermediateCode *tempi,I64 ip,I64 is,U8 *buf,I64 ip2)
|
||||
ICU8(tempi,0xFF);
|
||||
} else {
|
||||
ICMov(tempi,TY_REG+IT_I64,CREG_RAX,0,tempi->p1.type,tempi->p1.reg,tempi->p1.disp,ip2);
|
||||
ICOr(tempi,CREG_RAX);
|
||||
ICTest(tempi,CREG_RAX);
|
||||
}
|
||||
} else
|
||||
ICOr(tempi,tempi->p1.reg);
|
||||
ICTest(tempi,tempi->p1.reg);
|
||||
|
||||
ip+=tempi->ic_cnt;
|
||||
lb=OptLabelFwd(tempi->ic_data);
|
||||
short_jmp=ToBool(tempi->ic_flags&ICF_SHORT_JMP);
|
||||
if (!buf && lb->addr!=INVALID_PTR) {
|
||||
i=lb->addr-ip;
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
i=lb->addr-(ip+2);
|
||||
if (lb->flags&CMF_POP_CMP)
|
||||
i+=8;
|
||||
if (MIN_I8+2<i<MAX_I8+2)
|
||||
if (MIN_I8<=i<=MAX_I8)
|
||||
short_jmp=TRUE;
|
||||
}
|
||||
|
||||
if (short_jmp) {
|
||||
tempi->ic_flags|=ICF_SHORT_JMP;
|
||||
i=lb->addr-(ip+2);
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
if (lb->flags&CMF_POP_CMP)
|
||||
i+=8;
|
||||
ICU16(tempi,i<<8+is.u8[2]);
|
||||
} else {
|
||||
tempi->ic_flags&=~ICF_SHORT_JMP;
|
||||
i=lb->addr-(ip+6);
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
if (lb->flags&CMF_POP_CMP)
|
||||
i+=8;
|
||||
ICU16(tempi,is.u16[0]);
|
||||
ICU32(tempi,i);
|
||||
@@ -3791,29 +3775,29 @@ U0 ICZFlagBranch(CIntermediateCode *tempi,I64 ip,I64 is,U8 *buf)
|
||||
{
|
||||
I64 i;
|
||||
Bool short_jmp;
|
||||
CCodeBlkMisc *lb;
|
||||
CLexCodeMisc *lb;
|
||||
|
||||
ip+=tempi->ic_cnt;
|
||||
lb=OptLabelFwd(tempi->ic_data);
|
||||
short_jmp=ToBool(tempi->ic_flags&ICF_SHORT_JMP);
|
||||
if (!buf && lb->addr!=INVALID_PTR) {
|
||||
i=lb->addr-ip;
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
i=lb->addr-(ip+2);
|
||||
if (lb->flags&CMF_POP_CMP)
|
||||
i+=8;
|
||||
if (MIN_I8+2<i<MAX_I8+2)
|
||||
if (MIN_I8<=i<=MAX_I8)
|
||||
short_jmp=TRUE;
|
||||
}
|
||||
|
||||
if (short_jmp) {
|
||||
tempi->ic_flags|=ICF_SHORT_JMP;
|
||||
i=lb->addr-(ip+2);
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
if (lb->flags&CMF_POP_CMP)
|
||||
i+=8;
|
||||
ICU16(tempi,i<<8+is.u8[2]);
|
||||
} else {
|
||||
tempi->ic_flags&=~ICF_SHORT_JMP;
|
||||
i=lb->addr-(ip+6);
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
if (lb->flags&CMF_POP_CMP)
|
||||
i+=8;
|
||||
ICU16(tempi,is.u16[0]);
|
||||
ICU32(tempi,i);
|
||||
@@ -3825,7 +3809,7 @@ U0 ICAndBranch(CIntermediateCode *tempi,I64 ip,I64 is,U8 *buf,I64 ip2)
|
||||
U64 i;
|
||||
I64 it,t1,r1,d1,r2;
|
||||
Bool short_jmp,swap,override;
|
||||
CCodeBlkMisc *lb;
|
||||
CLexCodeMisc *lb;
|
||||
CICArg *p1,*p2;
|
||||
|
||||
if (tempi->p1.type&TY_MASK==TY_IMM) {
|
||||
@@ -3955,23 +3939,23 @@ U0 ICAndBranch(CIntermediateCode *tempi,I64 ip,I64 is,U8 *buf,I64 ip2)
|
||||
lb=OptLabelFwd(tempi->ic_data);
|
||||
short_jmp=ToBool(tempi->ic_flags&ICF_SHORT_JMP);
|
||||
if (!buf && lb->addr!=INVALID_PTR) {
|
||||
i=lb->addr-ip;
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
i=lb->addr-(ip+2);
|
||||
if (lb->flags&CMF_POP_CMP)
|
||||
i+=8;
|
||||
if (MIN_I8+2<i<MAX_I8+2)
|
||||
if (MIN_I8<=i<=MAX_I8)
|
||||
short_jmp=TRUE;
|
||||
}
|
||||
|
||||
if (short_jmp) {
|
||||
tempi->ic_flags|=ICF_SHORT_JMP;
|
||||
i=lb->addr-(ip+2);
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
if (lb->flags&CMF_POP_CMP)
|
||||
i+=8;
|
||||
ICU16(tempi,i<<8+is.u8[2]);
|
||||
} else {
|
||||
tempi->ic_flags&=~ICF_SHORT_JMP;
|
||||
i=lb->addr-(ip+6);
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
if (lb->flags&CMF_POP_CMP)
|
||||
i+=8;
|
||||
ICU16(tempi,is.u16[0]);
|
||||
ICU32(tempi,i);
|
||||
@@ -4001,7 +3985,7 @@ U0 ICAssign(CIntermediateCode *tempi,I64 ip)
|
||||
(tempi->p2.type&TY_MASK==TY_REG||tempi->p2.type&TY_MASK==TY_DISP) &&
|
||||
tempi->p2.reg==tempi->p1.reg ||
|
||||
tempi->r.type&TY_MASK ||
|
||||
tempi1->ic_flags&~ICF_NO_CVT_MASK) {
|
||||
tempi1->ic_flags&~ICG_NO_CVT_MASK) {
|
||||
ICMov(tempi,TY_DISP+tempi->p1.ptype,tempi->p1.reg,tempi->p1.disp,
|
||||
tempi->p2.type,tempi->p2.reg,tempi->p2.disp,ip);
|
||||
if (tempi->r.type&TY_MASK)
|
||||
@@ -4032,7 +4016,7 @@ U0 ICBrBitOps(CIntermediateCode *tempi,I64 ip,I64 op,I64 op_imm,I64 is,U8 *buf,I
|
||||
I64 i,t,r1,r2,d1,d2,t1,t2;
|
||||
CICArg *p1=&tempi->p1,*p2=&tempi->p2;
|
||||
Bool short_jmp;
|
||||
CCodeBlkMisc *lb;
|
||||
CLexCodeMisc *lb;
|
||||
|
||||
if (tempi->ic_flags & ICF_NOT_ADDR) {
|
||||
if (tempi->ic_flags & ICF_P1_FIRST) {
|
||||
@@ -4167,23 +4151,23 @@ U0 ICBrBitOps(CIntermediateCode *tempi,I64 ip,I64 op,I64 op_imm,I64 is,U8 *buf,I
|
||||
lb=OptLabelFwd(tempi->ic_data);
|
||||
short_jmp=ToBool(tempi->ic_flags&ICF_SHORT_JMP);
|
||||
if (!buf && lb->addr!=INVALID_PTR) {
|
||||
i=lb->addr-ip;
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
i=lb->addr-(ip+2);
|
||||
if (lb->flags&CMF_POP_CMP)
|
||||
i+=8;
|
||||
if (MIN_I8+2<i<MAX_I8+2)
|
||||
if (MIN_I8<=i<=MAX_I8)
|
||||
short_jmp=TRUE;
|
||||
}
|
||||
|
||||
if (short_jmp) {
|
||||
tempi->ic_flags|=ICF_SHORT_JMP;
|
||||
i=lb->addr-(ip+2);
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
if (lb->flags&CMF_POP_CMP)
|
||||
i+=8;
|
||||
ICU16(tempi,i<<8+is.u8[2]);
|
||||
} else {
|
||||
tempi->ic_flags&=~ICF_SHORT_JMP;
|
||||
i=lb->addr-(ip+6);
|
||||
if (lb->flags&CBMF_POP_CMP)
|
||||
if (lb->flags&CMF_POP_CMP)
|
||||
i+=8;
|
||||
ICU16(tempi,is.u16[0]);
|
||||
ICU32(tempi,i);
|
||||
@@ -4553,7 +4537,7 @@ U0 ICXorEqual(CIntermediateCode *tempi,I64 ip2)
|
||||
U0 ICSwitch(CIntermediateCode *tempi,I64 ip,Bool fast,CLex *lx,U8 *buf,I64 ip2)
|
||||
{
|
||||
I64 i,j,r;
|
||||
CCodeBlkMisc *lb;
|
||||
CLexCodeMisc *lb;
|
||||
Bool short_jmp;
|
||||
CExeAbsAddr *tempa;
|
||||
if (tempi->p1.type&TY_MASK==TY_REG)
|
||||
@@ -4603,11 +4587,13 @@ U0 ICSwitch(CIntermediateCode *tempi,I64 ip,Bool fast,CLex *lx,U8 *buf,I64 ip2)
|
||||
}
|
||||
|
||||
ip+=tempi->ic_cnt;
|
||||
lb=OptLabelFwd(tempi->ic_data(CCodeBlkMisc *)->dft);
|
||||
lb=OptLabelFwd(tempi->ic_data(CLexCodeMisc *)->dft);
|
||||
short_jmp=ToBool(tempi->ic_flags&ICF_SHORT_JMP);
|
||||
if (!buf && lb->addr!=INVALID_PTR &&
|
||||
MIN_I8+2<lb->addr-ip<MAX_I8+2)
|
||||
short_jmp=TRUE;
|
||||
if (!buf && lb->addr!=INVALID_PTR) {
|
||||
i=lb->addr-(ip+2);
|
||||
if (MIN_I8<=i<=MAX_I8)
|
||||
short_jmp=TRUE;
|
||||
}
|
||||
|
||||
if (short_jmp) {
|
||||
tempi->ic_flags|=ICF_SHORT_JMP;
|
||||
|
||||
@@ -1,164 +1,5 @@
|
||||
asm {
|
||||
USE64
|
||||
CMP_OPT_NOP:
|
||||
#assert CIntermediateCode.ic_opcode==0
|
||||
DU16 IC_NOP1; //Must be at CIntermediateCode.ic_opcode offset
|
||||
DU8 sizeof(CIntermediateCode)-2 DUP(0);
|
||||
|
||||
// ************************************
|
||||
_OPTNEXT::
|
||||
ENTER 0
|
||||
PUSH RDI
|
||||
MOV RCX,U64 SF_ARG1[RBP]
|
||||
MOV RDX,U64 SF_ARG2[RBP]
|
||||
|
||||
MOV RAX,U64 16[RDX]
|
||||
MOV U64 24[RDX],RAX
|
||||
MOV RAX,U64 8[RDX]
|
||||
MOV U64 16[RDX],RAX
|
||||
MOV RAX,U64 [RDX]
|
||||
MOV U64 8[RDX],RAX
|
||||
MOV U64 [RDX],RCX
|
||||
|
||||
MOV RDI,RDX
|
||||
|
||||
MOV RAX,RCX
|
||||
CMP U16 CIntermediateCode.ic_opcode[RAX],IC_END_EXP
|
||||
JBE @@05
|
||||
STOSQ
|
||||
|
||||
@@05: MOV RAX,U64 8[RDX]
|
||||
CMP U16 CIntermediateCode.ic_opcode[RAX],IC_END_EXP
|
||||
JBE @@10
|
||||
STOSQ
|
||||
|
||||
@@10: MOV RAX,U64 16[RDX]
|
||||
CMP U16 CIntermediateCode.ic_opcode[RAX],IC_END_EXP
|
||||
JBE @@15
|
||||
STOSQ
|
||||
|
||||
@@15: MOV RAX,U64 24[RDX]
|
||||
CMP U16 CIntermediateCode.ic_opcode[RAX],IC_END_EXP
|
||||
JBE @@20
|
||||
STOSQ
|
||||
|
||||
@@20: MOV RAX,CMP_OPT_NOP
|
||||
ADD RDX,32
|
||||
JMP @@30
|
||||
|
||||
@@25: STOSQ
|
||||
@@30: CMP RDI,RDX
|
||||
JB @@25
|
||||
|
||||
POP RDI
|
||||
LEAVE
|
||||
RET1 16
|
||||
// ************************************
|
||||
_OPTNEXT2::
|
||||
ENTER 0
|
||||
PUSH RDI
|
||||
MOV RCX,U64 SF_ARG1[RBP]
|
||||
MOV RDX,U64 SF_ARG2[RBP]
|
||||
|
||||
MOV RAX,U64 16[RDX]
|
||||
MOV U64 24[RDX],RAX
|
||||
MOV RAX,U64 8[RDX]
|
||||
MOV U64 16[RDX],RAX
|
||||
MOV RAX,U64 [RDX]
|
||||
MOV U64 8[RDX],RAX
|
||||
MOV U64 [RDX],RCX
|
||||
|
||||
MOV RDI,RDX
|
||||
|
||||
MOV RAX,RCX
|
||||
CMP U16 CIntermediateCode.ic_opcode[RAX],IC_END_EXP
|
||||
JB @@05
|
||||
STOSQ
|
||||
|
||||
@@05: MOV RAX,U64 8[RDX]
|
||||
CMP U16 CIntermediateCode.ic_opcode[RAX],IC_END_EXP
|
||||
JB @@10
|
||||
STOSQ
|
||||
|
||||
@@10: MOV RAX,U64 16[RDX]
|
||||
CMP U16 CIntermediateCode.ic_opcode[RAX],IC_END_EXP
|
||||
JB @@15
|
||||
STOSQ
|
||||
|
||||
@@15: MOV RAX,U64 24[RDX]
|
||||
CMP U16 CIntermediateCode.ic_opcode[RAX],IC_END_EXP
|
||||
JB @@20
|
||||
STOSQ
|
||||
|
||||
@@20: MOV RAX,CMP_OPT_NOP
|
||||
ADD RDX,32
|
||||
JMP @@30
|
||||
|
||||
@@25: STOSQ
|
||||
@@30: CMP RDI,RDX
|
||||
JB @@25
|
||||
|
||||
POP RDI
|
||||
LEAVE
|
||||
RET1 16
|
||||
|
||||
// ************************************
|
||||
_OPTNEXT3::
|
||||
ENTER 0
|
||||
PUSH RDI
|
||||
MOV RCX,U64 SF_ARG1[RBP]
|
||||
MOV RDX,U64 SF_ARG2[RBP]
|
||||
|
||||
MOV RAX,U64 16[RDX]
|
||||
MOV U64 24[RDX],RAX
|
||||
MOV RAX,U64 8[RDX]
|
||||
MOV U64 16[RDX],RAX
|
||||
MOV RAX,U64 [RDX]
|
||||
MOV U64 8[RDX],RAX
|
||||
MOV U64 [RDX],RCX
|
||||
|
||||
MOV RDI,RDX
|
||||
|
||||
MOV RAX,RCX
|
||||
CMP U16 CIntermediateCode.ic_opcode[RAX],IC_END_EXP
|
||||
JB @@05
|
||||
CMP U16 CIntermediateCode.ic_opcode[RAX],IC_NOP2
|
||||
JE @@05
|
||||
STOSQ
|
||||
|
||||
@@05: MOV RAX,U64 8[RDX]
|
||||
CMP U16 CIntermediateCode.ic_opcode[RAX],IC_END_EXP
|
||||
JB @@10
|
||||
CMP U16 CIntermediateCode.ic_opcode[RAX],IC_NOP2
|
||||
JE @@10
|
||||
STOSQ
|
||||
|
||||
@@10: MOV RAX,U64 16[RDX]
|
||||
CMP U16 CIntermediateCode.ic_opcode[RAX],IC_END_EXP
|
||||
JB @@15
|
||||
CMP U16 CIntermediateCode.ic_opcode[RAX],IC_NOP2
|
||||
JE @@15
|
||||
STOSQ
|
||||
|
||||
@@15: MOV RAX,U64 24[RDX]
|
||||
CMP U16 CIntermediateCode.ic_opcode[RAX],IC_END_EXP
|
||||
JB @@20
|
||||
CMP U16 CIntermediateCode.ic_opcode[RAX],IC_NOP2
|
||||
JE @@20
|
||||
STOSQ
|
||||
|
||||
@@20: MOV RAX,CMP_OPT_NOP
|
||||
ADD RDX,32
|
||||
JMP @@30
|
||||
|
||||
@@25: STOSQ
|
||||
@@30: CMP RDI,RDX
|
||||
JB @@25
|
||||
|
||||
POP RDI
|
||||
LEAVE
|
||||
RET1 16
|
||||
|
||||
// ************************************
|
||||
CMP_TEMPLATES::
|
||||
DU32 @@05,@@10,@@15,@@25,@@30,
|
||||
@@ -249,7 +90,7 @@ CMP_TEMPLATES::
|
||||
MOV RDX,RAX
|
||||
@@50: MOV BL,U8 [RAX]
|
||||
INC RAX
|
||||
OR BL,BL
|
||||
TEST BL,BL
|
||||
JNZ @@50
|
||||
SUB RAX,RDX
|
||||
DEC RAX
|
||||
@@ -260,7 +101,7 @@ CMP_TEMPLATES::
|
||||
ADD RAX,RDX
|
||||
|
||||
@@60: //SignI64
|
||||
OR RAX,RAX
|
||||
TEST RAX,RAX
|
||||
JZ @@70
|
||||
JS @@65
|
||||
MOV RAX,1
|
||||
@@ -683,12 +524,3 @@ CMP_TEMPLATES_DONT_PUSH2::
|
||||
@@110:
|
||||
@@115:
|
||||
}
|
||||
|
||||
_extern _OPTNEXT Bool OptNext(CIntermediateCode *tempi,
|
||||
CIntermediateCode **temp_lag);
|
||||
|
||||
_extern _OPTNEXT2 Bool OptNext2(CIntermediateCode *tempi,
|
||||
CIntermediateCode **temp_lag);
|
||||
|
||||
_extern _OPTNEXT3 Bool OptNext3(CIntermediateCode *tempi,
|
||||
CIntermediateCode **temp_lag);
|
||||
+216
-214
@@ -1,235 +1,234 @@
|
||||
//Intermediate compiler codes
|
||||
#define IC_END 0x00
|
||||
#define IC_START 0x01
|
||||
#define IC_NOP1 0x02
|
||||
#define IC_END_EXP 0x03
|
||||
#define IC_NOP2 0x04
|
||||
#define IC_LABEL 0x05
|
||||
#define IC_CALL_START 0x06
|
||||
#define IC_CALL_END 0x07
|
||||
#define IC_CALL_END2 0x08
|
||||
#define IC_RETURN_VAL 0x09
|
||||
#define IC_RETURN_VAL2 0x0A
|
||||
#define IC_IMM_U64 0x0B
|
||||
#define IC_IMM_F64 0x0C
|
||||
#define IC_STR_CONST 0x0D
|
||||
#define IC_ABS_ADDR 0x0E
|
||||
#define IC_ADDR_IMPORT 0x0F
|
||||
#define IC_HEAP_GLBL 0x10
|
||||
#define IC_SIZEOF 0x11
|
||||
#define IC_TYPE 0x12
|
||||
#define IC_GET_LABEL 0x13
|
||||
#define IC_RBP 0x14
|
||||
#define IC_REG 0x15
|
||||
#define IC_FS 0x16
|
||||
#define IC_MOV_FS 0x17
|
||||
#define IC_GS 0x18
|
||||
#define IC_MOV_GS 0x19
|
||||
#define IC_NOP1 0x01
|
||||
#define IC_END_EXP 0x02
|
||||
#define IC_NOP2 0x03
|
||||
#define IC_LABEL 0x04
|
||||
#define IC_CALL_START 0x05
|
||||
#define IC_CALL_END 0x06
|
||||
#define IC_CALL_END2 0x07
|
||||
#define IC_RETURN_VAL 0x08
|
||||
#define IC_RETURN_VAL2 0x09
|
||||
#define IC_IMM_U64 0x0A
|
||||
#define IC_IMM_F64 0x0B
|
||||
#define IC_STR_CONST 0x0C
|
||||
#define IC_ABS_ADDR 0x0D
|
||||
#define IC_ADDR_IMPORT 0x0E
|
||||
#define IC_HEAP_GLBL 0x0F
|
||||
#define IC_SIZEOF 0x10
|
||||
#define IC_TYPE 0x11
|
||||
#define IC_GET_LABEL 0x12
|
||||
#define IC_RBP 0x13
|
||||
#define IC_REG 0x14
|
||||
#define IC_FS 0x15
|
||||
#define IC_MOV_FS 0x16
|
||||
#define IC_GS 0x17
|
||||
#define IC_MOV_GS 0x18
|
||||
|
||||
#define IC_LEA 0x1A
|
||||
#define IC_MOV 0x1B
|
||||
#define IC_LEA 0x19
|
||||
#define IC_MOV 0x1A
|
||||
|
||||
#define IC_TO_I64 0x1C
|
||||
#define IC_TO_F64 0x1D
|
||||
#define IC_TO_BOOL 0x1E
|
||||
#define IC_TOUPPER 0x1F
|
||||
#define IC_HOLYC_TYPECAST 0x20
|
||||
#define IC_TO_I64 0x1B
|
||||
#define IC_TO_F64 0x1C
|
||||
#define IC_TO_BOOL 0x1D
|
||||
#define IC_TOUPPER 0x1E
|
||||
#define IC_HOLYC_TYPECAST 0x1F
|
||||
|
||||
#define IC_ADDR 0x21
|
||||
#define IC_COM 0x22
|
||||
#define IC_NOT 0x23
|
||||
#define IC_UNARY_MINUS 0x24
|
||||
#define IC_ADDR 0x20
|
||||
#define IC_COM 0x21
|
||||
#define IC_NOT 0x22
|
||||
#define IC_UNARY_MINUS 0x23
|
||||
|
||||
#define IC_DEREF 0x25
|
||||
#define IC_DEREF_PP 0x26
|
||||
#define IC_DEREF_MM 0x27
|
||||
#define IC__PP 0x28
|
||||
#define IC__MM 0x29
|
||||
#define IC_PP_ 0x2A
|
||||
#define IC_MM_ 0x2B
|
||||
#define IC_DEREF 0x24
|
||||
#define IC_DEREF_PP 0x25
|
||||
#define IC_DEREF_MM 0x26
|
||||
#define IC__PP 0x27
|
||||
#define IC__MM 0x28
|
||||
#define IC_PP_ 0x29
|
||||
#define IC_MM_ 0x2A
|
||||
|
||||
#define IC_SHL 0x2C
|
||||
#define IC_SHR 0x2D
|
||||
#define IC_SHL_CONST 0x2E
|
||||
#define IC_SHR_CONST 0x2F
|
||||
#define IC_POWER 0x30
|
||||
#define IC_SHL 0x2B
|
||||
#define IC_SHR 0x2C
|
||||
#define IC_SHL_CONST 0x2D
|
||||
#define IC_SHR_CONST 0x2E
|
||||
#define IC_POWER 0x2F
|
||||
|
||||
#define IC_MUL 0x31
|
||||
#define IC_DIV 0x32
|
||||
#define IC_MOD 0x33
|
||||
#define IC_MUL 0x30
|
||||
#define IC_DIV 0x31
|
||||
#define IC_MOD 0x32
|
||||
|
||||
#define IC_AND 0x34
|
||||
#define IC_AND 0x33
|
||||
|
||||
#define IC_OR 0x35
|
||||
#define IC_XOR 0x36
|
||||
#define IC_OR 0x34
|
||||
#define IC_XOR 0x35
|
||||
|
||||
#define IC_ADD 0x37
|
||||
#define IC_SUB 0x38
|
||||
#define IC_ADD_CONST 0x39
|
||||
#define IC_SUB_CONST 0x3A
|
||||
#define IC_ADD 0x36
|
||||
#define IC_SUB 0x37
|
||||
#define IC_ADD_CONST 0x38
|
||||
#define IC_SUB_CONST 0x39
|
||||
|
||||
#define IC_EQUAL_EQUAL 0x3B
|
||||
#define IC_NOT_EQUAL 0x3C
|
||||
#define IC_LESS 0x3D
|
||||
#define IC_GREATER 0x3E
|
||||
#define IC_LESS_EQUAL 0x3F
|
||||
#define IC_GREATER_EQUAL 0x40
|
||||
#define IC_PUSH_CMP 0x41
|
||||
#define IC_EQUAL_EQUAL 0x3A
|
||||
#define IC_NOT_EQUAL 0x3B
|
||||
#define IC_LESS 0x3C
|
||||
#define IC_GREATER 0x3D
|
||||
#define IC_LESS_EQUAL 0x3E
|
||||
#define IC_GREATER_EQUAL 0x3F
|
||||
#define IC_PUSH_CMP 0x40
|
||||
|
||||
#define IC_AND_AND 0x42
|
||||
#define IC_AND_AND 0x41
|
||||
|
||||
#define IC_OR_OR 0x43
|
||||
#define IC_XOR_XOR 0x44
|
||||
#define IC_OR_OR 0x42
|
||||
#define IC_XOR_XOR 0x43
|
||||
|
||||
#define IC_ASSIGN 0x45
|
||||
#define IC_ASSIGN_PP 0x46
|
||||
#define IC_ASSIGN_MM 0x47
|
||||
#define IC_ASSIGN 0x44
|
||||
#define IC_ASSIGN_PP 0x45
|
||||
#define IC_ASSIGN_MM 0x46
|
||||
|
||||
#define IC_SHL_EQUAL 0x48
|
||||
#define IC_SHR_EQUAL 0x49
|
||||
#define IC_MUL_EQUAL 0x4A
|
||||
#define IC_DIV_EQUAL 0x4B
|
||||
#define IC_MOD_EQUAL 0x4C
|
||||
#define IC_AND_EQUAL 0x4D
|
||||
#define IC_OR_EQUAL 0x4E
|
||||
#define IC_XOR_EQUAL 0x4F
|
||||
#define IC_ADD_EQUAL 0x50
|
||||
#define IC_SUB_EQUAL 0x51
|
||||
#define IC_SHL_EQUAL 0x47
|
||||
#define IC_SHR_EQUAL 0x48
|
||||
#define IC_MUL_EQUAL 0x49
|
||||
#define IC_DIV_EQUAL 0x4A
|
||||
#define IC_MOD_EQUAL 0x4B
|
||||
#define IC_AND_EQUAL 0x4C
|
||||
#define IC_OR_EQUAL 0x4D
|
||||
#define IC_XOR_EQUAL 0x4E
|
||||
#define IC_ADD_EQUAL 0x4F
|
||||
#define IC_SUB_EQUAL 0x50
|
||||
|
||||
#define IC_JMP 0x52
|
||||
#define IC_SWITCH 0x53
|
||||
#define IC_NOBOUND_SWITCH 0x54
|
||||
#define IC_JMP 0x51
|
||||
#define IC_SWITCH 0x52
|
||||
#define IC_NOBOUND_SWITCH 0x53
|
||||
|
||||
#define IC_ADD_RSP 0x55
|
||||
#define IC_ADD_RSP1 0x56
|
||||
#define IC_ENTER 0x57
|
||||
#define IC_PUSH_REGS 0x58
|
||||
#define IC_POP_REGS 0x59
|
||||
#define IC_LEAVE 0x5A
|
||||
#define IC_RET 0x5B
|
||||
#define IC_ADD_RSP 0x54
|
||||
#define IC_ADD_RSP1 0x55
|
||||
#define IC_ENTER 0x56
|
||||
#define IC_PUSH_REGS 0x57
|
||||
#define IC_POP_REGS 0x58
|
||||
#define IC_LEAVE 0x59
|
||||
#define IC_RET 0x5A
|
||||
|
||||
#define IC_CALL 0x5C
|
||||
#define IC_CALL_INDIRECT 0x5D
|
||||
#define IC_CALL_INDIRECT2 0x5E
|
||||
#define IC_CALL_IMPORT 0x5F
|
||||
#define IC_CALL_EXTERN 0x60
|
||||
#define IC_IRQ 0x61
|
||||
#define IC_CALL 0x5B
|
||||
#define IC_CALL_INDIRECT 0x5C
|
||||
#define IC_CALL_INDIRECT2 0x5D
|
||||
#define IC_CALL_IMPORT 0x5E
|
||||
#define IC_CALL_EXTERN 0x5F
|
||||
#define IC_IRQ 0x60
|
||||
|
||||
#define IC_ASM 0x62
|
||||
#define IC_CLI 0x63
|
||||
#define IC_STI 0x64
|
||||
#define IC_PREEMPT 0x65
|
||||
#define IC_CLD 0x66
|
||||
#define IC_STD 0x67
|
||||
#define IC_HLT 0x68
|
||||
#define IC_PUSH 0x69
|
||||
#define IC_POP 0x6A
|
||||
#define IC_PUSHFD 0x6B
|
||||
#define IC_POPFD 0x6C
|
||||
#define IC_PAUSE 0x6D
|
||||
#define IC_ASM 0x61
|
||||
#define IC_CLI 0x62
|
||||
#define IC_STI 0x63
|
||||
#define IC_PREEMPT 0x64
|
||||
#define IC_CLD 0x65
|
||||
#define IC_STD 0x66
|
||||
#define IC_HLT 0x67
|
||||
#define IC_PUSH 0x68
|
||||
#define IC_POP 0x69
|
||||
#define IC_PUSHFD 0x6A
|
||||
#define IC_POPFD 0x6B
|
||||
#define IC_PAUSE 0x6C
|
||||
|
||||
#define IC_CLFLUSH 0x6E
|
||||
#define IC_INVLPG 0x6F
|
||||
#define IC_CLFLUSH 0x6D
|
||||
#define IC_INVLPG 0x6E
|
||||
|
||||
#define IC_IN_U8 0x70
|
||||
#define IC_IN_U16 0x71
|
||||
#define IC_IN_U32 0x72
|
||||
#define IC_OUT_U8 0x73
|
||||
#define IC_OUT_U16 0x74
|
||||
#define IC_OUT_U32 0x75
|
||||
#define IC_IN_U8 0x6F
|
||||
#define IC_IN_U16 0x70
|
||||
#define IC_IN_U32 0x71
|
||||
#define IC_OUT_U8 0x72
|
||||
#define IC_OUT_U16 0x73
|
||||
#define IC_OUT_U32 0x74
|
||||
|
||||
#define IC_GET_FLAGS 0x76
|
||||
#define IC_CARRY 0x77
|
||||
#define IC_SET_FLAGS 0x78
|
||||
#define IC_GET_RAX 0x79
|
||||
#define IC_SET_RAX 0x7A
|
||||
#define IC_GET_BASE_PTR 0x7B
|
||||
#define IC_SET_BASE_PTR 0x7C
|
||||
#define IC_GET_STK_PTR 0x7D
|
||||
#define IC_SET_STK_PTR 0x7E
|
||||
#define IC_RIP 0x7F
|
||||
#define IC_GET_RFLAGS 0x75
|
||||
#define IC_CARRY 0x76
|
||||
#define IC_SET_RFLAGS 0x77
|
||||
#define IC_GET_RAX 0x78
|
||||
#define IC_SET_RAX 0x79
|
||||
#define IC_GET_RBP 0x7A
|
||||
#define IC_SET_RBP 0x7B
|
||||
#define IC_GET_RSP 0x7C
|
||||
#define IC_SET_RSP 0x7D
|
||||
#define IC_RIP 0x7E
|
||||
|
||||
#define IC_RDTSC 0x80
|
||||
#define IC_HPET 0x81
|
||||
#define IC_RDTSC 0x7F
|
||||
#define IC_HPET 0x80
|
||||
|
||||
#define IC_BT 0x82
|
||||
#define IC_BTS 0x83
|
||||
#define IC_BTR 0x84
|
||||
#define IC_BTC 0x85
|
||||
#define IC_LBTS 0x86
|
||||
#define IC_LBTR 0x87
|
||||
#define IC_LBTC 0x88
|
||||
#define IC_BSF 0x89
|
||||
#define IC_BSR 0x8A
|
||||
#define IC_BT 0x81
|
||||
#define IC_BTS 0x82
|
||||
#define IC_BTR 0x83
|
||||
#define IC_BTC 0x84
|
||||
#define IC_LBTS 0x85
|
||||
#define IC_LBTR 0x86
|
||||
#define IC_LBTC 0x87
|
||||
#define IC_BSF 0x88
|
||||
#define IC_BSR 0x89
|
||||
|
||||
#define IC_QUE_INIT 0x8B
|
||||
#define IC_QUE_INS 0x8C
|
||||
#define IC_QUE_INS_REV 0x8D
|
||||
#define IC_QUE_REM 0x8E
|
||||
#define IC_QUE_INIT 0x8A
|
||||
#define IC_QUE_INS 0x8B
|
||||
#define IC_QUE_INS_REV 0x8C
|
||||
#define IC_QUE_REM 0x8D
|
||||
|
||||
#define IC_STRLEN 0x8F
|
||||
#define IC_STRLEN 0x8E
|
||||
|
||||
#define IC_BR_ZERO 0x90
|
||||
#define IC_BR_NOT_ZERO 0x91
|
||||
#define IC_BR_ZERO 0x8F
|
||||
#define IC_BR_NOT_ZERO 0x90
|
||||
|
||||
#define IC_BR_NOT_EQUAL 0x92
|
||||
#define IC_BR_EQUAL_EQUAL 0x93
|
||||
#define IC_BR_GREATER_EQUAL 0x94
|
||||
#define IC_BR_LESS_EQUAL 0x95
|
||||
#define IC_BR_GREATER 0x96
|
||||
#define IC_BR_LESS 0x97
|
||||
#define IC_BR_NOT_EQUAL2 0x98
|
||||
#define IC_BR_EQUAL_EQUAL2 0x99
|
||||
#define IC_BR_GREATER_EQUAL2 0x9A
|
||||
#define IC_BR_LESS_EQUAL2 0x9B
|
||||
#define IC_BR_GREATER2 0x9C
|
||||
#define IC_BR_LESS2 0x9D
|
||||
#define IC_BR_AND_ZERO 0x9E
|
||||
#define IC_BR_AND_NOT_ZERO 0x9F
|
||||
#define IC_BR_MM_ZERO 0xA0
|
||||
#define IC_BR_MM_NOT_ZERO 0xA1
|
||||
#define IC_BR_AND_AND_ZERO 0xA2
|
||||
#define IC_BR_AND_AND_NOT_ZERO 0xA3
|
||||
#define IC_BR_OR_OR_ZERO 0xA4
|
||||
#define IC_BR_OR_OR_NOT_ZERO 0xA5
|
||||
#define IC_BR_NOT_EQUAL 0x91
|
||||
#define IC_BR_EQUAL_EQUAL 0x92
|
||||
#define IC_BR_GREATER_EQUAL 0x93
|
||||
#define IC_BR_LESS_EQUAL 0x94
|
||||
#define IC_BR_GREATER 0x95
|
||||
#define IC_BR_LESS 0x96
|
||||
#define IC_BR_NOT_EQUAL2 0x97
|
||||
#define IC_BR_EQUAL_EQUAL2 0x98
|
||||
#define IC_BR_GREATER_EQUAL2 0x99
|
||||
#define IC_BR_LESS_EQUAL2 0x9A
|
||||
#define IC_BR_GREATER2 0x9B
|
||||
#define IC_BR_LESS2 0x9C
|
||||
#define IC_BR_AND_ZERO 0x9D
|
||||
#define IC_BR_AND_NOT_ZERO 0x9E
|
||||
#define IC_BR_MM_ZERO 0x9F
|
||||
#define IC_BR_MM_NOT_ZERO 0xA0
|
||||
#define IC_BR_AND_AND_ZERO 0xA1
|
||||
#define IC_BR_AND_AND_NOT_ZERO 0xA2
|
||||
#define IC_BR_OR_OR_ZERO 0xA3
|
||||
#define IC_BR_OR_OR_NOT_ZERO 0xA4
|
||||
|
||||
#define IC_BR_BT 0xA6
|
||||
#define IC_BR_BTS 0xA7
|
||||
#define IC_BR_BTR 0xA8
|
||||
#define IC_BR_BTC 0xA9
|
||||
#define IC_BR_LBTS 0xAA
|
||||
#define IC_BR_LBTR 0xAB
|
||||
#define IC_BR_LBTC 0xAC
|
||||
#define IC_BR_NOT_BT 0xAD
|
||||
#define IC_BR_NOT_BTS 0xAE
|
||||
#define IC_BR_NOT_BTR 0xAF
|
||||
#define IC_BR_NOT_BTC 0xB0
|
||||
#define IC_BR_NOT_LBTS 0xB1
|
||||
#define IC_BR_NOT_LBTR 0xB2
|
||||
#define IC_BR_NOT_LBTC 0xB3
|
||||
#define IC_BR_BT 0xA5
|
||||
#define IC_BR_BTS 0xA6
|
||||
#define IC_BR_BTR 0xA7
|
||||
#define IC_BR_BTC 0xA8
|
||||
#define IC_BR_LBTS 0xA9
|
||||
#define IC_BR_LBTR 0xAA
|
||||
#define IC_BR_LBTC 0xAB
|
||||
#define IC_BR_NOT_BT 0xAC
|
||||
#define IC_BR_NOT_BTS 0xAD
|
||||
#define IC_BR_NOT_BTR 0xAE
|
||||
#define IC_BR_NOT_BTC 0xAF
|
||||
#define IC_BR_NOT_LBTS 0xB0
|
||||
#define IC_BR_NOT_LBTR 0xB1
|
||||
#define IC_BR_NOT_LBTC 0xB2
|
||||
|
||||
#define IC_SWAP_U8 0xB4
|
||||
#define IC_SWAP_U16 0xB5
|
||||
#define IC_SWAP_U32 0xB6
|
||||
#define IC_SWAP_U64 0xB7
|
||||
#define IC_SWAP_U8 0xB3
|
||||
#define IC_SWAP_U16 0xB4
|
||||
#define IC_SWAP_U32 0xB5
|
||||
#define IC_SWAP_U64 0xB6
|
||||
|
||||
#define IC_ABS_I64 0xB8
|
||||
#define IC_SIGN_I64 0xB9
|
||||
#define IC_MIN_I64 0xBA
|
||||
#define IC_MIN_U64 0xBB
|
||||
#define IC_MAX_I64 0xBC
|
||||
#define IC_MAX_U64 0xBD
|
||||
#define IC_MOD_U64 0xBE
|
||||
#define IC_SQR_I64 0xBF
|
||||
#define IC_SQR_U64 0xC0
|
||||
#define IC_SQR 0xC1
|
||||
#define IC_ABS 0xC2
|
||||
#define IC_SQRT 0xC3
|
||||
#define IC_SIN 0xC4
|
||||
#define IC_COS 0xC5
|
||||
#define IC_TAN 0xC6
|
||||
#define IC_ATAN 0xC7
|
||||
#define IC_NUM_ENTRIES 0xC8
|
||||
#define IC_ABS_I64 0xB7
|
||||
#define IC_SIGN_I64 0xB8
|
||||
#define IC_MIN_I64 0xB9
|
||||
#define IC_MIN_U64 0xBA
|
||||
#define IC_MAX_I64 0xBB
|
||||
#define IC_MAX_U64 0xBC
|
||||
#define IC_MOD_U64 0xBD
|
||||
#define IC_SQR_I64 0xBE
|
||||
#define IC_SQR_U64 0xBF
|
||||
#define IC_SQR 0xC0
|
||||
#define IC_ABS 0xC1
|
||||
#define IC_SQRT 0xC2
|
||||
#define IC_SIN 0xC3
|
||||
#define IC_COS 0xC4
|
||||
#define IC_TAN 0xC5
|
||||
#define IC_ATAN 0xC6
|
||||
#define IC_NUM_ENTRIES 0xC7
|
||||
//Don't forget $LK,"IC_INIT_TABLE","FA:::/TempleOS/Compiler/CmpInit.CPP,IC_INIT_TABLE"$
|
||||
|
||||
#define KW_INCLUDE 0
|
||||
@@ -268,15 +267,17 @@
|
||||
#define KW_ASSERT 33
|
||||
#define KW_REG 34
|
||||
#define KW_NOREG 35
|
||||
#define KW_NOUNUSEDWARN 36
|
||||
#define KW_HELP_INDEX 37
|
||||
#define KW_HELP_FILE 38
|
||||
#define KW_STATIC 39
|
||||
#define KW_INTERRUPT 40
|
||||
#define KW_LOCK 41
|
||||
#define KW_DEFINED 42
|
||||
#define KW_ARGPOP 43
|
||||
#define KW_NOARGPOP 44
|
||||
#define KW_LASTCLASS 36
|
||||
#define KW_NOUNUSEDWARN 37
|
||||
#define KW_HELP_INDEX 38
|
||||
#define KW_HELP_FILE 39
|
||||
#define KW_STATIC 40
|
||||
#define KW_INTERRUPT 41
|
||||
#define KW_HASERRCODE 42
|
||||
#define KW_LOCK 43
|
||||
#define KW_DEFINED 44
|
||||
#define KW_ARGPOP 45
|
||||
#define KW_NOARGPOP 46
|
||||
|
||||
#define AKW_ALIGN 64
|
||||
#define AKW_MODULE_ORG 65
|
||||
@@ -350,12 +351,13 @@
|
||||
|
||||
#define CPS_IS_PUBLIC 1
|
||||
#define CPS_IS_INTERRUPT 2
|
||||
#define CPS_IS_ASM 4
|
||||
#define CPS_IS_STATIC 8
|
||||
#define CPS_IS_ARGPOP 16
|
||||
#define CPS_IS_NOARGPOP 32
|
||||
#define CPS_HASERRCODE 4
|
||||
#define CPS_IS_ASM 8
|
||||
#define CPS_IS_STATIC 16
|
||||
#define CPS_IS_ARGPOP 32
|
||||
#define CPS_IS_NOARGPOP 64
|
||||
|
||||
#define CPS_FUN_FLAGS (CPS_IS_INTERRUPT|CPS_IS_PUBLIC|CPS_IS_ARGPOP|CPS_IS_NOARGPOP)
|
||||
#define CPS_FUN_FLAGS (CPS_IS_INTERRUPT|CPS_HASERRCODE|CPS_IS_PUBLIC|CPS_IS_ARGPOP|CPS_IS_NOARGPOP)
|
||||
|
||||
//Byte 0
|
||||
#define PRS0_NULL 0x000000
|
||||
|
||||
@@ -1,46 +1,41 @@
|
||||
import Bool PutSrcLink(U8 *add,I64 cnt=1,U8 *buf=NULL);
|
||||
import CDoc *DocRead(U8 *name,I64 flags=0);
|
||||
import U0 DocLoad(CDoc *doc,U8 *src2,I64 size);
|
||||
import U0 DocWrite(CDoc *doc,Bool prompt=FALSE);
|
||||
import CDoc *DocNew(CTask *task=NULL);
|
||||
import Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC_ALL);
|
||||
import U0 DocDel(CDoc *doc);
|
||||
import U0 DocRst(CDoc *doc,Bool is_old);
|
||||
import CDocEntry *DocPutLine(CDoc *doc,CDocEntry *doc_e);
|
||||
import I64 DocSize(CDoc *doc);
|
||||
import U8 *Doc2PlainText(CDoc *doc,CDocEntry *doc_e);
|
||||
import U0 HashRep(CHashTable *h=NULL,
|
||||
I64 mask=HTG_ALL,U8 *outname=NULL,U8 *flags=NULL,U8 mapfile_drv=0,U8 *index=NULL,
|
||||
CDoc *_doc=NULL);
|
||||
import U0 Who(U8 *flags=NULL,CHashTable *h=NULL,
|
||||
U8 *outname=NULL,U8 mapfile_drv=0,U8 *index=NULL,CDoc *_doc=NULL);
|
||||
|
||||
extern I64 Expression(CLex *lx);
|
||||
extern Bool GetExpression(CLex *lx,U8 **_ex);
|
||||
extern U0 ExpressionBinDel(U8 *ex);
|
||||
extern I64 LexExpression(CLex *lx);
|
||||
extern Bool IsLexExpression2Bin(CLex *lx,U8 **_ex);
|
||||
extern I64 PrsUnaryTerm(CLex *lx,CPrsStk *ps,CMemberLst **_local_var,CArrayDim **_tempad,
|
||||
I64 *max_prec,I64 *unary_pre_prec,I64 *paren_prec);
|
||||
extern I64 PrsUnaryModifier(CLex *lx,CPrsStk *ps,CMemberLst **_local_var,CArrayDim **_tempad,I64 *unary_post_prec);
|
||||
extern U0 LexExcept(CLex *lx,U8 *name=NULL,CHashFun *fun_class=NULL);
|
||||
extern CExe *CmpJoin(CLex *lx,CHashFun *locals,Bool first_lex,Bool asm_blk=FALSE,U8 *map_name=NULL,U8 mapfile_drv=0);
|
||||
extern U0 CmpFixUpJITAsm(CLex *lx,CExe *ex,I64 ip2);
|
||||
extern U0 CmpFixUpAOTAsm(CLex *lx,CExe *ex,I64 ip2);
|
||||
extern CHashClass *PrsClass(CLex *lx,Bool is_union,I64 cps_flags,Bool is_extern);
|
||||
extern U0 CmpFixUpJITAsm(CLex *lx,CExe *tempx,I64 ip2);
|
||||
extern U0 CmpFixUpAOTAsm(CLex *lx,CExe *tempx,I64 ip2);
|
||||
extern CHashClass *PrsClass(CLex *lx,I64 keyword,I64 cps_flags,Bool is_extern);
|
||||
extern CHashClass *PrsType(CLex *lx,CHashClass **tempc1,
|
||||
I64 *_mode,CMemberLst *tempm,U8 **_ident,CHashFun **_fun_ptr,
|
||||
CHashExport **_tempess,CArrayDim *tempad,I64 cps_flags);
|
||||
CHashExport **_tempex,CArrayDim *tempad,I64 cps_flags);
|
||||
extern U0 PrsVarInit2(CLex *lx,U8 **_dst,CHashClass *tempc,CArrayDim *tempad,U8 *data_addr_ip,U8 **_base,Bool data_heap,I64 pass);
|
||||
extern CHashFun *PrsFunJoin(CLex *lx,
|
||||
CHashClass *temp_return,U8 *name,I64 cps_flags);
|
||||
extern Bool PrsStatement(CLex *lx,CHashFun *locals,I64 try_cnt=0,
|
||||
CCodeBlkMisc *lb_break=NULL,Bool saved_prs_semicolon=TRUE);
|
||||
CLexCodeMisc *lb_break=NULL,Bool saved_prs_semicolon=TRUE);
|
||||
extern CIntermediateCode *OptLag1(CIntermediateCode *tempi);
|
||||
extern U0 OptSetNOP1(CIntermediateCode *tempi);
|
||||
extern CHashClass *OptClassFwd(CHashClass *tempc);
|
||||
extern CCodeBlkMisc *OptLabelFwd(CCodeBlkMisc *lb);
|
||||
extern CIntermediateCode *OptPass012(CLex *lx,CHashFun *fun_class,Bool combined);
|
||||
extern CLexCodeMisc *OptLabelFwd(CLexCodeMisc *lb);
|
||||
extern CIntermediateCode *OptPass012(CLex *lx,CHashFun *fun_class);
|
||||
extern U0 OptPass3(CLex *lx,CHashFun *fun_class,COptReg *register_offsets);
|
||||
extern U0 OptPass4(CLex *lx,COptReg *register_offsets,I64 *_type);
|
||||
extern U0 OptPass5(CLex *lx);
|
||||
extern U0 OptPass6(CLex *lx,CHashFun *fun_class);
|
||||
extern I64 OptPass789A(CLex *lx,CHashFun *fun_class,COptReg *register_offsets,U8 *buf,CDbgInfo **_dbg);
|
||||
extern I64 OptPass789(CLex *lx,CHashFun *fun_class,COptReg *register_offsets,U8 *buf,CDbgInfo **_dbg);
|
||||
extern I64 PrsKeyWord(CLex *lx);
|
||||
extern I64 HashEntrySize2(CHashSrcSym *temph);
|
||||
extern U0 LexPutWarn(CLex *lx,U8 *name=NULL,CHashFun *fun_class=NULL);
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
CHashTable *asm_hash;
|
||||
Bool is_first_compiler,cmp_do_not_write_to_dsk;
|
||||
CHashClass *sys_internal_types[IT_NUM_IT];
|
||||
CIntermediateCode opt_nop;
|
||||
|
||||
U32 *dual_U16_tokens1,*dual_U16_tokens2,*dual_U16_tokens3;
|
||||
U32 *binary_ops_table,*unary_ops_table;
|
||||
U8 *cmp_arg_cnt,*cmp_result_cnt;
|
||||
U8 *deref_bitmap,*assign_bitmap,*not_constant_bitmap,*cmp_bitmap,*fpop_bitmap;
|
||||
U8 *deref_bitmap,*assign_bitmap,*not_const_bitmap,*cmp_bitmap,*fpop_bitmap;
|
||||
I64 num_stk_temps,num_reg_vars,num_non_ptr_vars;
|
||||
I64 stk_temps_mask,reg_vars_mask,non_ptr_vars_mask;
|
||||
U8 *to_stk_temps_map_odd;
|
||||
|
||||
@@ -95,7 +95,7 @@ U0 AsmHashLoad(Bool first)
|
||||
while (lx->token) {
|
||||
if (lx->token!=TK_IDENT)
|
||||
LexExcept(lx,"ST_EXPECTING_IDENTIFIER");
|
||||
i=LstEntryMatch(lx->ident,"R8\0R16\0R32\0R64\0SEG\0FSTK\0MM\0XMM\0OPCODE\0KEYWORD\0ASM_KEYWORD\0");
|
||||
i=LstMatch(lx->ident,"R8\0R16\0R32\0R64\0SEG\0FSTK\0MM\0XMM\0OPCODE\0KEYWORD\0ASM_KEYWORD\0");
|
||||
if (i<0)
|
||||
LexExcept(lx,"Unknown Statement");
|
||||
Lex(lx); //skip keyword
|
||||
@@ -296,6 +296,7 @@ U0 CmpLoadDefines()
|
||||
DefineLoad("ST_UNUSED_VAR","Unused var ");
|
||||
DefineLoad("ST_UNNEEDED_NOUNUSEDWARN","Unneeded nounusedwarn ");
|
||||
DefineLoad("ST_UNUSED_EXTERN","Unused extern ");
|
||||
DefineLoad("ST_UNUSED_IMPORT","Unused import ");
|
||||
DefineLoad("ST_UNUSED_LABEL","Unused label ");
|
||||
DefineLoad("ST_UNUSED_LABEL_AT","Unused label at ");
|
||||
DefineLoad("ST_NOT_ALLOWED_IN_FUN","Not allowed in fun");
|
||||
@@ -314,7 +315,7 @@ U0 CmpLoadDefines()
|
||||
DefineLoad("ST_UNNECESSARY_PARENTHESIS","Unnecessary parenthesis");
|
||||
DefineLoad("ST_STATIC_UNION","Static unions are not implemented");
|
||||
DefineLoad("ST_IMPORT_HASH_TABLE_NOT_ALLOWED","import_hash_table only allowed in AOT compiled #exe{} mode.");
|
||||
DefineLoad("ST_STREAM_EXE_PUTS_NOT_ALLOWED","StreamExePutS only allowed in AOT compiled #exe{} mode.");
|
||||
DefineLoad("ST_STREAM_EXE_PRINT_NOT_ALLOWED","StreamExePrint only allowed in AOT compiled #exe{} mode.");
|
||||
DefineLoad("ST_CANT_INIT_GLBL_ON_HEAP","Can't init glbl var on data heap in AOT module");
|
||||
DefineLoad("ST_INVALID_ARRAY_SIZE","Invalid array size at ");
|
||||
DefineLoad("ST_NO_FUN_ASM_ALIGN","ALIGN not allowed in fun asm blk ");
|
||||
@@ -346,7 +347,7 @@ U0 CmpLoadDefines()
|
||||
DefineLoad("ST_REG_IN_USE","Register in use ");
|
||||
DefineLoad("ST_ONE_BASE_CLASS","Only one base class allowed at this time at ");
|
||||
DefineLoad("ST_ADD_NOT_VAL","Must be address, not value ");
|
||||
DefineLoad("ST_HEADER_FOR_PRINTF","Missing header for PrintF(), PutS() and PutChar() at ");
|
||||
DefineLoad("ST_HEADER_FOR_PRINT","Missing header for Print() and PutChar() at ");
|
||||
DefineLoad("ST_HEADER_FOR_SYSTRY","Missing header for SysTry() and SysUntry() at ");
|
||||
$AN,"Anchor for inserting Compiler Defines","COMPILE_DEFINE"$
|
||||
|
||||
@@ -358,13 +359,12 @@ $AN,"Anchor for inserting Compiler Defines","COMPILE_DEFINE"$
|
||||
|
||||
// '9' arg cnt means var
|
||||
|
||||
// 'N' means not constant. Sets LF_NOT_CONSTANT
|
||||
// 'N' means not const. Sets LF_NOT_CONST
|
||||
// which means an expression contains mem
|
||||
// accesses or things which might change.
|
||||
|
||||
// arg cnt,result cnt,deref/assign/cmp,nonconst,might not fill result
|
||||
"00..END\0"
|
||||
"00..START\0"
|
||||
"00..NOP1\0"
|
||||
"10..END_EXP\0"
|
||||
"00..NOP2\0"
|
||||
@@ -481,15 +481,15 @@ $AN,"Anchor for inserting Compiler Defines","COMPILE_DEFINE"$
|
||||
"20.NOUT_U8\0"
|
||||
"20.NOUT_U16\0"
|
||||
"20.NOUT_U32\0"
|
||||
"00.NGET_FLAGS\0"
|
||||
"00.NGET_RFLAGS\0"
|
||||
"00.NCARRY\0"
|
||||
"10.NSET_FLAGS\0"
|
||||
"10.NSET_RFLAGS\0"
|
||||
"00.NGET_RAX\0"
|
||||
"10.NSET_RAX\0"
|
||||
"00.NGET_BASE_PTR\0"
|
||||
"10.NSET_BASE_PTR\0"
|
||||
"00.NGET_STK_PTR\0"
|
||||
"10.NSET_STK_PTR\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"
|
||||
@@ -576,7 +576,7 @@ U0 CmpFillTables()
|
||||
assign_bitmap=CAlloc((IC_NUM_ENTRIES+7)>>3);
|
||||
deref_bitmap=CAlloc((IC_NUM_ENTRIES+7)>>3);
|
||||
cmp_bitmap=CAlloc((IC_NUM_ENTRIES+7)>>3);
|
||||
not_constant_bitmap=CAlloc((IC_NUM_ENTRIES+7)>>3);
|
||||
not_const_bitmap=CAlloc((IC_NUM_ENTRIES+7)>>3);
|
||||
fpop_bitmap=CAlloc((IC_NUM_ENTRIES+7)>>3);
|
||||
cmp_arg_cnt=CAlloc(IC_NUM_ENTRIES);
|
||||
cmp_result_cnt=CAlloc(IC_NUM_ENTRIES);
|
||||
@@ -591,9 +591,9 @@ U0 CmpFillTables()
|
||||
else if (st[2]=='^')
|
||||
Bts(cmp_bitmap,i);
|
||||
if (st[3]=='N')
|
||||
Bts(not_constant_bitmap,i);
|
||||
Bts(not_const_bitmap,i);
|
||||
st+=StrLen(st)+1;
|
||||
//See $LK,"ST_INTERMEDIATE_CODE","FF:::/TempleOS/Compiler/CodeGen.CPP,ST_INTERMEDIATE_CODE"$.
|
||||
//See $LK,"ST_INTERMEDIATE_CODE","FF:::/TempleOS/Compiler/ICLCC.CPP,ST_INTERMEDIATE_CODE"$.
|
||||
}
|
||||
|
||||
Bts(fpop_bitmap,IC_ADD);
|
||||
|
||||
+170
-182
@@ -1,43 +1,31 @@
|
||||
U0 StreamPutS(U8 *buf)
|
||||
//Inss text into the stream of
|
||||
U0 StreamPrint(U8 *fmt,...)
|
||||
//Inserts text into the stream of
|
||||
//characters being compiled. Called
|
||||
//from withing #exe{} block.
|
||||
{
|
||||
U8 *buf=SPrintJoin(NULL,fmt,argc,argv);
|
||||
CLex *lx=Fs->last_lex;
|
||||
CStreamBlk *tempe=lx->last_stream_blk;
|
||||
if (tempe!=&lx->next_stream_blk)
|
||||
tempe->body=StrAdd(tempe->body,buf);
|
||||
else
|
||||
PrintFErr("No exe{} blk\n");
|
||||
}
|
||||
|
||||
U0 StreamPrintF(U8 *src,...)
|
||||
//Inss text into the stream of
|
||||
//characters being compiled. Called
|
||||
//from withing #exe{} block.
|
||||
{
|
||||
U8 *buf=SPrintFJoin(NULL,src,argc,argv);
|
||||
StreamPutS(buf);
|
||||
PrintErr("No exe{} blk\n");
|
||||
Free(buf);
|
||||
}
|
||||
|
||||
U8 *CmpStatement(CLex *lx,I64 *type)
|
||||
U8 *LexStatement2Bin(CLex *lx,I64 *type)
|
||||
{
|
||||
I64 size,i,j,k,*result=INVALID_PTR;
|
||||
CIntermediateCode *tempi;
|
||||
if (type) *type=IT_I64;
|
||||
Btr(&lx->flags,Lf_OPT_TRACE_PRESENT);
|
||||
if (lx->a_depth==2)
|
||||
CBPush(lx);
|
||||
CBOutPtrsInit(lx);
|
||||
CBICAdd(lx,IC_START,0,0); //So we can scan back an instruction
|
||||
tempi=lx->cbh.cb_last_out_ptr;
|
||||
LCCPush(lx);
|
||||
LCCInit(lx);
|
||||
if (!PrsStatement(lx,NULL)) {
|
||||
if (tempi!=lx->cbh.cb_last_out_ptr) {
|
||||
CBICAdd(lx,IC_RETURN_VAL2,0,NULL);
|
||||
CBICAdd(lx,IC_RET,0,0);
|
||||
CBICAdd(lx,IC_END,0,0);
|
||||
if (result=CBCompile(lx,NULL,&size,NULL,type)) {
|
||||
if (lx->lcc.lcc_root.next!=&lx->lcc.lcc_root) {
|
||||
LCCAdd(lx,IC_RETURN_VAL2,0,NULL);
|
||||
LCCAdd(lx,IC_RET,0,0);
|
||||
if (result=LCCCompile(lx,NULL,&size,NULL,type)) {
|
||||
if (lx->flags&LF_AOT_COMPILE) {
|
||||
j=lx->a->ip;
|
||||
k=(size+7)>>3;
|
||||
@@ -47,12 +35,11 @@ U8 *CmpStatement(CLex *lx,I64 *type)
|
||||
result=j;
|
||||
}
|
||||
}
|
||||
} else
|
||||
LinkedLstDel(lx->cbh.cb_out_first);
|
||||
} else
|
||||
LinkedLstDel(lx->cbh.cb_out_first);
|
||||
} //TODO: else del misc?
|
||||
} else //TODO: too dangerous to del Misc?
|
||||
QueDel(&lx->lcc.lcc_root.next);
|
||||
if (lx->a_depth==2)
|
||||
CBPop(lx);
|
||||
LCCPop(lx);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -62,6 +49,7 @@ CExe *CmpJoin(CLex *lx,CHashFun *locals,Bool first_lex,Bool asm_blk=FALSE,
|
||||
{
|
||||
CAsmCtrl *a,*old_a=lx->a;
|
||||
I64 i,j,l;
|
||||
U8 *ex;
|
||||
CAsmCodeBlk *tempc;
|
||||
CExeImportExport *tempe;
|
||||
Bool okay=TRUE;
|
||||
@@ -75,7 +63,7 @@ CExe *CmpJoin(CLex *lx,CHashFun *locals,Bool first_lex,Bool asm_blk=FALSE,
|
||||
lx->a=a=CAlloc(sizeof(CAsmCtrl));
|
||||
lx->a_depth++;
|
||||
|
||||
a->code=CAlloc(sizeof(CAsmCodeBlk));
|
||||
a->cb=CAlloc(sizeof(CAsmCodeBlk));
|
||||
a->max_align=1;
|
||||
a->module_org=INVALID_PTR;
|
||||
|
||||
@@ -92,17 +80,17 @@ CExe *CmpJoin(CLex *lx,CHashFun *locals,Bool first_lex,Bool asm_blk=FALSE,
|
||||
lx->htc.glbl_hash_table->next=Fs->hash_table;
|
||||
lx->htc.hash_table_lst =asm_hash_alias;
|
||||
|
||||
lx->htc.local_var_lst=locals; //Holy C local vars
|
||||
lx->htc.local_var_lst=locals; //HolyC local vars
|
||||
try {
|
||||
if (first_lex)
|
||||
Lex(lx);
|
||||
if (lx->flags&LF_AOT_COMPILE) {
|
||||
while (lx->token!=TK_EOF) {
|
||||
i=CmpStatement(lx,NULL);
|
||||
if (i!=INVALID_PTR) {
|
||||
ex=LexStatement2Bin(lx,NULL);
|
||||
if (ex!=INVALID_PTR) {
|
||||
tempe=CAlloc(sizeof(CExeImportExport));
|
||||
tempe->type=EIE_MAIN;
|
||||
tempe->ip=i;
|
||||
tempe->ip=ex;
|
||||
QueIns(tempe,result->last_ie);
|
||||
}
|
||||
if (asm_blk)
|
||||
@@ -112,8 +100,7 @@ CExe *CmpJoin(CLex *lx,CHashFun *locals,Bool first_lex,Bool asm_blk=FALSE,
|
||||
PrsStatement(lx,NULL);
|
||||
AsmGlblsResolve(lx,result);
|
||||
} catch {
|
||||
if (Fs->except_argc>0 && Fs->except_argv[0]==EXCEPT_COMPILER &&
|
||||
!asm_blk) {
|
||||
if (Fs->except_argc>0 && Fs->except_argv[0]==EXCEPT_COMPILER && !asm_blk) {
|
||||
if (Fs->except_argc>1 && Fs->except_argv[1]) {
|
||||
"Compiler exception #%d\n",Fs->except_argv[1];
|
||||
LexPutPos(lx);
|
||||
@@ -127,40 +114,40 @@ CExe *CmpJoin(CLex *lx,CHashFun *locals,Bool first_lex,Bool asm_blk=FALSE,
|
||||
lx->error_cnt=1;
|
||||
lx->exe_struct=result->parent_exe;
|
||||
Free(result);
|
||||
LinkedLstDel(a->code);
|
||||
LinkedLstDel(a->cb);
|
||||
result=NULL;
|
||||
} else {
|
||||
if (map_name && !cmp_do_not_write_to_dsk)
|
||||
HashRep(lx->htc.glbl_hash_table,HTG_ALL,map_name,"-r-p",mapfile_drv);
|
||||
Who("-r",lx->htc.glbl_hash_table,map_name,mapfile_drv);
|
||||
HashTableDel(lx->htc.local_hash_table);
|
||||
HashTableDel(lx->htc.glbl_hash_table);
|
||||
|
||||
if (!a->num_code_U8s)
|
||||
result->code=NULL;
|
||||
if (!a->num_ex_U8s)
|
||||
result->ex=NULL;
|
||||
else {
|
||||
if (lx->flags&LF_AOT_COMPILE)
|
||||
result->code=MAlloc(a->num_code_U8s);
|
||||
result->ex=MAlloc(a->num_ex_U8s);
|
||||
else {
|
||||
if (a->module_org==INVALID_PTR)
|
||||
result->code=MAlloc(a->num_code_U8s,Fs->code_heap);
|
||||
result->ex=MAlloc(a->num_ex_U8s,Fs->code_heap);
|
||||
else
|
||||
result->code=a->module_org;
|
||||
result->ex=a->module_org;
|
||||
}
|
||||
result->code_U8s=a->num_code_U8s;
|
||||
tempc=a->code;
|
||||
result->ex_U8s=a->num_ex_U8s;
|
||||
tempc=a->cb;
|
||||
j=0;
|
||||
l=a->num_code_U8s;
|
||||
l=a->num_ex_U8s;
|
||||
while (tempc) {
|
||||
i=l;
|
||||
if (i>ASM_CODE_BLK_SIZE)
|
||||
i=ASM_CODE_BLK_SIZE;
|
||||
MemCpy(result->code+j,tempc->body,i);
|
||||
MemCpy(result->ex+j,tempc->body,i);
|
||||
j+=i;
|
||||
l-=i;
|
||||
tempc=tempc->next;
|
||||
}
|
||||
}
|
||||
LinkedLstDel(a->code);
|
||||
LinkedLstDel(a->cb);
|
||||
result->abss=a->abss;
|
||||
result->heap_glbls=a->heap_glbls;
|
||||
result->max_align =a->max_align;
|
||||
@@ -195,103 +182,96 @@ CExe *CmpBuf(U8 *buf,U8 *map_name=NULL,
|
||||
return result;
|
||||
}
|
||||
|
||||
U0 CmpFixUpJITAsm(CLex *lx,CExe *ex,I64 ip2)
|
||||
U0 CmpFixUpJITAsm(CLex *lx,CExe *tempx,I64 ip2)
|
||||
{
|
||||
I64 i,*str=NULL;
|
||||
U8 *ptr;
|
||||
CExeAbsAddr *tempa,*tempa1;
|
||||
CExeImportExport *tempe,*tempe1;
|
||||
CHashExport *tempess;
|
||||
CHashFun *tempf;
|
||||
CHashGlblVar *tempg;
|
||||
CHashExport *tempex;
|
||||
|
||||
tempa=ex->abss;
|
||||
tempa=tempx->abss;
|
||||
while (tempa) {
|
||||
tempa1=tempa->next;
|
||||
ptr=tempx->ex+tempa->ip;
|
||||
nobound_switch (tempa->type) {
|
||||
case EAA_ADD_U8:
|
||||
*(ex->code(U8 *)+tempa->ip)(U8 *)+=ip2;
|
||||
*ptr(U8 *)+=ip2;
|
||||
break;
|
||||
case EAA_SUB_U8:
|
||||
*(ex->code(U8 *)+tempa->ip)(U8 *)-=ip2;
|
||||
*ptr(U8 *)-=ip2;
|
||||
break;
|
||||
case EAA_ADD_U16:
|
||||
*(ex->code(U8 *)+tempa->ip)(U16 *)+=ip2;
|
||||
*ptr(U16 *)+=ip2;
|
||||
break;
|
||||
case EAA_SUB_U16:
|
||||
*(ex->code(U8 *)+tempa->ip)(U16 *)-=ip2;
|
||||
*ptr(U16 *)-=ip2;
|
||||
break;
|
||||
case EAA_ADD_U32:
|
||||
*(ex->code(U8 *)+tempa->ip)(U32 *)+=ip2;
|
||||
*ptr(U32 *)+=ip2;
|
||||
break;
|
||||
case EAA_SUB_U32:
|
||||
*(ex->code(U8 *)+tempa->ip)(U32 *)-=ip2;
|
||||
*ptr(U32 *)-=ip2;
|
||||
break;
|
||||
case EAA_ADD_U64:
|
||||
*(ex->code(U8 *)+tempa->ip)(I64 *)+=ip2;
|
||||
*ptr(I64 *)+=ip2;
|
||||
break;
|
||||
case EAA_SUB_U64:
|
||||
*(ex->code(U8 *)+tempa->ip)(I64 *)-=ip2;
|
||||
*ptr(I64 *)-=ip2;
|
||||
break;
|
||||
}
|
||||
Free(tempa);
|
||||
tempa=tempa1;
|
||||
}
|
||||
tempe=ex->next_ie;
|
||||
while (tempe!=&ex->next_ie) {
|
||||
tempe=tempx->next_ie;
|
||||
while (tempe!=&tempx->next_ie) {
|
||||
tempe1=tempe->next;
|
||||
if (tempe->str) {
|
||||
Free(str);
|
||||
str=tempe->str;
|
||||
}
|
||||
if (tempe->type<=EIE_LIT_EXPORT) {
|
||||
tempess=CAlloc(sizeof(CHashExport));
|
||||
tempess->str=str;
|
||||
str=NULL;
|
||||
tempess->type=HTT_EXPORT_SYS_SYM|HTF_LIT;
|
||||
if (tempe->type==EIE_LIT_EXPORT)
|
||||
tempess->val=tempe->ip;
|
||||
else
|
||||
tempess->val=tempe->ip+ip2;
|
||||
tempess->src_link=tempe->src_link;
|
||||
tempe->src_link=NULL;
|
||||
if (IsReplaceSyms)
|
||||
HashReplace(tempess,Fs->hash_table);
|
||||
else
|
||||
HashAdd(tempess,Fs->hash_table);
|
||||
SysSymImportsResolve(tempess->str);
|
||||
} else if (tempe->type<EIE_MAIN) {
|
||||
if (tempe->str && !(tempess=HashFind(str,Fs->hash_table,HTG_ALL-HTT_IMPORT_SYS_SYM)))
|
||||
"%S%s\n","ST_UNRESOLVED_REFERENCE",str;
|
||||
else {
|
||||
ptr=tempe->ip+ip2;
|
||||
if (tempess->type & HTT_FUN) {
|
||||
tempf=tempess;
|
||||
if (tempe->type & 1)
|
||||
i=tempf->executable_addr;
|
||||
switch (tempe->type) {
|
||||
case EIE_REL_EXPORT:
|
||||
case EIE_IMM_EXPORT:
|
||||
tempex=CAlloc(sizeof(CHashExport));
|
||||
tempex->str=str;
|
||||
str=NULL;
|
||||
tempex->type=HTT_EXPORT_SYS_SYM|HTF_IMM;
|
||||
if (tempe->type==EIE_IMM_EXPORT)
|
||||
tempex->val=tempe->ip;
|
||||
else
|
||||
tempex->val=tempe->ip+ip2;
|
||||
tempex->src_link=tempe->src_link;
|
||||
tempe->src_link=NULL;
|
||||
if (IsReplaceSyms)
|
||||
HashReplace(tempex,Fs->hash_table);
|
||||
else
|
||||
HashAdd(tempex,Fs->hash_table);
|
||||
SysSymImportsResolve(tempex->str);
|
||||
break;
|
||||
case EIE_REL_U8...EIE_IMM_U64:
|
||||
if (tempe->str && !(tempex=HashFind(str,Fs->hash_table,HTG_ALL-HTT_IMPORT_SYS_SYM)))
|
||||
"%S%s\n","ST_UNRESOLVED_REFERENCE",str;
|
||||
else {
|
||||
ptr=tempe->ip+ip2;
|
||||
if (tempex->type & HTT_FUN)
|
||||
i=tempex(CHashFun *)->executable_addr;
|
||||
else if (tempex->type & HTT_GLBL_VAR)
|
||||
i=tempex(CHashGlblVar *)->data_addr;
|
||||
else
|
||||
i=tempf->executable_addr-ex->code;
|
||||
} else if (tempess->type & HTT_GLBL_VAR) {
|
||||
tempg=tempess;
|
||||
if (tempe->type & 1)
|
||||
i=tempg->data_addr;
|
||||
else
|
||||
i=tempg->data_addr-ex->code;
|
||||
} else {
|
||||
if (tempe->type & 1)
|
||||
i=tempess->val;
|
||||
else
|
||||
i=tempess->val(U8 *)-ex->code;
|
||||
i=tempex->val;
|
||||
nobound_switch (tempe->type) {
|
||||
case EIE_REL_U8: *ptr(U8 *) =i-ptr-1; break;
|
||||
case EIE_IMM_U8: *ptr(U8 *) =i; break;
|
||||
case EIE_REL_U16: *ptr(U16 *)=i-ptr-2; break;
|
||||
case EIE_IMM_U16: *ptr(U16 *)=i; break;
|
||||
case EIE_REL_U32: *ptr(U32 *)=i-ptr-4; break;
|
||||
case EIE_IMM_U32: *ptr(U32 *)=i; break;
|
||||
case EIE_REL_U64: *ptr(I64 *)=i-ptr-8; break;
|
||||
case EIE_IMM_U64: *ptr(I64 *)=i; break;
|
||||
}
|
||||
}
|
||||
if (tempe->type<=EIE_LIT_U8)
|
||||
*ptr(U8 *)+=i;
|
||||
else if (tempe->type<=EIE_LIT_U16)
|
||||
*ptr(U16 *)+=i;
|
||||
else if (tempe->type<=EIE_LIT_U32)
|
||||
*ptr(U32 *)+=i;
|
||||
else if (tempe->type<=EIE_LIT_U64)
|
||||
*ptr(I64 *)+=i;
|
||||
}
|
||||
break;
|
||||
}
|
||||
Free(tempe->src_link);
|
||||
Free(tempe);
|
||||
@@ -299,45 +279,46 @@ U0 CmpFixUpJITAsm(CLex *lx,CExe *ex,I64 ip2)
|
||||
}
|
||||
Free(str);
|
||||
if (!lx->a_depth && Bt(&lx->opts,OPTf_COMPILE_TRACE))
|
||||
Un(ex->code,ex->code_U8s,64);
|
||||
Free(ex);
|
||||
Un(tempx->ex,tempx->ex_U8s,64);
|
||||
Free(tempx);
|
||||
}
|
||||
|
||||
U0 CmpFixUpAOTAsm(CLex *lx,CExe *ex,I64 ip2)
|
||||
U0 CmpFixUpAOTAsm(CLex *lx,CExe *tempx,I64 ip2)
|
||||
{
|
||||
CAsmCtrl *a=lx->a;
|
||||
U8 *ptr;
|
||||
CExeAbsAddr *tempa,*tempa1;
|
||||
CExeImportExport *tempe,*tempe1;
|
||||
|
||||
tempa=ex->abss;
|
||||
tempa=tempx->abss;
|
||||
while (tempa) {
|
||||
tempa1=tempa->next;
|
||||
tempa->next=a->abss;
|
||||
ptr=tempx->ex+tempa->ip;
|
||||
nobound_switch (tempa->type) {
|
||||
case EAA_ADD_U8:
|
||||
*(ex->code(U8 *)+tempa->ip)(U8 *)+=ip2;
|
||||
*ptr(U8 *)+=ip2;
|
||||
break;
|
||||
case EAA_SUB_U8:
|
||||
*(ex->code(U8 *)+tempa->ip)(U8 *)-=ip2;
|
||||
*ptr(U8 *)-=ip2;
|
||||
break;
|
||||
case EAA_ADD_U16:
|
||||
*(ex->code(U8 *)+tempa->ip)(U16 *)+=ip2;
|
||||
*ptr(U16 *)+=ip2;
|
||||
break;
|
||||
case EAA_SUB_U16:
|
||||
*(ex->code(U8 *)+tempa->ip)(U16 *)-=ip2;
|
||||
*ptr(U16 *)-=ip2;
|
||||
break;
|
||||
case EAA_ADD_U32:
|
||||
*(ex->code(U8 *)+tempa->ip)(U32 *)+=ip2;
|
||||
*ptr(U32 *)+=ip2;
|
||||
break;
|
||||
case EAA_SUB_U32:
|
||||
*(ex->code(U8 *)+tempa->ip)(U32 *)-=ip2;
|
||||
*ptr(U32 *)-=ip2;
|
||||
break;
|
||||
case EAA_ADD_U64:
|
||||
*(ex->code(U8 *)+tempa->ip)(I64 *)+=ip2;
|
||||
*ptr(I64 *)+=ip2;
|
||||
break;
|
||||
case EAA_SUB_U64:
|
||||
*(ex->code(U8 *)+tempa->ip)(I64 *)-=ip2;
|
||||
*ptr(I64 *)-=ip2;
|
||||
break;
|
||||
}
|
||||
a->abss=tempa;
|
||||
@@ -345,36 +326,49 @@ U0 CmpFixUpAOTAsm(CLex *lx,CExe *ex,I64 ip2)
|
||||
tempa=tempa1;
|
||||
}
|
||||
|
||||
tempe=ex->next_ie;
|
||||
while (tempe!=&ex->next_ie) {
|
||||
tempe=tempx->next_ie;
|
||||
while (tempe!=&tempx->next_ie) {
|
||||
tempe1=tempe->next;
|
||||
QueRem(tempe);
|
||||
if (tempe->type<=EIE_LIT_EXPORT)
|
||||
tempe->ip+=ip2;
|
||||
else if (tempe->type<EIE_MAIN) {
|
||||
ptr=ex->code(U8 *)+tempe->ip;
|
||||
if (tempe->type<=EIE_LIT_U8)
|
||||
*ptr(U8 *)-=ip2;
|
||||
else if (tempe->type<=EIE_LIT_U16)
|
||||
ptr=tempx->ex+tempe->ip;
|
||||
switch (tempe->type) {
|
||||
case EIE_REL_EXPORT:
|
||||
case EIE_IMM_EXPORT:
|
||||
tempe->ip+=ip2;
|
||||
break;
|
||||
case EIE_REL_U8:
|
||||
case EIE_IMM_U8:
|
||||
*ptr(U8 *) -=ip2;
|
||||
tempe->ip+=ip2;
|
||||
break;
|
||||
case EIE_REL_U16:
|
||||
case EIE_IMM_U16:
|
||||
*ptr(U16 *)-=ip2;
|
||||
else if (tempe->type<=EIE_LIT_U32)
|
||||
tempe->ip+=ip2;
|
||||
break;
|
||||
case EIE_REL_U32:
|
||||
case EIE_IMM_U32:
|
||||
*ptr(U32 *)-=ip2;
|
||||
else if (tempe->type<=EIE_LIT_U64)
|
||||
tempe->ip+=ip2;
|
||||
break;
|
||||
case EIE_REL_U64:
|
||||
case EIE_IMM_U64:
|
||||
*ptr(I64 *)-=ip2;
|
||||
tempe->ip+=ip2;
|
||||
tempe->ip+=ip2;
|
||||
break;
|
||||
}
|
||||
QueIns(tempe,ex->parent_exe->last_ie);
|
||||
QueIns(tempe,tempx->parent_exe->last_ie);
|
||||
tempe=tempe1;
|
||||
}
|
||||
Free(ex);
|
||||
Free(tempx);
|
||||
}
|
||||
|
||||
I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0)
|
||||
{ //Compile file, returns err_cnt
|
||||
U8 *ptr,*fbuf=NULL,*fbuf2=NULL,*fbuf3=NULL,
|
||||
*patch_table=MAlloc(0x20000);
|
||||
CExe *ex;
|
||||
I64 i,cnt,size=0,error_cnt=0,warning_cnt=0,code_U8s=0;
|
||||
CExe *tempx;
|
||||
I64 i,cnt,size=0,error_cnt=0,warning_cnt=0,ex_U8s=0;
|
||||
CBinFile *bfh;
|
||||
CExeImportExport *tempe,*tempe1;
|
||||
CExeAbsAddr *tempa,*tempa1;
|
||||
@@ -382,26 +376,26 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0)
|
||||
CExeHeapGlbl *temphg,*temphg1;
|
||||
|
||||
fbuf=DftExt(filename,"PRJ.Z");
|
||||
fbuf2=MSPrintF("#include \"%s\"",fbuf);
|
||||
fbuf2=MPrint("#include \"%s\"",fbuf);
|
||||
if (map_name)
|
||||
fbuf3=DftExt(map_name,"MAP.Z");
|
||||
ex=CmpBuf(fbuf2,fbuf3,&error_cnt,&warning_cnt,mapfile_drv);
|
||||
tempx=CmpBuf(fbuf2,fbuf3,&error_cnt,&warning_cnt,mapfile_drv);
|
||||
|
||||
if (ex) {
|
||||
code_U8s=ex->code_U8s;
|
||||
if (tempx) {
|
||||
ex_U8s=tempx->ex_U8s;
|
||||
ptr=patch_table;
|
||||
//See $LK,"CBinFilePatchTableWithoutOrg","MN:CBinFilePatchTableWithoutOrg"$
|
||||
*ptr++=EIE_MODULE_ALIGNMENT; //See $LK,"Load","MN:Load"$() and $LK,"BinRep","MN:BinRep"$()
|
||||
*ptr(U32 *)++=ex->max_align;
|
||||
*ptr(U32 *)++=tempx->max_align;
|
||||
*ptr++=0;
|
||||
if (ex->module_org!=INVALID_PTR) {
|
||||
if (tempx->module_org!=INVALID_PTR) {
|
||||
//See $LK,"CBinFilePatchTableWithOrg","MN:CBinFilePatchTableWithOrg"$
|
||||
*ptr++=EIE_MODULE_ORG;
|
||||
*ptr(U32 *)++=ex->module_org;
|
||||
*ptr(U32 *)++=tempx->module_org;
|
||||
*ptr++=0;
|
||||
}
|
||||
cnt=0;
|
||||
tempa=ex->abss;
|
||||
tempa=tempx->abss;
|
||||
while (tempa) {
|
||||
if (!(tempa->type&1))
|
||||
cnt++;
|
||||
@@ -411,7 +405,7 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0)
|
||||
*ptr++=EIE_ABS_ADDR;
|
||||
*ptr(U32 *)++=cnt;
|
||||
*ptr++=0;
|
||||
tempa=ex->abss;
|
||||
tempa=tempx->abss;
|
||||
while (tempa) {
|
||||
tempa1=tempa->next;
|
||||
if (!(tempa->type&1))
|
||||
@@ -420,7 +414,7 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0)
|
||||
tempa=tempa1;
|
||||
}
|
||||
}
|
||||
temphg=ex->heap_glbls;
|
||||
temphg=tempx->heap_glbls;
|
||||
while (temphg) {
|
||||
temphg1=temphg->next;
|
||||
cnt=0;
|
||||
@@ -453,10 +447,10 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0)
|
||||
}
|
||||
|
||||
//Do exports first
|
||||
tempe=ex->next_ie;
|
||||
while (tempe!=&ex->next_ie) {
|
||||
tempe=tempx->next_ie;
|
||||
while (tempe!=&tempx->next_ie) {
|
||||
tempe1=tempe->next;
|
||||
if (tempe->type<=EIE_LIT_EXPORT) {
|
||||
if (tempe->type<=EIE_IMM_EXPORT) {
|
||||
QueRem(tempe);
|
||||
*ptr++=tempe->type;
|
||||
*ptr(U32 *)++=tempe->ip;
|
||||
@@ -474,8 +468,8 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0)
|
||||
}
|
||||
|
||||
//Do imports second
|
||||
tempe=ex->next_ie;
|
||||
while (tempe!=&ex->next_ie) {
|
||||
tempe=tempx->next_ie;
|
||||
while (tempe!=&tempx->next_ie) {
|
||||
tempe1=tempe->next;
|
||||
QueRem(tempe);
|
||||
*ptr++=tempe->type;
|
||||
@@ -496,17 +490,17 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0)
|
||||
MemSet(ptr,0,16);
|
||||
i=ptr-patch_table;
|
||||
//$LK,"TEMPLEOS_XSUM","FF:::/TempleOS/Kernel/KStart.CPP,TEMPLEOS_XSUM"$ needs 16 ALIGN
|
||||
size=(sizeof(CBinFile)+code_U8s+i+15)&-16;
|
||||
size=(sizeof(CBinFile)+ex_U8s+i+15)&-16;
|
||||
bfh=MAlloc(size);
|
||||
bfh->jmp=0xEB+256*(sizeof(CBinFile)-2);
|
||||
#assert sizeof(CBinFile)-2<=MAX_I8
|
||||
bfh->type=0;
|
||||
bfh->loader_patch_table_offset=sizeof(CBinFile)+code_U8s;
|
||||
bfh->loader_patch_table_offset=sizeof(CBinFile)+ex_U8s;
|
||||
bfh->file_size=size;
|
||||
bfh->xsum=TEMPLEOS_XSUM;
|
||||
MemCpy(bfh(U8 *)+sizeof(CBinFile),ex->code,code_U8s);
|
||||
MemCpy(bfh(U8 *)+sizeof(CBinFile)+code_U8s,patch_table,
|
||||
size-code_U8s-sizeof(CBinFile));
|
||||
MemCpy(bfh(U8 *)+sizeof(CBinFile),tempx->ex,ex_U8s);
|
||||
MemCpy(bfh(U8 *)+sizeof(CBinFile)+ex_U8s,patch_table,
|
||||
size-ex_U8s-sizeof(CBinFile));
|
||||
bfh->xsum=ArcXSum(bfh,size);
|
||||
Free(fbuf2);
|
||||
if (out_name)
|
||||
@@ -516,14 +510,14 @@ I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfile_drv=0)
|
||||
if (!cmp_do_not_write_to_dsk)
|
||||
FileWrite(fbuf2,bfh,size);
|
||||
Free(bfh);
|
||||
Free(ex->code);
|
||||
Free(ex);
|
||||
ExpressionBinDel(tempx->ex);
|
||||
Free(tempx);
|
||||
}
|
||||
Free(patch_table);
|
||||
Free(fbuf);
|
||||
Free(fbuf2);
|
||||
Free(fbuf3);
|
||||
PrintF(Define("ST_ERRORS_WARNINGS"),error_cnt,warning_cnt,code_U8s,size);
|
||||
Print(Define("ST_ERRORS_WARNINGS"),error_cnt,warning_cnt,ex_U8s,size);
|
||||
return error_cnt;
|
||||
}
|
||||
|
||||
@@ -565,10 +559,10 @@ I64 ExePutS(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE,CLexHashTableContext
|
||||
return result;
|
||||
}
|
||||
|
||||
I64 ExePrintF(U8 *fmt,...)
|
||||
I64 ExePrint(U8 *fmt,...)
|
||||
{
|
||||
I64 result;
|
||||
U8 *buf=SPrintFJoin(NULL,fmt,argc,argv);
|
||||
U8 *buf=SPrintJoin(NULL,fmt,argc,argv);
|
||||
result=ExePutS(buf);
|
||||
Free(buf);
|
||||
return result;
|
||||
@@ -578,7 +572,7 @@ I64 ExeFile(U8 *name,Bool just_load=FALSE)
|
||||
{
|
||||
I64 result;
|
||||
U8 *name2=DftExt(name,"CPP.Z"),
|
||||
*st=MSPrintF("#include \"%s\";",name2);
|
||||
*st=MPrint("#include \"%s\";",name2);
|
||||
result=ExePutS(st,name,just_load);
|
||||
Free(st);
|
||||
Free(name2);
|
||||
@@ -617,10 +611,10 @@ I64 ExePutS2(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE)
|
||||
return result;
|
||||
}
|
||||
|
||||
I64 ExePrintF2(U8 *fmt,...)
|
||||
I64 ExePrint2(U8 *fmt,...)
|
||||
{ //with REPLACE_SYMS
|
||||
I64 result;
|
||||
U8 *buf=SPrintFJoin(NULL,fmt,argc,argv);
|
||||
U8 *buf=SPrintJoin(NULL,fmt,argc,argv);
|
||||
result=ExePutS2(buf);
|
||||
Free(buf);
|
||||
return result;
|
||||
@@ -630,7 +624,7 @@ I64 ExeFile2(U8 *name,Bool just_load=FALSE)
|
||||
{ //with REPLACE_SYMS
|
||||
I64 result;
|
||||
U8 *name2=DftExt(name,"CPP.Z"),
|
||||
*st=MSPrintF("#include \"%s\";",name2);
|
||||
*st=MPrint("#include \"%s\";",name2);
|
||||
result=ExePutS2(st,name,just_load);
|
||||
Free(st);
|
||||
Free(name2);
|
||||
@@ -656,49 +650,41 @@ I64 ExePutS3(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE)
|
||||
return result;
|
||||
}
|
||||
|
||||
I64 ExePrintF3(U8 *fmt,...)
|
||||
I64 ExePrint3(U8 *fmt,...)
|
||||
{ //throws exceptions
|
||||
I64 result;
|
||||
U8 *buf=SPrintFJoin(NULL,fmt,argc,argv);
|
||||
U8 *buf=SPrintJoin(NULL,fmt,argc,argv);
|
||||
result=ExePutS3(buf);
|
||||
Free(buf);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
I64 ExeFile3(U8 *name,Bool just_load=FALSE)
|
||||
{ //throws exceptions
|
||||
I64 result;
|
||||
U8 *name2=DftExt(name,"CPP.Z"),
|
||||
*st=MSPrintF("#include \"%s\";",name2);
|
||||
*st=MPrint("#include \"%s\";",name2);
|
||||
result=ExePutS3(st,name,just_load);
|
||||
Free(st);
|
||||
Free(name2);
|
||||
return result;
|
||||
}
|
||||
|
||||
I64 StreamExePutS(U8 *buf)
|
||||
I64 StreamExePrint(U8 *fmt,...)
|
||||
{//Suppose you want a value from the stream to be used in an #exe block...
|
||||
CLexHashTableContext *htc;
|
||||
U8 *buf=SPrintJoin(NULL,fmt,argc,argv);
|
||||
I64 result=0;
|
||||
CLexHashTableContext *htc;
|
||||
CLex *lx=Fs->last_lex;
|
||||
if (lx==&Fs->next_lex) {
|
||||
PutErr;
|
||||
"Not Compiling\n";
|
||||
} else {
|
||||
if (!(lx->flags&LF_EXE_BLK))
|
||||
LexExcept(lx,"ST_STREAM_EXE_PUTS_NOT_ALLOWED");
|
||||
LexExcept(lx,"ST_STREAM_EXE_PRINT_NOT_ALLOWED");
|
||||
if (htc=lx->htc.next)
|
||||
result=ExePutS(buf,,,htc);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
I64 StreamExePrintF(U8 *fmt,...)
|
||||
{
|
||||
I64 result;
|
||||
U8 *buf=SPrintFJoin(NULL,fmt,argc,argv);
|
||||
result=StreamExePutS(buf);
|
||||
Free(buf);
|
||||
return result;
|
||||
}
|
||||
@@ -716,10 +702,12 @@ U0 CmpInit()
|
||||
cmp_do_not_write_to_dsk=FALSE;
|
||||
CmpLoadDefines;
|
||||
CmpFillTables;
|
||||
MemSet(&opt_nop,0,sizeof(CIntermediateCode));
|
||||
opt_nop.ic_class=sys_internal_types[IT_I64];
|
||||
|
||||
MemSet(&opt_nop,0,sizeof(CIntermediateCode));
|
||||
QueInit(&opt_nop);
|
||||
opt_nop.ic_class=sys_internal_types[IT_I64];
|
||||
opt_nop.ic_opcode=IC_NOP1;
|
||||
|
||||
AsmHashLoad(is_first_compiler);
|
||||
UnasmHashLoad;
|
||||
}
|
||||
|
||||
@@ -1,482 +0,0 @@
|
||||
U0 CBPutClass(CHashClass *c)
|
||||
{
|
||||
I64 i;
|
||||
if (!c) return;
|
||||
if (c->ptr_cnt>4) {
|
||||
PrintFErr("put_class ptrcnt=%d\n",c->ptr_cnt);
|
||||
while (TRUE)
|
||||
//TODO:
|
||||
Yield;
|
||||
}
|
||||
for (i=0;i<c->ptr_cnt;i++)
|
||||
'*';
|
||||
c-=c->ptr_cnt;
|
||||
if (c->str)
|
||||
"" c->str;
|
||||
else {
|
||||
PrintFErr("put_class str=NULL\n");
|
||||
while (TRUE)
|
||||
//TODO:
|
||||
Yield;
|
||||
}
|
||||
'' CH_SPACE;
|
||||
}
|
||||
|
||||
|
||||
U0 CBPutICArg(CICArg *p)
|
||||
{
|
||||
if (p->ptype)
|
||||
"%Z %Z %Z ",
|
||||
p->type&IT_MASK,"ST_IT_TYPES",
|
||||
p->ptype&IT_MASK,"ST_IT_TYPES",
|
||||
p->type>>4,"ST_TY_TYPES";
|
||||
else
|
||||
"%Z %Z ",
|
||||
p->type&IT_MASK,"ST_IT_TYPES",
|
||||
p->type>>4,"ST_TY_TYPES";
|
||||
switch (p->type>>4) {
|
||||
case TY_STK>>4:
|
||||
"STK";
|
||||
break;
|
||||
case TY_IMM>>4:
|
||||
"#%X",p->disp;
|
||||
break;
|
||||
case TY_REG>>4:
|
||||
"%Z",p->reg,"ST_U64_REGS";
|
||||
break;
|
||||
case TY_DISP>>4:
|
||||
"%X[%Z]",p->disp,p->reg,"ST_U64_REGS";
|
||||
break;
|
||||
case TY_RIP_DISP32>>4:
|
||||
"[%X]",p->disp;
|
||||
break;
|
||||
case TY_SIB>>4:
|
||||
if (p->disp)
|
||||
"%X",p->disp;
|
||||
if (p->reg==CREG_RIP)
|
||||
'[';
|
||||
else
|
||||
"[%Z+",p->reg&7,"ST_U64_REGS";
|
||||
"%Z",p->reg>>8&7,"ST_U64_REGS";
|
||||
switch (p->reg>>14) {
|
||||
case 0: "]"; break;
|
||||
case 1: "*2]"; break;
|
||||
case 2: "*4]"; break;
|
||||
case 3: "*8]"; break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
U0 CBPutIC(CIntermediateCode *tempi)
|
||||
{
|
||||
I64 opcode=tempi->ic_opcode,i;
|
||||
if (opcode>=IC_END_EXP && opcode!=IC_NOP2) {
|
||||
"%15ts %016X ",
|
||||
DefineSub(opcode,"ST_INTERMEDIATE_CODE")+4,
|
||||
tempi->ic_data;
|
||||
if (tempi->r.type&TY_MASK) {
|
||||
CBPutICArg(&tempi->r);
|
||||
"<-";
|
||||
}
|
||||
if (tempi->p1.type&TY_MASK)
|
||||
CBPutICArg(&tempi->p1);
|
||||
',';
|
||||
if (tempi->p2.type&TY_MASK)
|
||||
CBPutICArg(&tempi->p2);
|
||||
'' CH_SPACE;
|
||||
CBPutClass(tempi->ic_class);
|
||||
if (tempi->ic_flags & ICF_LOCK)
|
||||
"$$FG,BROWN$$lock$$FG$$ ";
|
||||
if (tempi->ic_flags & ICF_P2_TO_F64)
|
||||
"$$FG,LTBLUE$$p2d$$FG$$ ";
|
||||
if (tempi->ic_flags & ICF_P2_TO_INT)
|
||||
"$$FG,GREEN$$p2i$$FG$$ ";
|
||||
if (tempi->ic_flags & ICF_P1_TO_F64)
|
||||
"$$FG,LTBLUE$$p1d$$FG$$ ";
|
||||
if (tempi->ic_flags & ICF_P1_TO_INT)
|
||||
"$$FG,GREEN$$p1i$$FG$$ ";
|
||||
if (tempi->ic_flags & ICF_R_TO_F64)
|
||||
"$$FG,LTBLUE$$rd$$FG$$ ";
|
||||
if (tempi->ic_flags & ICF_R_TO_INT)
|
||||
"$$FG,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)
|
||||
"DELINS ";
|
||||
for (i=0;i<4;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 ";
|
||||
NewLine;
|
||||
}
|
||||
}
|
||||
|
||||
CIntermediateCode *CBICAdd(CLex *lx,
|
||||
I64 opcode_and_precedence,I64 arg, CHashClass *c,I64 flags=0)
|
||||
{
|
||||
CIntermediateCode *tempi=lx->cbh.cb_out_ptr;
|
||||
CCodeBlk *cb,*cb1;
|
||||
lx->cbh.cb_last_out_ptr=tempi;
|
||||
tempi->ic_opcode=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;
|
||||
if (lx->opts & OPTF_PARSE_TRACE)
|
||||
CBPutIC(tempi);
|
||||
tempi++;
|
||||
if (tempi>=lx->cbh.cb_out_end) {
|
||||
cb=MAlloc(sizeof(CCodeBlk));
|
||||
cb->next=NULL;
|
||||
cb1=lx->cbh.cb_out_last;
|
||||
cb1->next=lx->cbh.cb_out_last=cb;
|
||||
tempi=&cb->data;
|
||||
lx->cbh.cb_out_end=tempi+CB_IC_CNT;
|
||||
}
|
||||
lx->cbh.cb_out_ptr=tempi;
|
||||
return lx->cbh.cb_last_out_ptr;
|
||||
}
|
||||
|
||||
U0 CBOutPtrsInit(CLex *lx)
|
||||
{
|
||||
CLexCodeBlkCtrl *tempcbh=&lx->cbh;
|
||||
CCodeBlk *cb=MAlloc(sizeof(CCodeBlk));
|
||||
cb->next=NULL;
|
||||
tempcbh->cb_out_first=tempcbh->cb_out_last=cb;
|
||||
tempcbh->cb_misc_lst=NULL;
|
||||
tempcbh->cb_misc_lst_end=&tempcbh->cb_misc_lst;
|
||||
tempcbh->cb_out_ptr=&cb->data;
|
||||
tempcbh->cb_out_end=tempcbh->cb_out_ptr+CB_IC_CNT;
|
||||
tempcbh->cb_last_out_ptr=&cb->data;
|
||||
}
|
||||
|
||||
U0 CBInPtrsInit(CLexCodeBlkCtrl *tempcbh)
|
||||
{
|
||||
CCodeBlk *cb=tempcbh->cb_out_first;
|
||||
tempcbh->cb_in_first=cb;
|
||||
tempcbh->cb_in_ptr=&cb->data;
|
||||
tempcbh->cb_in_end=tempcbh->cb_in_ptr+CB_IC_CNT;
|
||||
}
|
||||
|
||||
U0 CBPutAllIC(CLex *lx)
|
||||
{
|
||||
CIntermediateCode *tempi;
|
||||
CBInPtrsInit(&lx->cbh);
|
||||
tempi=lx->cbh.cb_in_ptr;
|
||||
while (tempi->ic_opcode) {
|
||||
if (tempi->ic_flags&ICF_TRACE)
|
||||
CBPutIC(tempi);
|
||||
tempi++;
|
||||
}
|
||||
}
|
||||
|
||||
CIntermediateCode *CBGetIC1(CLexCodeBlkCtrl *lx)
|
||||
{
|
||||
CIntermediateCode *tempi=lx->cb_in_ptr,
|
||||
*tempi1=tempi+1;
|
||||
CCodeBlk *cb;
|
||||
if (tempi1>=lx->cb_in_end) {
|
||||
cb=tempi1(U8 *)-sizeof(CIntermediateCode)*CB_IC_CNT-offset(CCodeBlk.data);
|
||||
cb=cb->next;
|
||||
tempi1=&cb->data;
|
||||
lx->cb_in_end=tempi1+CB_IC_CNT;
|
||||
}
|
||||
lx->cb_in_ptr=tempi1;
|
||||
return tempi;
|
||||
}
|
||||
|
||||
U0 CBPush(CLex *lx)
|
||||
{
|
||||
CLexCodeBlkCtrl *tempcbh=MAlloc(sizeof(CLexCodeBlkCtrl));
|
||||
MemCpy(tempcbh,&lx->cbh,sizeof(CLexCodeBlkCtrl));
|
||||
if (lx->cbh.cb_misc_lst_end==&lx->cbh.cb_misc_lst)
|
||||
tempcbh->cb_misc_lst_end=&tempcbh->cb_misc_lst;
|
||||
lx->cbh.cb_next=tempcbh;
|
||||
}
|
||||
|
||||
U0 CBPop(CLex *lx)
|
||||
{
|
||||
CLexCodeBlkCtrl *tempcbh=lx->cbh.cb_next;
|
||||
MemCpy(&lx->cbh,tempcbh,sizeof(CLexCodeBlkCtrl));
|
||||
if (tempcbh->cb_misc_lst_end==&tempcbh->cb_misc_lst)
|
||||
lx->cbh.cb_misc_lst_end=&lx->cbh.cb_misc_lst;
|
||||
Free(tempcbh);
|
||||
}
|
||||
|
||||
CCodeBlkMisc *CBGoToLabelFind(CLex *lx,U8 *name)
|
||||
{
|
||||
CCodeBlkMisc *mc=lx->cbh.cb_misc_lst;
|
||||
while (mc) {
|
||||
if (mc->type==CBMT_GOTO_LABEL) {
|
||||
if (!StrCmp(mc->str,name))
|
||||
return mc;
|
||||
}
|
||||
mc=mc->next;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
CCodeBlkMisc *CBMiscNew(CLex *lx,I64 ty)
|
||||
{
|
||||
CCodeBlkMisc *result=CAlloc(sizeof(CCodeBlkMisc));
|
||||
lx->cbh.cb_misc_lst_end->next=result;
|
||||
lx->cbh.cb_misc_lst_end=result;
|
||||
result->addr=INVALID_PTR;
|
||||
result->type=ty;
|
||||
return result;
|
||||
}
|
||||
|
||||
I64 CBFloatConstFind(CLex *lx,F64 d)
|
||||
{
|
||||
I64 i;
|
||||
CCodeBlkMisc *mc=lx->cbh.cb_misc_lst;
|
||||
while (mc) {
|
||||
if (mc->type==CBMT_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<CBM_MAX_CONSTS) {
|
||||
mc->float_consts[mc->num_consts++]=d;
|
||||
return mc->addr+i*sizeof(F64);
|
||||
}
|
||||
}
|
||||
mc=mc->next;
|
||||
}
|
||||
mc=CBMiscNew(lx,CBMT_FLOAT_CONSTS);
|
||||
mc->float_consts=MAlloc(CBM_MAX_CONSTS*sizeof(F64));
|
||||
mc->float_consts[mc->num_consts++]=d;
|
||||
return mc->addr;
|
||||
}
|
||||
|
||||
U0 CBMiscLstDel(CLex *lx)
|
||||
{
|
||||
CCodeBlkMisc *mc=lx->cbh.cb_misc_lst,*mc1;
|
||||
U8 *undef=NULL;
|
||||
while (mc) {
|
||||
mc1=mc->next;
|
||||
switch (mc->type) {
|
||||
case CBMT_GOTO_LABEL:
|
||||
if (!(mc->flags&CBMF_DEFINED)) {
|
||||
undef=mc->str;
|
||||
mc->str=NULL;
|
||||
} else if (!(mc->flags&CBMF_USED)) {
|
||||
PrintFWarn("%S%s\n","ST_UNUSED_LABEL",mc->str);
|
||||
LexPutWarn(lx,"ST_UNUSED_LABEL_AT");
|
||||
}
|
||||
break;
|
||||
case CBMT_JMP_TABLE:
|
||||
Free(mc->jmp_table);
|
||||
break;
|
||||
case CBMT_FLOAT_CONSTS:
|
||||
Free(mc->float_consts);
|
||||
break;
|
||||
case CBMT_ARRAY_DIM:
|
||||
LinkedLstDel(mc->dim);
|
||||
break;
|
||||
case CBMT_HASH_ENTRY:
|
||||
HashDel(mc->h);
|
||||
break;
|
||||
}
|
||||
Free(mc->str);
|
||||
Free(mc);
|
||||
mc=mc1;
|
||||
}
|
||||
if (undef) {
|
||||
PrintFErr("%S%s\n","ST_UNDEFINED_GOTO_LABEL",undef);
|
||||
Free(undef);
|
||||
LexExcept(lx,"ST_UNDEFINED_GOTO_LABEL_AT");
|
||||
}
|
||||
}
|
||||
|
||||
CLex *CBPopNoFree(CLex *lx)
|
||||
{
|
||||
CLexCodeBlkCtrl *tempcbh=lx->cbh.cb_next;
|
||||
MemCpy(&lx->cbh,tempcbh,sizeof(CLexCodeBlkCtrl));
|
||||
if (tempcbh->cb_misc_lst_end==&tempcbh->cb_misc_lst)
|
||||
lx->cbh.cb_misc_lst_end=&lx->cbh.cb_misc_lst;
|
||||
return tempcbh;
|
||||
}
|
||||
|
||||
U0 CBAppend(CLex *lx, CLexCodeBlkCtrl *tempcbh)
|
||||
{
|
||||
CIntermediateCode *tempi,*tempi1;
|
||||
CBInPtrsInit(tempcbh);
|
||||
do {
|
||||
tempi=CBGetIC1(tempcbh);
|
||||
if (tempi->ic_opcode) {
|
||||
tempi1=CBICAdd(lx,tempi->ic_opcode+tempi->ic_precedence<<16,tempi->ic_data,
|
||||
tempi->ic_class,tempi->ic_flags);
|
||||
tempi1->ic_line=tempi->ic_line;
|
||||
}
|
||||
} while (tempi->ic_opcode);
|
||||
LinkedLstDel(tempcbh->cb_out_first);
|
||||
|
||||
if (tempcbh->cb_misc_lst_end!=&tempcbh->cb_misc_lst) {
|
||||
lx->cbh.cb_misc_lst_end->next=tempcbh->cb_misc_lst;
|
||||
lx->cbh.cb_misc_lst_end=tempcbh->cb_misc_lst_end;
|
||||
}
|
||||
Free(tempcbh);
|
||||
}
|
||||
|
||||
U0 CBCombine(CLex *lx)
|
||||
{
|
||||
CCodeBlk *cb=lx->cbh.cb_out_first,*cb1,*cb2;
|
||||
I64 i=0,j=sizeof(CIntermediateCode)*CB_IC_CNT;
|
||||
U8 *ptr;
|
||||
while (cb) {
|
||||
i++;
|
||||
cb=cb->next;
|
||||
}
|
||||
if (i>1) {
|
||||
cb1=MAlloc(i*j+offset(CCodeBlk.data));
|
||||
cb1->next=NULL;
|
||||
cb=lx->cbh.cb_out_first;
|
||||
ptr=&cb1->data;
|
||||
i--;
|
||||
while (i--) {
|
||||
cb2=cb->next;
|
||||
MemCpy(ptr,&cb->data,j);
|
||||
ptr+=j;
|
||||
Free(cb);
|
||||
cb=cb2;
|
||||
}
|
||||
MemCpy(ptr,&cb->data,lx->cbh.cb_out_ptr(I64)-(&cb->data)(I64));
|
||||
Free(cb);
|
||||
lx->cbh.cb_out_first=cb1;
|
||||
}
|
||||
}
|
||||
|
||||
U8 *CBCompile(CLex *lx,CHashFun *fun_class,
|
||||
I64 *code_size,CDbgInfo **_dbg,I64 *type=NULL)
|
||||
{
|
||||
U8 *result;
|
||||
COptReg register_offsets[NUM_REGS];
|
||||
if (_dbg) *_dbg=NULL;
|
||||
CBCombine(lx);
|
||||
if (Bt(&lx->flags,Lf_OPT_TRACE_PRESENT)) {
|
||||
if (Bt(&lx->pass_trace_mask,0)) {
|
||||
"$$IV,1$$Before Pass 1:$$IV,0$$\n";
|
||||
CBPutAllIC(lx);
|
||||
}
|
||||
}
|
||||
lx->pass=1;
|
||||
OptPass012(lx,fun_class,TRUE);
|
||||
if (Bt(&lx->flags,Lf_OPT_TRACE_PRESENT)) {
|
||||
if (Bt(&lx->pass_trace_mask,1)) {
|
||||
"$$IV,1$$After Pass 1:$$IV,0$$\n";
|
||||
CBPutAllIC(lx);
|
||||
}
|
||||
}
|
||||
lx->pass=2;
|
||||
OptPass012(lx,fun_class,TRUE);
|
||||
if (Bt(&lx->flags,Lf_OPT_TRACE_PRESENT)) {
|
||||
if (Bt(&lx->pass_trace_mask,2)) {
|
||||
"$$IV,1$$After Pass 2:$$IV,0$$\n";
|
||||
CBPutAllIC(lx);
|
||||
}
|
||||
}
|
||||
lx->pass=3;
|
||||
OptPass3(lx,fun_class,register_offsets);
|
||||
if (Bt(&lx->flags,Lf_OPT_TRACE_PRESENT)) {
|
||||
if (Bt(&lx->pass_trace_mask,3)) {
|
||||
"$$IV,1$$After Pass 3:$$IV,0$$\n";
|
||||
CBPutAllIC(lx);
|
||||
}
|
||||
}
|
||||
lx->pass=4;
|
||||
OptPass4(lx,register_offsets,type);
|
||||
if (Bt(&lx->flags,Lf_OPT_TRACE_PRESENT)) {
|
||||
if (Bt(&lx->pass_trace_mask,4)) {
|
||||
"$$IV,1$$After Pass 4:$$IV,0$$\n";
|
||||
CBPutAllIC(lx);
|
||||
}
|
||||
}
|
||||
lx->pass=5;
|
||||
OptPass5(lx);
|
||||
if (Bt(&lx->flags,Lf_OPT_TRACE_PRESENT)) {
|
||||
if (Bt(&lx->pass_trace_mask,5)) {
|
||||
"$$IV,1$$After Pass 5:$$IV,0$$\n";
|
||||
CBPutAllIC(lx);
|
||||
}
|
||||
}
|
||||
lx->pass=6;
|
||||
OptPass6(lx,fun_class);
|
||||
if (Bt(&lx->flags,Lf_OPT_TRACE_PRESENT)) {
|
||||
if (Bt(&lx->pass_trace_mask,6)) {
|
||||
"$$IV,1$$After Pass 6:$$IV,0$$\n";
|
||||
CBPutAllIC(lx);
|
||||
}
|
||||
}
|
||||
|
||||
if (Bt(&lx->flags,Lf_OPT_TRACE_PRESENT))
|
||||
if (Bt(&lx->pass_trace_mask,7))
|
||||
"$$IV,1$$Pass 7:$$IV,0$$\n";
|
||||
lx->pass=7;
|
||||
OptPass789A(lx,fun_class,register_offsets,NULL,NULL);
|
||||
|
||||
if (Bt(&lx->flags,Lf_OPT_TRACE_PRESENT))
|
||||
if (Bt(&lx->pass_trace_mask,8))
|
||||
"$$IV,1$$Pass 8:$$IV,0$$\n";
|
||||
lx->pass=8;
|
||||
OptPass789A(lx,fun_class,register_offsets,NULL,NULL);
|
||||
|
||||
if (Bt(&lx->flags,Lf_OPT_TRACE_PRESENT))
|
||||
if (Bt(&lx->pass_trace_mask,9))
|
||||
"$$IV,1$$Pass 9:$$IV,0$$\n";
|
||||
lx->pass=9;
|
||||
*code_size=OptPass789A(lx,fun_class,register_offsets,NULL,NULL);
|
||||
if (lx->flags&LF_AOT_COMPILE)
|
||||
result=MAlloc(*code_size);
|
||||
else
|
||||
result=MAlloc(*code_size,Fs->code_heap);
|
||||
|
||||
if (Bt(&lx->flags,Lf_OPT_TRACE_PRESENT))
|
||||
if (Bt(&lx->pass_trace_mask,0xA))
|
||||
"$$IV,1$$Pass A:$$IV,0$$\n";
|
||||
lx->pass=0xA;
|
||||
*code_size=OptPass789A(lx,fun_class,register_offsets,result,_dbg);
|
||||
compiled_bytes+=*code_size;
|
||||
|
||||
LinkedLstDel(lx->cbh.cb_out_first);
|
||||
CBMiscLstDel(lx);
|
||||
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);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
Binary file not shown.
@@ -9,7 +9,6 @@ public extern I64 LexGetChar(CLex *lx);
|
||||
public extern U0 LexSkipEol(CLex *lx);
|
||||
public extern U0 LexPush(CLex *lx);
|
||||
public extern U0 LexPop(CLex *lx);
|
||||
//public extern U0 LexSubStkPtr(CLex *lx);
|
||||
public extern I64 Lex(CLex *lx);
|
||||
public extern U8 *LexExtStr(CLex *lx,I64 *_size=NULL);
|
||||
public extern U0 LexPutLine(CLex *lx,U8 *start);
|
||||
@@ -17,26 +16,24 @@ public extern U0 LexPutPos(CLex *lx);
|
||||
public extern U0 LexPutWarn(CLex *lx,U8 *name=NULL,CHashFun *fun_class=NULL);
|
||||
public extern I64 PrsKeyWord(CLex *lx);
|
||||
public extern U0 LexExcept(CLex *lx,U8 *name=NULL,CHashFun *fun_class=NULL);
|
||||
public extern U8 *CmpExpression(CLex *lx,I64 *type=NULL);
|
||||
public extern U8 *CmpStatement(CLex *lx,I64 *type);
|
||||
public extern I64 GetExpression(CLex *lx,U8 **ex); //FALSE=no err
|
||||
public extern I64 Expression(CLex *lx);
|
||||
public extern U0 ExpressionDel(U8 *code);
|
||||
public extern U8 *LexExpression2Bin(CLex *lx,I64 *type=NULL);
|
||||
public extern U8 *LexStatement2Bin(CLex *lx,I64 *type);
|
||||
public extern I64 IsLexExpression2Bin(CLex *lx,U8 **ex); //FALSE=no err
|
||||
public extern I64 LexExpression(CLex *lx);
|
||||
public extern U0 ExpressionBinDel(U8 *ex);
|
||||
public extern I64 MemberMetaData(U8 *st,CMemberLst *ml);
|
||||
extern U0 MemberLstDel(CHashClass *c);
|
||||
public extern CMemberLstMeta *MemberMetaFind(U8 *st,CMemberLst *ml);
|
||||
public extern CMemberLst *MemberFind(U8 *st,CHashClass *c);
|
||||
public extern CMemberLst *MemberFind2(CHashClass *pattern,CHashClass *tempc);
|
||||
public extern U0 LexAttachDoc(CLex *lx,CLexFile *tempf=NULL,
|
||||
CDoc *doc=NULL,U8 *abs_filename=NULL,CDocEntry *doc_e=NULL,I64 col=0);
|
||||
CDoc *doc=NULL,U8 *abs_filename=NULL,CDocEntry *doc_e=NULL,I64 col=0);
|
||||
public extern CHashClass *OptClassFwd(CHashClass *tempc);
|
||||
|
||||
#help_index "Compiler/Directive"
|
||||
#help_file "::/TempleOS/Doc/Directives"
|
||||
public extern U0 StreamPutS(U8 *buf);
|
||||
public extern U0 StreamPrintF(U8 *src,...);
|
||||
public extern I64 StreamExePutS(U8 *buf);
|
||||
public extern I64 StreamExePrintF(U8 *fmt,...);
|
||||
public extern U0 StreamPrint(U8 *fmt,...);
|
||||
public extern I64 StreamExePrint(U8 *fmt,...);
|
||||
public extern Bool PTrace(Bool val);
|
||||
public extern Bool OTrace(Bool val);
|
||||
public extern I64 OPassTraceMask(I64 i=0b1001111101);
|
||||
@@ -65,20 +62,18 @@ public extern I64 Cmp(U8 *filename,U8 *map_name=NULL,U8 *out_name=NULL,U8 mapfil
|
||||
#help_index "Compiler"
|
||||
public extern I64 ExePutS(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE,
|
||||
CLexHashTableContext *htc=NULL);
|
||||
public extern I64 ExePrintF(U8 *fmt,...);
|
||||
public extern I64 ExePrint(U8 *fmt,...);
|
||||
public extern I64 ExeFile(U8 *name,Bool just_load=FALSE);
|
||||
public extern I64 ExePutS2(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE);
|
||||
public extern I64 ExePrintF2(U8 *fmt,...);
|
||||
public extern I64 ExePrint2(U8 *fmt,...);
|
||||
public extern I64 ExeFile2(U8 *name,Bool just_load=FALSE);
|
||||
public extern I64 ExePutS3(U8 *buf,U8 *filename=NULL,Bool just_load=FALSE);
|
||||
public extern I64 ExePrintF3(U8 *fmt,...);
|
||||
public extern I64 ExePrint3(U8 *fmt,...);
|
||||
public extern I64 ExeFile3(U8 *name,Bool just_load=FALSE);
|
||||
extern CHashTable *asm_hash;
|
||||
extern U0 CmpInit(Bool first);
|
||||
extern I64 compiled_lines,compiled_funs,compiled_bytes;
|
||||
|
||||
|
||||
|
||||
//The following is for benchmarking
|
||||
extern Bool cmp_do_not_write_to_dsk;
|
||||
|
||||
|
||||
+461
-482
@@ -1,202 +1,197 @@
|
||||
$LK+BI,"AsmCodeInstruction ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,807",1$000000C1AE 0001 0000001367 Funct
|
||||
$LK+BI,"AsmExpressionEval ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,185",2$000000A7B8 0004 00000000B8 Funct
|
||||
$LK+BI,"AsmGlblsResolve ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,273",3$000000ABA0 0001 00000005D7 Funct
|
||||
$LK+BI,"AsmHashLoad ","FL:D:/TempleOS/Compiler/CmpInit.CPP.Z,77",4$0000030D18 0001 000000064F Funct
|
||||
$LK+BI,"AsmLineLst ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,29",5$000000A230 0001 0000000143 Funct
|
||||
$LK+BI,"AsmLocalsResolve ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,207",6$000000A870 0003 0000000329 Funct
|
||||
$LK+BI,"AsmMakeArgMask ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,584",7$000000B738 0002 000000045D Funct
|
||||
$LK+BI,"AsmPrsInsFlags ","FL:D:/TempleOS/Compiler/CmpInit.CPP.Z,27",8$00000304B8 0001 000000085D Funct
|
||||
$LK+BI,"AsmStoreCodeU32 ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,90",9$000000A478 0001 0000000149 Funct
|
||||
$LK+BI,"AsmStoreCodeU64 ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,129",10$000000A5C8 0005 000000014A Funct
|
||||
$LK+BI,"AsmStoreCodeU8 ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,61",11$000000A378 001C 00000000FF Funct
|
||||
$LK+BI,"AsmStoreCodeU8At ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,168",12$000000A718 0016 00000000A0 Funct
|
||||
$LK+BI,"AsmStoreNum ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,668",13$000000BB98 0004 000000060E Funct
|
||||
$LK+BI,"AsmUnresolvedAdd ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,1",14$000000A150 0008 00000000DF Funct
|
||||
$LK+BI,"CBAppend ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,328",15$0000009560 0002 000000009D Funct
|
||||
$LK+BI,"CBCombine ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,349",16$0000009600 0001 00000000CA Funct
|
||||
$LK+BI,"CBCompile ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,377",17$00000096D0 0006 00000004AA Funct
|
||||
$LK+BI,"CBFloatConstFind ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,257",18$00000092C8 000F 00000000BE Funct
|
||||
$LK+BI,"CBGetIC1 ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,201",19$0000009140 0004 000000004C Funct
|
||||
$LK+BI,"CBGoToLabelFind ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,234",20$0000009228 0002 0000000049 Funct
|
||||
$LK+BI,"CBICAdd ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,135",21$0000008F58 00B9 00000000FA Funct
|
||||
$LK+BI,"CBInPtrsInit ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,181",22$00000090C8 0003 0000000030 Funct
|
||||
$LK+BI,"CBMiscLstDel ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,279",23$0000009388 0001 000000018D Funct
|
||||
$LK+BI,"CBMiscNew ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,247",24$0000009278 001A 000000004A Funct
|
||||
$LK+BI,"CBOutPtrsInit ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,168",25$0000009058 000A 000000006C Funct
|
||||
$LK+BI,"CBPop ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,225",26$00000091E0 0009 0000000045 Funct
|
||||
$LK+BI,"CBPopNoFree ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,319",27$0000009518 0001 0000000042 Funct
|
||||
$LK+BI,"CBPush ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,216",28$0000009190 000E 000000004B Funct
|
||||
$LK+BI,"CBPutAllIC ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,189",29$00000090F8 0007 0000000043 Funct
|
||||
$LK+BI,"CBPutClass ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,1",30$0000008838 0001 00000000C5 Funct
|
||||
$LK+BI,"CBPutIC ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,71",31$0000008BF8 0006 000000035E Funct
|
||||
$LK+BI,"CBPutICArg ","FL:D:/TempleOS/Compiler/CodeGen.CPP.Z,26",32$0000008900 0003 00000002F3 Funct
|
||||
$LK,"CInternalType ","FL:D:/TempleOS/Compiler/CmpInit.CPP.Z,4"$007FD83B48 0002 000000000A Class
|
||||
CMP_OPT_NOP 0000000000 0003 ExportSysSym
|
||||
$LK,"CMP_TEMPLATES ","FL:D:/TempleOS/Compiler/CmpAsm.CPP.Z,164"$00000001F6 0001 ExportSysSym
|
||||
$LK,"CMP_TEMPLATES_DONT_POP ","FL:D:/TempleOS/Compiler/CmpAsm.CPP.Z,338"$000000038B 0001 ExportSysSym
|
||||
$LK,"CMP_TEMPLATES_DONT_PUSH ","FL:D:/TempleOS/Compiler/CmpAsm.CPP.Z,427"$0000000457 0001 ExportSysSym
|
||||
$LK,"CMP_TEMPLATES_DONT_PUSH2 ","FL:D:/TempleOS/Compiler/CmpAsm.CPP.Z,618"$000000062D 0001 ExportSysSym
|
||||
$LK,"CMP_TEMPLATES_DONT_PUSH_POP","FL:D:/TempleOS/Compiler/CmpAsm.CPP.Z,554"$000000059D 0001 ExportSysSym
|
||||
$LK+BI,"AsmGlblsResolve ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,275",1$000000A360 0001 00000005D7 Funct Export
|
||||
$LK+BI,"AsmHashLoad ","FL:D:/TempleOS/Compiler/CmpInit.CPP.Z,77",2$000002F088 0001 000000064A Funct Export
|
||||
$LK+BI,"AsmLexExpression ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,187",3$0000009F78 0004 00000000B8 Funct Export
|
||||
$LK+BI,"AsmLineLst ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,31",4$00000099F0 0001 0000000143 Funct Export
|
||||
$LK+BI,"AsmLocalsResolve ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,209",5$000000A030 0003 0000000329 Funct Export
|
||||
$LK+BI,"AsmMakeArgMask ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,586",6$000000AEF8 0002 00000004A3 Funct Export
|
||||
$LK+BI,"AsmPrsInsFlags ","FL:D:/TempleOS/Compiler/CmpInit.CPP.Z,27",7$000002E828 0001 000000085C Funct Export
|
||||
$LK+BI,"AsmStoreCodeU32 ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,92",8$0000009C38 0001 0000000149 Funct Export
|
||||
$LK+BI,"AsmStoreCodeU64 ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,131",9$0000009D88 0005 000000014A Funct Export
|
||||
$LK+BI,"AsmStoreCodeU8 ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,63",10$0000009B38 001C 00000000FF Funct Export
|
||||
$LK+BI,"AsmStoreCodeU8At ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,170",11$0000009ED8 0016 00000000A0 Funct Export
|
||||
$LK+BI,"AsmStoreNum ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,680",12$000000B3A0 0004 00000004A6 Funct Export
|
||||
$LK+BI,"AsmUnresolvedAdd ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,1",13$0000009908 0004 00000000E2 Funct Export
|
||||
$LK,"CInternalType ","FL:D:/TempleOS/Compiler/CmpInit.CPP.Z,4"$007FCDDD58 0002 000000000A Class
|
||||
$LK,"CMP_TEMPLATES ","FL:D:/TempleOS/Compiler/CmpAsm.CPP.Z,5"$0000000000 0001 ExportSysSym Export
|
||||
$LK,"CMP_TEMPLATES_DONT_POP ","FL:D:/TempleOS/Compiler/CmpAsm.CPP.Z,179"$000000018B 0001 ExportSysSym Export
|
||||
$LK,"CMP_TEMPLATES_DONT_PUSH ","FL:D:/TempleOS/Compiler/CmpAsm.CPP.Z,268"$0000000257 0001 ExportSysSym Export
|
||||
$LK,"CMP_TEMPLATES_DONT_PUSH2 ","FL:D:/TempleOS/Compiler/CmpAsm.CPP.Z,459"$0000000421 0001 ExportSysSym Export
|
||||
$LK,"CMP_TEMPLATES_DONT_PUSH_POP","FL:D:/TempleOS/Compiler/CmpAsm.CPP.Z,395"$0000000391 0001 ExportSysSym Export
|
||||
$LK,"CN_MAIN ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,220"$0 0028 0000000008 DefineStr
|
||||
$LK,"CN_P1 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,221"$1 0006 0000000008 DefineStr
|
||||
$LK,"CN_P2 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,222"$2 0005 0000000008 DefineStr
|
||||
$LK,"CN_R ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,223"$3 0003 0000000008 DefineStr
|
||||
$LK,"CSwitchCase ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1396"$007FCBA0A8 0004 0000000018 Class
|
||||
$LK+BI,"CTrace ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,38",33$0000003220 0000 0000000017 Funct
|
||||
$LK,"CVI2 ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,213"$007FCBD098 0003 0000000010 Class
|
||||
$LK+BI,"Cmp ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,372",34$0000034FB8 0000 000000059B Funct
|
||||
$LK+BI,"CmpBuf ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,179",35$0000034880 0001 00000000F7 Funct
|
||||
$LK+BI,"CmpExpression ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,1233",36$00000123A6 0004 00000000B4 Funct
|
||||
$LK+BI,"CmpF1PushPop ","FL:D:/TempleOS/Compiler/OptPass3.CPP.Z,21",37$0000029030 0002 0000000034 Funct
|
||||
$LK+BI,"CmpF2PushPop ","FL:D:/TempleOS/Compiler/OptPass3.CPP.Z,27",38$0000029068 0005 0000000080 Funct
|
||||
$LK+BI,"CmpFillTables ","FL:D:/TempleOS/Compiler/CmpInit.CPP.Z,570",39$0000033A28 0001 0000000640 Funct
|
||||
$LK+BI,"CmpFixUpAOTAsm ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,306",40$0000034D58 0000 000000025C Funct
|
||||
$LK+BI,"CmpFixUpJITAsm ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,198",41$0000034978 0000 00000003DC Funct
|
||||
$LK+BI,"CmpInit ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,706",42$0000035C58 0001 00000000B8 Funct
|
||||
$LK+BI,"CmpJoin ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,60",43$0000034248 0001 0000000636 Funct
|
||||
$LK+BI,"CmpLoadDefines ","FL:D:/TempleOS/Compiler/CmpInit.CPP.Z,222",44$0000031368 0001 00000026BC Funct
|
||||
$LK+BI,"CmpNoteFloatOp ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,225",45$0000017C6E 000E 000000021F Funct
|
||||
$LK+BI,"CmpOffset2Reg ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,96",46$0000024540 0005 0000000042 Funct
|
||||
$LK+BI,"CmpPType ","FL:D:/TempleOS/Compiler/OptPass3.CPP.Z,10",47$0000028FF8 0005 0000000033 Funct
|
||||
$LK+BI,"CmpPmt ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,1",48$0000003380 0001 000000022A Funct
|
||||
$LK+BI,"CmpSetFloatOpPushPop ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,276",49$0000017E8E 000E 000000007B Funct
|
||||
$LK+BI,"CmpStatement ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,24",50$0000034100 0001 0000000148 Funct
|
||||
$LK+BI,"CmpType ","FL:D:/TempleOS/Compiler/OptPass3.CPP.Z,1",51$0000028FD0 0006 0000000025 Funct
|
||||
$LK+BI,"DefineU8s ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,1216",52$000000D516 0004 00000002D2 Funct
|
||||
$LK+BI,"Echo ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,48",53$0000003250 0000 0000000017 Funct
|
||||
$LK+BI,"ExeFile ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,577",54$0000035748 0000 0000000077 Funct
|
||||
$LK+BI,"ExeFile2 ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,629",55$0000035968 0000 0000000075 Funct
|
||||
$LK+BI,"ExeFile3 ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,669",56$0000035AF0 0000 0000000075 Funct
|
||||
$LK+BI,"ExePrintF ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,568",57$0000035700 0000 0000000045 Funct
|
||||
$LK+BI,"ExePrintF2 ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,620",58$0000035920 0000 0000000043 Funct
|
||||
$LK+BI,"ExePrintF3 ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,659",59$0000035AA8 0000 0000000043 Funct
|
||||
$LK+BI,"ExePutS ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,530",60$0000035558 0003 00000001A1 Funct
|
||||
$LK+BI,"ExePutS2 ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,588",61$00000357C0 0002 0000000159 Funct
|
||||
$LK+BI,"ExePutS3 ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,640",62$00000359E0 0002 00000000C4 Funct
|
||||
$LK+BI,"Expression ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,1258",63$000001248E 0007 000000003B Funct
|
||||
$LK+BI,"ExpressionDel ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,372",64$0000005084 000B 0000000014 Funct
|
||||
$LK,"FBO1_F64 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,107"$2 0002 0000000008 DefineStr
|
||||
$LK,"FBO1_INT ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,106"$1 0013 0000000008 DefineStr
|
||||
$LK,"FBO1_NOT_CONST ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,105"$0 0004 0000000008 DefineStr
|
||||
$LK+BI,"GetExpression ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,1253",65$000001245E 0000 0000000029 Funct
|
||||
$LK+BI,"GetOpt ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,16",66$0000003188 0005 000000002C Funct
|
||||
$LK+BI,"HashEntryImportCopy ","FL:D:/TempleOS/Compiler/Hash1b.CPP.Z,1",67$0000009B80 0002 000000015F Funct
|
||||
$LK+BI,"HashEntrySize ","FL:D:/TempleOS/Compiler/Hash1b.CPP.Z,71",68$0000009DC8 0000 0000000164 Funct
|
||||
$LK+BI,"HashEntrySize2 ","FL:D:/TempleOS/Compiler/Hash1b.CPP.Z,102",69$0000009F30 0002 00000001A9 Funct
|
||||
$LK+BI,"HashTableImport ","FL:D:/TempleOS/Compiler/Hash1b.CPP.Z,40",70$0000009CE0 0000 00000000E8 Funct
|
||||
$LK+BI,"HashTableSize2 ","FL:D:/TempleOS/Compiler/Hash1b.CPP.Z,139",71$000000A0E0 0000 000000006B Funct
|
||||
$LK+BI,"ICAddConst ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,945",72$00000199F6 000C 000000074A Funct
|
||||
$LK+BI,"ICAddEct ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,889",73$0000019706 0005 00000002EF Funct
|
||||
$LK+BI,"ICAddRSP ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,163",74$00000179E6 0016 0000000286 Funct
|
||||
$LK+BI,"ICAddSubEctEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2711",75$000001EB26 0005 0000000673 Funct
|
||||
$LK+BI,"ICAndAnd ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2980",76$000001F7B6 0001 0000000147 Funct
|
||||
$LK+BI,"ICAndBranch ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3823",77$0000021BC6 0002 000000070C Funct
|
||||
$LK+BI,"ICAndEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4484",78$0000023A9E 0001 0000000109 Funct
|
||||
$LK+BI,"ICAssign ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3981",79$00000222D6 0001 0000000308 Funct
|
||||
$LK+BI,"ICAssignPostIncDec ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3501",80$0000020E9E 0002 000000020C Funct
|
||||
$LK+BI,"ICBitOps ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3194",81$000002009E 0007 00000004FB Funct
|
||||
$LK+BI,"ICBrBitOps ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4030",82$00000225DE 0008 0000000980 Funct
|
||||
$LK+BI,"ICBuiltInFloatConst ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,633",83$0000018B1E 000F 00000000BD Funct
|
||||
$LK+BI,"ICCmp ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3074",84$000001FBB6 0006 00000004E6 Funct
|
||||
$LK+BI,"ICCmpAndBranch ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3543",85$00000210AE 000C 000000081C Funct
|
||||
$LK+BI,"ICCopyTemplate ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,288",86$0000017F0E 0019 000000026C Funct
|
||||
$LK+BI,"ICDeref ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,871",87$000001964E 0001 00000000B5 Funct
|
||||
$LK+BI,"ICDerefPostIncDec ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3458",88$0000020CAE 0002 00000001ED Funct
|
||||
$LK+BI,"ICDiv ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2619",89$000001E656 0001 00000000F2 Funct
|
||||
$LK+BI,"ICDivEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2638",90$000001E74E 0002 00000002E0 Funct
|
||||
$LK+BI,"ICFAdd ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2490",91$000001DF2E 0001 00000001FB Funct
|
||||
$LK+BI,"ICFCmp ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1611",92$000001B6C6 0004 0000000187 Funct
|
||||
$LK+BI,"ICFCmpAndBranch ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2042",93$000001CC46 0004 0000000A47 Funct
|
||||
$LK+BI,"ICFCvt ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1177",94$000001A53E 000C 000000017B Funct
|
||||
$LK+BI,"ICFCvt2 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1225",95$000001A6BE 0010 0000000112 Funct
|
||||
$LK+BI,"ICFDiv ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2466",96$000001DDEE 0001 000000013D Funct
|
||||
$LK+BI,"ICFMod ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1303",97$000001A9B6 0001 0000000141 Funct
|
||||
$LK+BI,"ICFModEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1651",98$000001B84E 0001 00000003FA Funct
|
||||
$LK+BI,"ICFMul ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2426",99$000001DBB6 0001 0000000235 Funct
|
||||
$LK+BI,"ICFOp ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1412",100$000001ADEE 0004 00000008D3 Funct
|
||||
$LK+BI,"ICFOpEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1718",101$000001BC4E 0004 0000000FF3 Funct
|
||||
$LK+BI,"ICFPostIncDec ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2340",102$000001D79E 0002 0000000151 Funct
|
||||
$LK+BI,"ICFPow ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1333",103$000001AAFE 0001 00000002ED Funct
|
||||
$LK+BI,"ICFPreIncDec ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2318",104$000001D68E 0002 000000010A Funct
|
||||
$LK+BI,"ICFSub ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2528",105$000001E12E 0001 0000000120 Funct
|
||||
$LK+BI,"ICFTemplateFun ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3365",106$000002082E 0007 00000000A8 Funct
|
||||
$LK+BI,"ICFUnaryMinus ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1252",107$000001A7D6 0001 00000001DC Funct
|
||||
$LK+BI,"ICLastIns ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,135",108$0000017946 0002 00000000A0 Funct
|
||||
$LK+BI,"ICLea ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,837",109$000001947E 0004 00000001CD Funct
|
||||
$LK+BI,"ICLocalVarInit ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4645",110$000002416E 0001 0000000078 Funct
|
||||
$LK+BI,"ICMinMax ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4305",111$0000023356 0004 00000002B7 Funct
|
||||
$LK+BI,"ICMod ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2692",112$000001EA2E 0001 00000000F2 Funct
|
||||
$LK+BI,"ICModU64 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4384",113$000002365E 0001 00000001BB Funct
|
||||
$LK+BI,"ICModr1 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,352",114$000001817E 0017 0000000326 Funct
|
||||
$LK+BI,"ICModr2 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,443",115$00000184A6 0015 00000000D5 Funct
|
||||
$LK+BI,"ICMov ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,656",116$0000018BDE 01A4 000000089C Funct
|
||||
$LK+BI,"ICMul ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2368",117$000001D8F6 0001 00000002BA Funct
|
||||
$LK+BI,"ICMulEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2551",118$000001E24E 0001 0000000408 Funct
|
||||
$LK+BI,"ICNot ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2960",119$000001F6B6 0001 00000000FB Funct
|
||||
$LK+BI,"ICOpSizeRex ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,46",120$000001759E 0006 0000000113 Funct
|
||||
$LK+BI,"ICOr ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,623",121$0000018ACE 000C 000000004A Funct
|
||||
$LK+BI,"ICOrEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4507",122$0000023BAE 0001 0000000109 Funct
|
||||
$LK+BI,"ICOrOr ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3009",123$000001F8FE 0001 000000015E Funct
|
||||
$LK+BI,"ICPop ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,574",124$0000018906 000A 000000010B Funct
|
||||
$LK+BI,"ICPopRegs ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,601",125$0000018A16 000C 0000000055 Funct
|
||||
$LK+BI,"ICPostIncDec ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3418",126$0000020AAE 0002 00000001FB Funct
|
||||
$LK+BI,"ICPreIncDec ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3381",127$00000208D6 0004 00000001D7 Funct
|
||||
$LK+BI,"ICPreempt ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3298",128$000002059E 0001 0000000122 Funct
|
||||
$LK+BI,"ICPush ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,523",129$00000186E6 0020 00000001C1 Funct
|
||||
$LK+BI,"ICPushRegs ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,561",130$00000188AE 0006 0000000053 Funct
|
||||
$LK+BI,"ICQueInit ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4193",131$0000022F5E 0001 0000000070 Funct
|
||||
$LK+BI,"ICQueIns ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4207",132$0000022FCE 0001 0000000179 Funct
|
||||
$LK+BI,"ICQueInsRev ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4248",133$000002314E 0001 0000000179 Funct
|
||||
$LK+BI,"ICQueRem ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4289",134$00000232CE 0001 0000000088 Funct
|
||||
$LK+BI,"ICRex ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,32",135$0000017516 0016 0000000081 Funct
|
||||
$LK+BI,"ICShift ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2849",136$000001F19E 0004 0000000197 Funct
|
||||
$LK+BI,"ICShiftEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2883",137$000001F336 0002 000000030C Funct
|
||||
$LK+BI,"ICSlashOp ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,495",138$000001857E 0027 0000000164 Funct
|
||||
$LK+BI,"ICSqr ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4377",139$000002360E 0002 000000004A Funct
|
||||
$LK+BI,"ICSub ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1099",140$000001A146 0001 00000003F2 Funct
|
||||
$LK+BI,"ICSwap ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4426",141$000002381E 0001 000000027C Funct
|
||||
$LK+BI,"ICSwitch ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4553",142$0000023DC6 0002 00000003A1 Funct
|
||||
$LK+BI,"ICTestAndBranch ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3742",143$00000218CE 0002 00000001EA Funct
|
||||
$LK+BI,"ICToBool ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3350",144$00000207B6 0001 0000000071 Funct
|
||||
$LK+BI,"ICToF64 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3345",145$0000020776 0001 000000003D Funct
|
||||
$LK+BI,"ICToI64 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3340",146$0000020736 0001 000000003D Funct
|
||||
$LK+BI,"ICToUpper ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3329",147$00000206C6 0001 000000006B Funct
|
||||
$LK+BI,"ICU16 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,72",148$00000176B6 0090 00000000A8 Funct
|
||||
$LK+BI,"ICU24 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,87",149$000001775E 0063 00000000D3 Funct
|
||||
$LK+BI,"ICU32 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,104",150$0000017836 0051 0000000082 Funct
|
||||
$LK+BI,"ICU64 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,120",151$00000178BE 0009 0000000082 Funct
|
||||
$LK+BI,"ICU8 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,20",152$0000017496 0062 000000007C Funct
|
||||
$LK+BI,"ICUnaries ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2951",153$000001F646 0002 0000000069 Funct
|
||||
$LK+BI,"ICXorEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4530",154$0000023CBE 0001 0000000103 Funct
|
||||
$LK+BI,"ICXorXor ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3041",155$000001FA5E 0001 0000000151 Funct
|
||||
$LK+BI,"ICZFlagBranch ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3790",156$0000021ABE 0002 0000000104 Funct
|
||||
$LK+BI,"ICZero ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,614",157$0000018A6E 0017 000000005E Funct
|
||||
$LK+BI,"ImportHashTable ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,56",158$0000003278 0000 00000000D5 Funct
|
||||
$LK+BI,"IncludeDepth ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,76",159$0000003350 0000 000000002C Funct
|
||||
$LK+BI,"InstEntriesCompare ","FL:D:/TempleOS/Compiler/Unassembler.CPP.Z,1",160$0000000858 0001 000000022B Funct
|
||||
$LK+BI,"InstEntryFind ","FL:D:/TempleOS/Compiler/Unassembler.CPP.Z,71",161$0000000A88 0002 0000000375 Funct
|
||||
$LK+BI,"IsReplaceSyms ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,52",162$0000003268 000A 000000000D Funct
|
||||
$LK+BI,"LTrace ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,43",163$0000003238 0000 0000000017 Funct
|
||||
$LK+BI,"Lex ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,789",164$0000005F08 00FC 000000254A Funct
|
||||
$LK+BI,"LexAttachDoc ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,425",165$00000051D0 0001 0000000169 Funct
|
||||
$LK+BI,"LexBackupLastChar ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,140",166$00000039AC 0003 000000003D Funct
|
||||
$LK+BI,"LexDel ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,65",167$00000036E8 0005 000000008D Funct
|
||||
$LK+BI,"LexDocRead ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,407",168$0000005140 0001 0000000090 Funct
|
||||
$LK+BI,"LexDollar ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,151",169$00000039EC 0003 000000006C Funct
|
||||
$LK+BI,"LexExcept ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,1670",170$0000008770 00A1 00000000C6 Funct
|
||||
$LK+BI,"LexExtStr ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,1588",171$0000008458 0004 00000000C1 Funct
|
||||
$LK+BI,"LexGetChar ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,165",172$0000003A5C 0030 00000015FA Funct
|
||||
$LK+BI,"LexInStr ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,691",173$00000059E0 0001 0000000524 Funct
|
||||
$LK+BI,"LexIncludeStr ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,377",174$000000509C 0003 0000000095 Funct
|
||||
$LK+BI,"LexNew ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,37",175$00000035B0 0005 0000000133 Funct
|
||||
$LK+BI,"LexPop ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,482",176$00000053C8 0004 0000000070 Funct
|
||||
$LK+BI,"LexPush ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,470",177$0000005340 000F 0000000082 Funct
|
||||
$LK+BI,"LexPutLine ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,1613",178$0000008520 0003 00000000A7 Funct
|
||||
$LK+BI,"LexPutPos ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,1640",179$00000085C8 0003 00000000CA Funct
|
||||
$LK+BI,"LexPutToken ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,117",180$0000003890 0002 0000000111 Funct
|
||||
$LK+BI,"LexPutWarn ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,1654",181$0000008698 0011 00000000D3 Funct
|
||||
$LK+BI,"LexSize ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,85",182$0000003778 0000 0000000098 Funct
|
||||
$LK+BI,"LexSkipEol ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,365",183$000000505C 0004 0000000027 Funct
|
||||
$LK,"CSwitchCase ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1389"$007FCFB750 0004 0000000018 Class
|
||||
$LK+BI,"CTrace ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,38",14$0000002FA8 0000 0000000017 Funct Export
|
||||
$LK,"CVI2 ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,224"$007FCFE000 0003 0000000010 Class
|
||||
$LK+BI,"Cmp ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,366",15$0000033308 0000 0000000597 Funct Export
|
||||
$LK+BI,"CmpBuf ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,166",16$0000032BB8 0001 00000000FD Funct Export
|
||||
$LK+BI,"CmpF1PushPop ","FL:D:/TempleOS/Compiler/OptPass3.CPP.Z,21",17$00000272B6 0002 0000000035 Funct Export
|
||||
$LK+BI,"CmpF2PushPop ","FL:D:/TempleOS/Compiler/OptPass3.CPP.Z,27",18$00000272EE 0005 000000007C Funct Export
|
||||
$LK+BI,"CmpFillTables ","FL:D:/TempleOS/Compiler/CmpInit.CPP.Z,570",19$0000031DA8 0001 0000000630 Funct Export
|
||||
$LK+BI,"CmpFixUpAOTAsm ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,286",20$00000330A8 0000 000000025B Funct Export
|
||||
$LK+BI,"CmpFixUpJITAsm ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,185",21$0000032CB8 0000 00000003F0 Funct Export
|
||||
$LK+BI,"CmpInit ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,692",22$0000033F88 0001 00000000C9 Funct Export
|
||||
$LK+BI,"CmpJoin ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,47",23$0000032580 0001 0000000632 Funct Export
|
||||
$LK+BI,"CmpLoadDefines ","FL:D:/TempleOS/Compiler/CmpInit.CPP.Z,222",24$000002F6D8 0001 00000026CB Funct Export
|
||||
$LK+BI,"CmpNoteFloatOp ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,225",25$00000169AE 000E 000000021C Funct Export
|
||||
$LK+BI,"CmpOffset2Reg ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,100",26$0000022D56 0005 0000000042 Funct Export
|
||||
$LK+BI,"CmpPType ","FL:D:/TempleOS/Compiler/OptPass3.CPP.Z,10",27$000002727E 0005 0000000033 Funct Export
|
||||
$LK+BI,"CmpPmt ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,1",28$0000003110 0001 000000023A Funct Export
|
||||
$LK+BI,"CmpSetFloatOpPushPop ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,276",29$0000016BCE 000E 000000007B Funct Export
|
||||
$LK+BI,"CmpType ","FL:D:/TempleOS/Compiler/OptPass3.CPP.Z,1",30$0000027256 0006 0000000025 Funct Export
|
||||
$LK+BI,"Echo ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,48",31$0000002FD8 0000 0000000017 Funct Export
|
||||
$LK+BI,"ExeFile ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,571",32$0000033A90 0000 0000000077 Funct Export
|
||||
$LK+BI,"ExeFile2 ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,623",33$0000033CB0 0000 0000000075 Funct Export
|
||||
$LK+BI,"ExeFile3 ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,662",34$0000033E38 0000 0000000075 Funct Export
|
||||
$LK+BI,"ExePrint ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,562",35$0000033A48 0000 0000000045 Funct Export
|
||||
$LK+BI,"ExePrint2 ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,614",36$0000033C68 0000 0000000043 Funct Export
|
||||
$LK+BI,"ExePrint3 ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,653",37$0000033DF0 0000 0000000043 Funct Export
|
||||
$LK+BI,"ExePutS ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,524",38$00000338A0 0003 00000001A1 Funct Export
|
||||
$LK+BI,"ExePutS2 ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,582",39$0000033B08 0002 0000000159 Funct Export
|
||||
$LK+BI,"ExePutS3 ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,634",40$0000033D28 0002 00000000C4 Funct Export
|
||||
$LK+BI,"ExpressionBinDel ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,1184",41$00000112DE 0008 0000000014 Funct Export
|
||||
$LK,"FBO1_F64 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,111"$2 0002 0000000008 DefineStr
|
||||
$LK,"FBO1_INT ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,110"$1 0013 0000000008 DefineStr
|
||||
$LK,"FBO1_NOT_CONST ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,109"$0 0004 0000000008 DefineStr
|
||||
$LK+BI,"GetOpt ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,16",42$0000002F10 0005 000000002C Funct Export
|
||||
$LK+BI,"HashEntryImportCopy ","FL:D:/TempleOS/Compiler/Hash1b.CPP.Z,1",43$0000009338 0002 000000015F Funct Export
|
||||
$LK+BI,"HashEntrySize ","FL:D:/TempleOS/Compiler/Hash1b.CPP.Z,71",44$0000009580 0000 0000000164 Funct Export
|
||||
$LK+BI,"HashEntrySize2 ","FL:D:/TempleOS/Compiler/Hash1b.CPP.Z,102",45$00000096E8 0002 00000001A9 Funct Export
|
||||
$LK+BI,"HashTableImport ","FL:D:/TempleOS/Compiler/Hash1b.CPP.Z,40",46$0000009498 0000 00000000E8 Funct Export
|
||||
$LK+BI,"HashTableSize2 ","FL:D:/TempleOS/Compiler/Hash1b.CPP.Z,139",47$0000009898 0000 000000006B Funct Export
|
||||
$LK+BI,"ICAddEct ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,889",48$0000018426 0005 00000002EF Funct Export
|
||||
$LK+BI,"ICAddRSP ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,163",49$0000016726 0017 0000000284 Funct Export
|
||||
$LK+BI,"ICAddSubEctEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2714",50$000001D6C6 0005 000000066F Funct Export
|
||||
$LK+BI,"ICAddSubEctImm ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,945",51$0000018716 000D 0000000705 Funct Export
|
||||
$LK+BI,"ICAndAnd ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2983",52$000001E34E 0001 0000000147 Funct Export
|
||||
$LK+BI,"ICAndBranch ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3807",53$000002065E 0002 0000000704 Funct Export
|
||||
$LK+BI,"ICAndEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4468",54$000002246E 0001 0000000109 Funct Export
|
||||
$LK+BI,"ICArgPut ","FL:D:/TempleOS/Compiler/ICLCC.CPP.Z,28",55$0000008408 0003 000000030D Funct Export
|
||||
$LK+BI,"ICAssign ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3965",56$0000020D66 0001 00000002FD Funct Export
|
||||
$LK+BI,"ICAssignPostIncDec ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3504",57$000001FA1E 0002 000000020C Funct Export
|
||||
$LK+BI,"ICBitOps ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3197",58$000001EC36 0007 00000004ED Funct Export
|
||||
$LK+BI,"ICBrBitOps ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4014",59$0000021066 0008 000000091E Funct Export
|
||||
$LK+BI,"ICBuiltInFloatConst ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,633",60$0000017846 000F 00000000BD Funct Export
|
||||
$LK+BI,"ICClassPut ","FL:D:/TempleOS/Compiler/ICLCC.CPP.Z,3",61$0000008338 0001 00000000CF Funct Export
|
||||
$LK+BI,"ICCmp ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3077",62$000001E74E 0006 00000004E6 Funct Export
|
||||
$LK+BI,"ICCmpAndBranch ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3546",63$000001FC2E 000C 0000000738 Funct Export
|
||||
$LK+BI,"ICCopyTemplate ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,288",64$0000016C4E 0019 000000026C Funct Export
|
||||
$LK+BI,"ICDeref ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,871",65$000001836E 0001 00000000B5 Funct Export
|
||||
$LK+BI,"ICDerefPostIncDec ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3461",66$000001F82E 0002 00000001ED Funct Export
|
||||
$LK+BI,"ICDiv ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2622",67$000001D1F6 0001 00000000F2 Funct Export
|
||||
$LK+BI,"ICDivEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2641",68$000001D2EE 0002 00000002E0 Funct Export
|
||||
$LK+BI,"ICFAdd ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2493",69$000001CACE 0001 00000001FB Funct Export
|
||||
$LK+BI,"ICFCmp ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1611",70$000001A38E 0004 0000000187 Funct Export
|
||||
$LK+BI,"ICFCmpAndBranch ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2042",71$000001B82E 0004 0000000A03 Funct Export
|
||||
$LK+BI,"ICFCvt ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1177",72$0000019216 000C 000000017B Funct Export
|
||||
$LK+BI,"ICFCvt2 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1225",73$0000019396 0010 0000000112 Funct Export
|
||||
$LK+BI,"ICFDiv ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2469",74$000001C98E 0001 000000013D Funct Export
|
||||
$LK+BI,"ICFMod ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1303",75$000001968E 0001 0000000141 Funct Export
|
||||
$LK+BI,"ICFModEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1651",76$000001A516 0001 00000003D3 Funct Export
|
||||
$LK+BI,"ICFMul ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2429",77$000001C756 0001 0000000235 Funct Export
|
||||
$LK+BI,"ICFOp ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1412",78$0000019AC6 0004 00000008C1 Funct Export
|
||||
$LK+BI,"ICFOpEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1718",79$000001A8EE 0004 0000000F40 Funct Export
|
||||
$LK+BI,"ICFPostIncDec ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2343",80$000001C346 0002 0000000151 Funct Export
|
||||
$LK+BI,"ICFPow ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1333",81$00000197D6 0001 00000002ED Funct Export
|
||||
$LK+BI,"ICFPreIncDec ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2321",82$000001C236 0002 000000010A Funct Export
|
||||
$LK+BI,"ICFSub ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2531",83$000001CCCE 0001 0000000120 Funct Export
|
||||
$LK+BI,"ICFTemplateFun ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3368",84$000001F3AE 0007 00000000A8 Funct Export
|
||||
$LK+BI,"ICFUnaryMinus ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1252",85$00000194AE 0001 00000001DC Funct Export
|
||||
$LK+BI,"ICLastIns ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,135",86$0000016686 0002 000000009A Funct Export
|
||||
$LK+BI,"ICLea ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,837",87$000001819E 0004 00000001CD Funct Export
|
||||
$LK+BI,"ICLocalVarInit ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4631",88$0000022B46 0001 0000000078 Funct Export
|
||||
$LK+BI,"ICMinMax ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4289",89$0000021D3E 0004 00000002A7 Funct Export
|
||||
$LK+BI,"ICMod ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2695",90$000001D5CE 0001 00000000F2 Funct Export
|
||||
$LK+BI,"ICModU64 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4368",91$0000022036 0001 00000001B3 Funct Export
|
||||
$LK+BI,"ICModr1 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,352",92$0000016EBE 0017 0000000312 Funct Export
|
||||
$LK+BI,"ICModr2 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,443",93$00000171D6 0015 00000000D5 Funct Export
|
||||
$LK+BI,"ICMov ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,656",94$0000017906 01A4 0000000891 Funct Export
|
||||
$LK+BI,"ICMul ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2371",95$000001C49E 0001 00000002B6 Funct Export
|
||||
$LK+BI,"ICMulEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2554",96$000001CDEE 0001 0000000404 Funct Export
|
||||
$LK+BI,"ICNot ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2963",97$000001E24E 0001 00000000FB Funct Export
|
||||
$LK+BI,"ICOpSizeRex ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,46",98$00000162FE 0006 000000010B Funct Export
|
||||
$LK+BI,"ICOrEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4491",99$000002257E 0001 0000000109 Funct Export
|
||||
$LK+BI,"ICOrOr ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3012",100$000001E496 0001 000000015E Funct Export
|
||||
$LK+BI,"ICPop ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,574",101$000001762E 000A 000000010B Funct Export
|
||||
$LK+BI,"ICPopRegs ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,601",102$000001773E 000C 0000000056 Funct Export
|
||||
$LK+BI,"ICPostIncDec ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3421",103$000001F62E 0002 00000001FB Funct Export
|
||||
$LK+BI,"ICPreIncDec ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3384",104$000001F456 0004 00000001D7 Funct Export
|
||||
$LK+BI,"ICPreempt ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3301",105$000001F126 0001 000000011E Funct Export
|
||||
$LK+BI,"ICPush ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,523",106$000001740E 0020 00000001C1 Funct Export
|
||||
$LK+BI,"ICPushRegs ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,561",107$00000175D6 0006 0000000053 Funct Export
|
||||
$LK+BI,"ICPut ","FL:D:/TempleOS/Compiler/ICLCC.CPP.Z,73",108$0000008718 0009 00000003D1 Funct Export
|
||||
$LK+BI,"ICQueInit ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4177",109$0000021986 0001 000000006C Funct Export
|
||||
$LK+BI,"ICQueIns ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4191",110$00000219F6 0001 000000015E Funct Export
|
||||
$LK+BI,"ICQueInsRev ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4232",111$0000021B56 0001 000000015E Funct Export
|
||||
$LK+BI,"ICQueRem ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4273",112$0000021CB6 0001 0000000084 Funct Export
|
||||
$LK+BI,"ICRex ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,32",113$000001627E 0016 000000007D Funct Export
|
||||
$LK+BI,"ICShift ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2852",114$000001DD36 0004 0000000197 Funct Export
|
||||
$LK+BI,"ICShiftEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2886",115$000001DECE 0002 000000030C Funct Export
|
||||
$LK+BI,"ICSlashOp ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,495",116$00000172AE 0027 0000000160 Funct Export
|
||||
$LK+BI,"ICSqr ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4361",117$0000021FE6 0002 000000004A Funct Export
|
||||
$LK+BI,"ICSub ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,1099",118$0000018E1E 0001 00000003F1 Funct Export
|
||||
$LK+BI,"ICSwap ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4410",119$00000221EE 0001 000000027D Funct Export
|
||||
$LK+BI,"ICSwitch ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4537",120$0000022796 0002 00000003AB Funct Export
|
||||
$LK+BI,"ICTest ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,623",121$00000177F6 000C 000000004A Funct Export
|
||||
$LK+BI,"ICTestAndBranch ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3726",122$0000020366 0002 00000001EB Funct Export
|
||||
$LK+BI,"ICToBool ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3353",123$000001F336 0001 0000000071 Funct Export
|
||||
$LK+BI,"ICToF64 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3348",124$000001F2F6 0001 000000003D Funct Export
|
||||
$LK+BI,"ICToI64 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3343",125$000001F2B6 0001 000000003D Funct Export
|
||||
$LK+BI,"ICToUpper ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3332",126$000001F246 0001 000000006B Funct Export
|
||||
$LK+BI,"ICU16 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,72",127$000001640E 0090 00000000A4 Funct Export
|
||||
$LK+BI,"ICU24 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,87",128$00000164B6 0060 00000000CF Funct Export
|
||||
$LK+BI,"ICU32 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,104",129$0000016586 004F 000000007E Funct Export
|
||||
$LK+BI,"ICU64 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,120",130$0000016606 0009 000000007E Funct Export
|
||||
$LK+BI,"ICU8 ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,20",131$0000016206 0060 0000000078 Funct Export
|
||||
$LK+BI,"ICUnaries ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,2954",132$000001E1DE 0002 0000000069 Funct Export
|
||||
$LK+BI,"ICXorEqual ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,4514",133$000002268E 0001 0000000103 Funct Export
|
||||
$LK+BI,"ICXorXor ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3044",134$000001E5F6 0001 0000000151 Funct Export
|
||||
$LK+BI,"ICZFlagBranch ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,3774",135$0000020556 0002 0000000105 Funct Export
|
||||
$LK+BI,"ICZero ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,614",136$0000017796 0017 000000005E Funct Export
|
||||
$LK+BI,"ImportHashTable ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,56",137$0000003000 0000 00000000DB Funct Export
|
||||
$LK+BI,"IncludeDepth ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,76",138$00000030E0 0000 000000002C Funct Export
|
||||
$LK+BI,"InstEntriesCompare ","FL:D:/TempleOS/Compiler/Unassembler.CPP.Z,1",139$00000006D8 0001 0000000229 Funct Export
|
||||
$LK+BI,"InstEntryFind ","FL:D:/TempleOS/Compiler/Unassembler.CPP.Z,71",140$0000000908 0002 0000000370 Funct Export
|
||||
$LK+BI,"IsLexExpression2Bin ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,1207",141$000001138E 0000 0000000029 Funct Export
|
||||
$LK+BI,"IsReplaceSyms ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,52",142$0000002FF0 000A 000000000D Funct Export
|
||||
$LK+BI,"LCCAdd ","FL:D:/TempleOS/Compiler/ICLCC.CPP.Z,155",143$0000008B60 009C 00000000B2 Funct Export
|
||||
$LK+BI,"LCCAppend ","FL:D:/TempleOS/Compiler/ICLCC.CPP.Z,196",144$0000008CA0 0002 00000000A6 Funct Export
|
||||
$LK+BI,"LCCCompile ","FL:D:/TempleOS/Compiler/ICLCC.CPP.Z,315",145$0000009110 0006 0000000226 Funct Export
|
||||
$LK+BI,"LCCDel ","FL:D:/TempleOS/Compiler/ICLCC.CPP.Z,257",146$0000008EB8 0001 00000001A3 Funct Export
|
||||
$LK+BI,"LCCFloatConstFind ","FL:D:/TempleOS/Compiler/ICLCC.CPP.Z,235",147$0000008DF0 000F 00000000C2 Funct Export
|
||||
$LK+BI,"LCCGoToLabelFind ","FL:D:/TempleOS/Compiler/ICLCC.CPP.Z,222",148$0000008DA0 0002 000000004D Funct Export
|
||||
$LK+BI,"LCCHeaderPut ","FL:D:/TempleOS/Compiler/ICLCC.CPP.Z,299",149$0000009060 000A 00000000AB Funct Export
|
||||
$LK+BI,"LCCInit ","FL:D:/TempleOS/Compiler/ICLCC.CPP.Z,147",150$0000008B28 000A 0000000036 Funct Export
|
||||
$LK+BI,"LCCMiscNew ","FL:D:/TempleOS/Compiler/ICLCC.CPP.Z,213",151$0000008D48 001A 0000000051 Funct Export
|
||||
$LK+BI,"LCCPop ","FL:D:/TempleOS/Compiler/ICLCC.CPP.Z,191",152$0000008C80 0009 000000001A Funct Export
|
||||
$LK+BI,"LCCPopNoFree ","FL:D:/TempleOS/Compiler/ICLCC.CPP.Z,184",153$0000008C50 0002 000000002A Funct Export
|
||||
$LK+BI,"LCCPush ","FL:D:/TempleOS/Compiler/ICLCC.CPP.Z,177",154$0000008C18 000E 0000000033 Funct Export
|
||||
$LK+BI,"LCCQuePut ","FL:D:/TempleOS/Compiler/ICLCC.CPP.Z,137",155$0000008AF0 0001 0000000033 Funct Export
|
||||
$LK+BI,"LTrace ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,43",156$0000002FC0 0000 0000000017 Funct Export
|
||||
$LK+BI,"Lex ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,785",157$0000005CA0 00FA 00000022BD Funct Export
|
||||
$LK+BI,"LexAttachDoc ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,421",158$0000004F70 0001 0000000166 Funct Export
|
||||
$LK+BI,"LexBackupLastChar ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,141",159$000000376C 0003 000000003D Funct Export
|
||||
$LK+BI,"LexDel ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,65",160$0000003488 0005 0000000096 Funct Export
|
||||
$LK+BI,"LexDocRead ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,403",161$0000004EE0 0001 0000000090 Funct Export
|
||||
$LK+BI,"LexDollar ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,152",162$00000037AC 0003 000000006C Funct Export
|
||||
$LK+BI,"LexExcept ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,1666",163$0000008270 00A9 00000000C6 Funct Export
|
||||
$LK+BI,"LexExpression ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,1212",164$00000113BE 0007 000000003B Funct Export
|
||||
$LK+BI,"LexExpression2Bin ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,1189",165$00000112F6 0004 0000000098 Funct Export
|
||||
$LK+BI,"LexExtStr ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,1584",166$0000007F60 0004 00000000C1 Funct Export
|
||||
$LK+BI,"LexGetChar ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,166",167$000000381C 0030 00000015F6 Funct Export
|
||||
$LK+BI,"LexInStr ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,687",168$0000005778 0001 0000000524 Funct Export
|
||||
$LK+BI,"LexIncludeStr ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,373",169$0000004E3C 0003 0000000095 Funct Export
|
||||
$LK+BI,"LexNew ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,37",170$0000003350 0005 0000000133 Funct Export
|
||||
$LK+BI,"LexPop ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,478",171$0000005160 0004 0000000070 Funct Export
|
||||
$LK+BI,"LexPush ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,466",172$00000050D8 000F 0000000082 Funct Export
|
||||
$LK+BI,"LexPutLine ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,1609",173$0000008028 0003 000000009F Funct Export
|
||||
$LK+BI,"LexPutPos ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,1636",174$00000080C8 0003 00000000CA Funct Export
|
||||
$LK+BI,"LexPutToken ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,118",175$0000003638 0002 000000012B Funct Export
|
||||
$LK+BI,"LexPutWarn ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,1650",176$0000008198 000F 00000000D3 Funct Export
|
||||
$LK+BI,"LexSize ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,86",177$0000003520 0000 0000000098 Funct Export
|
||||
$LK+BI,"LexSkipEol ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,366",178$0000004E14 0004 0000000027 Funct Export
|
||||
$LK+BI,"LexStatement2Bin ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,16",179$0000032460 0001 000000011D Funct Export
|
||||
$LK,"MDR_D32_INDIRECT_REG ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,346"$3 0002 0000000008 DefineStr
|
||||
$LK,"MDR_D8_INDIRECT_REG ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,345"$2 0002 0000000008 DefineStr
|
||||
$LK,"MDR_INDIRECT_REG ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,344"$1 0002 0000000008 DefineStr
|
||||
@@ -205,51 +200,46 @@ $LK,"MDR_RIP_REL ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,350"$7
|
||||
$LK,"MDR_SIB_D32_INDIRECT_REG ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,349"$6 0003 0000000008 DefineStr
|
||||
$LK,"MDR_SIB_D8_INDIRECT_REG ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,348"$5 0002 0000000008 DefineStr
|
||||
$LK,"MDR_SIB_INDIRECT_REG ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,347"$4 0002 0000000008 DefineStr
|
||||
$LK+BI,"MemberAdd ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,551",184$0000005558 0004 00000001AE Funct
|
||||
$LK+BI,"MemberFind ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,516",185$00000054B8 0005 0000000060 Funct
|
||||
$LK+BI,"MemberFind2 ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,536",186$0000005518 0001 0000000040 Funct
|
||||
$LK+BI,"MemberLstCopy ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,636",187$00000057F8 0001 0000000118 Funct
|
||||
$LK+BI,"MemberLstDel ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,599",188$0000005708 0001 00000000F0 Funct
|
||||
$LK+BI,"MemberLstNew ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,81",189$000001263E 0003 0000000026 Funct
|
||||
$LK+BI,"MemberLstSize ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,664",190$0000005910 0002 00000000CB Funct
|
||||
$LK+BI,"MemberMetaData ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,494",191$0000005438 0000 000000003D Funct
|
||||
$LK+BI,"MemberMetaFind ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,505",192$0000005478 0000 000000003C Funct
|
||||
$LK+BI,"MemberAdd ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,547",180$00000052F0 0004 00000001AC Funct Export
|
||||
$LK+BI,"MemberFind ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,512",181$0000005250 0005 0000000060 Funct Export
|
||||
$LK+BI,"MemberFind2 ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,532",182$00000052B0 0001 0000000040 Funct Export
|
||||
$LK+BI,"MemberLstCopy ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,632",183$0000005590 0001 0000000118 Funct Export
|
||||
$LK+BI,"MemberLstDel ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,595",184$00000054A0 0001 00000000F0 Funct Export
|
||||
$LK+BI,"MemberLstNew ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,81",185$000001156E 0003 0000000026 Funct Export
|
||||
$LK+BI,"MemberLstSize ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,660",186$00000056A8 0002 00000000CB Funct Export
|
||||
$LK+BI,"MemberMetaData ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,490",187$00000051D0 0000 000000003D Funct Export
|
||||
$LK+BI,"MemberMetaFind ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,501",188$0000005210 0000 000000003C Funct Export
|
||||
$LK,"NUM_INTERNAL_TYPES ","FL:D:/TempleOS/Compiler/CmpInit.CPP.Z,1"$16 0002 0000000008 DefineStr
|
||||
$LK+BI,"OPassTraceMask ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,31",193$00000031E8 0000 0000000035 Funct
|
||||
$LK+BI,"OTrace ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,26",194$00000031D0 0000 0000000017 Funct
|
||||
$LK+BI,"OptBrNotZero ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,387",195$0000024F08 0004 0000000659 Funct
|
||||
$LK+BI,"OptBrZero ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,226",196$00000248A8 0006 0000000659 Funct
|
||||
$LK+BI,"OptClassFwd ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,40",197$00000243E8 0008 0000000027 Funct
|
||||
$LK+BI,"OptEnd ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,23",198$0000024350 0005 000000006F Funct
|
||||
$LK+BI,"OptEqu ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,1",199$0000003128 0007 000000002E Funct
|
||||
$LK+BI,"OptFixSizeOf ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,547",200$0000025568 0003 0000000099 Funct
|
||||
$LK+BI,"OptFixupBinaryOp1 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,109",201$0000024588 0013 00000001EA Funct
|
||||
$LK+BI,"OptFixupBinaryOp2 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,175",202$0000024778 0001 0000000058 Funct
|
||||
$LK+BI,"OptFixupUnaryOp ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,191",203$00000247D0 0003 00000000D4 Funct
|
||||
$LK+BI,"OptIC4 ","FL:D:/TempleOS/Compiler/OptPass4.CPP.Z,1",204$000002A930 0001 000000060C Funct
|
||||
$LK+BI,"OptIC6 ","FL:D:/TempleOS/Compiler/OptPass6.CPP.Z,1",205$000002C660 0001 000000013C Funct
|
||||
$LK+BI,"OptLabelFwd ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,32",206$00000243C0 0006 0000000024 Funct
|
||||
$LK+BI,"OptLag ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,64",207$0000024490 0004 0000000030 Funct
|
||||
$LK+BI,"OptLag1 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,75",208$00000244C0 0004 000000003A Funct
|
||||
$LK+BI,"OptLead1 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,86",209$0000024500 0002 0000000039 Funct
|
||||
$LK+BI,"OptMVCompare ","FL:D:/TempleOS/Compiler/OptPass3.CPP.Z,44",210$00000290E8 0001 000000001A Funct
|
||||
$LK,"OptMemberVar ","FL:D:/TempleOS/Compiler/OptPass3.CPP.Z,39"$007FCA2AA8 0005 0000000020 Class
|
||||
$LK+BI,"OptMissing ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,1",211$00000241E6 0004 0000000070 Funct
|
||||
$LK,"OptNext ","FL:D:/TempleOS/Compiler/CmpAsm.CPP.Z,687"$0000000088 0002 Funct
|
||||
$LK,"OptNext2 ","FL:D:/TempleOS/Compiler/CmpAsm.CPP.Z,690"$00000000FA 0001 Funct
|
||||
$LK,"OptNext3 ","FL:D:/TempleOS/Compiler/CmpAsm.CPP.Z,693"$000000016C 0001 Funct
|
||||
$LK+BI,"OptOff ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,11",212$0000003170 0000 0000000016 Funct
|
||||
$LK+BI,"OptOn ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,6",213$0000003158 0000 0000000016 Funct
|
||||
$LK+BI,"OptPass012 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,571",214$0000025608 0000 00000039C7 Funct
|
||||
$LK+BI,"OptPass3 ","FL:D:/TempleOS/Compiler/OptPass3.CPP.Z,49",215$0000029108 0000 0000001827 Funct
|
||||
$LK+BI,"OptPass4 ","FL:D:/TempleOS/Compiler/OptPass4.CPP.Z,171",216$000002AF40 0000 000000131D Funct
|
||||
$LK+BI,"OptPass5 ","FL:D:/TempleOS/Compiler/OptPass5.CPP.Z,1",217$000002C260 0000 00000003FE Funct
|
||||
$LK+BI,"OptPass6 ","FL:D:/TempleOS/Compiler/OptPass6.CPP.Z,131",218$000002CAF8 0000 0000000443 Funct
|
||||
$LK+BI,"OptPass6Lag ","FL:D:/TempleOS/Compiler/OptPass6.CPP.Z,34",219$000002C7A0 0001 0000000354 Funct
|
||||
$LK+BI,"OptPass789A ","FL:D:/TempleOS/Compiler/OptPass789A.CPP.Z,1",220$000002CF40 0000 00000034D5 Funct
|
||||
$LK+BI,"OptSetNOP1 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,48",221$0000024410 0096 0000000039 Funct
|
||||
$LK+BI,"OptSetNOP2 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,56",222$0000024450 000D 000000003B Funct
|
||||
$LK+BI,"OptStart ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,10",223$00000242E0 0005 000000006D Funct
|
||||
$LK+BI,"OPassTraceMask ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,31",189$0000002F70 0000 0000000035 Funct Export
|
||||
$LK+BI,"OTrace ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,26",190$0000002F58 0000 0000000017 Funct Export
|
||||
$LK+BI,"OptBrNotZero ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,391",191$00000236DE 0004 000000064F Funct Export
|
||||
$LK+BI,"OptBrZero ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,230",192$000002308E 0006 000000064F Funct Export
|
||||
$LK+BI,"OptClassFwd ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,33",193$0000022BE6 0008 0000000027 Funct Export
|
||||
$LK+BI,"OptEqu ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,1",194$0000002EB0 0007 000000002E Funct Export
|
||||
$LK+BI,"OptFixSizeOf ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,551",195$0000023D2E 0003 00000000B1 Funct Export
|
||||
$LK+BI,"OptFixupBinaryOp1 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,113",196$0000022D9E 0013 00000001CB Funct Export
|
||||
$LK+BI,"OptFixupBinaryOp2 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,179",197$0000022F6E 0001 0000000052 Funct Export
|
||||
$LK+BI,"OptFixupUnaryOp ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,195",198$0000022FC6 0003 00000000C4 Funct Export
|
||||
$LK+BI,"OptIC4 ","FL:D:/TempleOS/Compiler/OptPass4.CPP.Z,1",199$0000028D16 0001 00000005CE Funct Export
|
||||
$LK+BI,"OptIC6 ","FL:D:/TempleOS/Compiler/OptPass6.CPP.Z,1",200$000002AA56 0001 000000013B Funct Export
|
||||
$LK+BI,"OptLabelFwd ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,25",201$0000022BBE 0006 0000000024 Funct Export
|
||||
$LK+BI,"OptLag ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,57",202$0000022C8E 000E 000000002A Funct Export
|
||||
$LK+BI,"OptLag1 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,68",203$0000022CBE 0004 0000000031 Funct Export
|
||||
$LK+BI,"OptLag2 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,79",204$0000022CF6 0003 000000002A Funct Export
|
||||
$LK+BI,"OptLead1 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,90",205$0000022D26 0004 0000000030 Funct Export
|
||||
$LK+BI,"OptMVCompare ","FL:D:/TempleOS/Compiler/OptPass3.CPP.Z,44",206$000002736E 0001 000000001A Funct Export
|
||||
$LK,"OptMemberVar ","FL:D:/TempleOS/Compiler/OptPass3.CPP.Z,39"$007FCE4800 0005 0000000020 Class
|
||||
$LK+BI,"OptOff ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,11",207$0000002EF8 0000 0000000016 Funct Export
|
||||
$LK+BI,"OptOn ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,6",208$0000002EE0 0000 0000000016 Funct Export
|
||||
$LK+BI,"OptPass012 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,575",209$0000023DE6 0000 0000003470 Funct Export
|
||||
$LK+BI,"OptPass3 ","FL:D:/TempleOS/Compiler/OptPass3.CPP.Z,49",210$000002738E 0000 0000001988 Funct Export
|
||||
$LK+BI,"OptPass4 ","FL:D:/TempleOS/Compiler/OptPass4.CPP.Z,171",211$00000292E6 0000 0000001320 Funct Export
|
||||
$LK+BI,"OptPass5 ","FL:D:/TempleOS/Compiler/OptPass5.CPP.Z,1",212$000002A606 0000 000000044A Funct Export
|
||||
$LK+BI,"OptPass6 ","FL:D:/TempleOS/Compiler/OptPass6.CPP.Z,131",213$000002AEEE 0000 00000004C9 Funct Export
|
||||
$LK+BI,"OptPass6Lag ","FL:D:/TempleOS/Compiler/OptPass6.CPP.Z,34",214$000002AB96 0001 0000000355 Funct Export
|
||||
$LK+BI,"OptPass789 ","FL:D:/TempleOS/Compiler/OptPass789.CPP.Z,1",215$000002B3BE 0000 00000033C8 Funct Export
|
||||
$LK+BI,"OptSetNOP1 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,41",216$0000022C0E 009E 000000003A Funct Export
|
||||
$LK+BI,"OptSetNOP2 ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,49",217$0000022C4E 000D 000000003C Funct Export
|
||||
$LK,"PE_CHECK_BINARY_OPS1 ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,43"$5 0001 0000000008 DefineStr
|
||||
$LK,"PE_CHECK_BINARY_OPS2 ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,44"$6 0001 0000000008 DefineStr
|
||||
$LK,"PE_DEREFERENCE ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,42"$4 0004 0000000008 DefineStr
|
||||
@@ -263,47 +253,50 @@ $LK,"PE_PUSH_LOWER ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,48"$10
|
||||
$LK,"PE_UNARY_MODIFIERS ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,41"$3 0009 0000000008 DefineStr
|
||||
$LK,"PE_UNARY_TERM1 ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,38"$0 0001 0000000008 DefineStr
|
||||
$LK,"PE_UNARY_TERM2 ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,39"$1 0005 0000000008 DefineStr
|
||||
$LK+BI,"PTrace ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,21",224$00000031B8 0000 0000000017 Funct
|
||||
$LK+BI,"ParenWarning ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,1",225$000000E0BE 0004 0000000054 Funct
|
||||
$LK+BI,"PrsArrayDims ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,347",226$000001309E 0001 0000000134 Funct
|
||||
$LK+BI,"PrsAsmArg ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,443",227$000000B2C0 0002 0000000477 Funct
|
||||
$LK+BI,"PrsAsmBlk ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,1292",228$000000D7EE 0001 00000008C9 Funct
|
||||
$LK+BI,"PrsAsmImm ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,408",229$000000B178 0006 0000000145 Funct
|
||||
$LK+BI,"PrsClass ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,829",230$0000014466 0004 0000000264 Funct
|
||||
$LK+BI,"PrsClassNew ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1",231$00000124CE 0003 00000000B3 Funct
|
||||
$LK+BI,"PrsDoWhile ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1334",232$000001581E 0001 0000000153 Funct
|
||||
$LK+BI,"PrsDotDotDot ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,385",233$00000131D6 0001 0000000100 Funct
|
||||
$LK+BI,"PrsExpression ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,340",234$000000F006 0010 0000000172 Funct
|
||||
$LK+BI,"PrsExpression2 ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,52",235$000000E20E 0001 0000000DF2 Funct
|
||||
$LK+BI,"PrsFor ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1358",236$0000015976 0001 0000000190 Funct
|
||||
$LK+BI,"PrsFun ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,966",237$00000148F6 0001 000000035F Funct
|
||||
$LK+BI,"PrsFunCall ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,456",238$000000F4D6 0003 00000008B2 Funct
|
||||
$LK+BI,"PrsFunJoin ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,895",239$00000146CE 0005 0000000221 Funct
|
||||
$LK+BI,"PrsFunNew ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,45",240$0000012586 0001 00000000B3 Funct
|
||||
$LK+BI,"PrsGlblInit ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,301",241$0000012EA6 0002 0000000084 Funct
|
||||
$LK+BI,"PrsGlblVarLst ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1035",242$0000014C56 0008 0000000975 Funct
|
||||
$LK+BI,"PrsIf ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1283",243$00000155CE 0001 0000000142 Funct
|
||||
$LK+BI,"PrsKeyWord ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,88",244$0000012666 000B 000000003C Funct
|
||||
$LK+BI,"PrsNoUnusedWarn ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1512",245$0000015FF6 0001 000000008F Funct
|
||||
$LK+BI,"PrsOffsetOf ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,425",246$000000F386 0002 0000000149 Funct
|
||||
$LK+BI,"PrsPop ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,13",247$000000E13E 0017 0000000022 Funct
|
||||
$LK+BI,"PrsPop2 ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,23",248$000000E19E 0001 000000002D Funct
|
||||
$LK+BI,"PrsPopDeref ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,28",249$000000E1CE 0004 000000003F Funct
|
||||
$LK+BI,"PrsPush ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,8",250$000000E116 0017 0000000028 Funct
|
||||
$LK+BI,"PrsPush2 ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,18",251$000000E166 0004 0000000033 Funct
|
||||
$LK+BI,"PrsSizeOf ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,377",252$000000F17E 0001 0000000207 Funct
|
||||
$LK+BI,"PrsStatement ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1629",253$00000164FE 0004 0000000F94 Funct
|
||||
$LK+BI,"PrsStaticInit ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,310",254$0000012F2E 0002 000000016D Funct
|
||||
$LK+BI,"PrsStreamBlk ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1528",255$0000016086 0001 00000001C2 Funct
|
||||
$LK+BI,"PrsSwitch ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1402",256$0000015B06 0002 00000004EE Funct
|
||||
$LK+BI,"PrsTryBlk ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1568",257$000001624E 0001 00000002AF Funct
|
||||
$LK+BI,"PrsType ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,418",258$00000132D6 0002 000000039C Funct
|
||||
$LK+BI,"PrsUnaryModifier ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,1078",259$00000115C6 0000 0000000DDB Funct
|
||||
$LK+BI,"PrsUnaryTerm ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,674",260$000000FD8E 0000 0000001831 Funct
|
||||
$LK+BI,"PrsVarInit ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,99",261$00000126A6 0001 00000004F7 Funct
|
||||
$LK+BI,"PrsVarInit2 ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,219",262$0000012B9E 0004 0000000302 Funct
|
||||
$LK+BI,"PrsVarLst ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,514",263$0000013676 0006 0000000D49 Funct
|
||||
$LK+BI,"PrsWhile ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1312",264$0000015716 0001 0000000103 Funct
|
||||
$LK+BI,"PTrace ","FL:D:/TempleOS/Compiler/Directives.CPP.Z,21",218$0000002F40 0000 0000000017 Funct Export
|
||||
$LK+BI,"ParenWarning ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,1",219$000000D4FE 0004 0000000054 Funct Export
|
||||
$LK+BI,"PrsAddOp ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,52",220$000000D64E 0002 000000029F Funct Export
|
||||
$LK+BI,"PrsArrayDims ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,353",221$0000012016 0001 0000000135 Funct Export
|
||||
$LK+BI,"PrsAsmArg ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,445",222$000000AA80 0002 0000000475 Funct Export
|
||||
$LK+BI,"PrsAsmBlk ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,1282",223$000000CC2E 0001 00000008C9 Funct Export
|
||||
$LK+BI,"PrsAsmDefine ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,1206",224$000000C95E 0004 00000002CA Funct Export
|
||||
$LK+BI,"PrsAsmImm ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,410",225$000000A938 0006 0000000145 Funct Export
|
||||
$LK+BI,"PrsAsmInstruction ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,798",226$000000B84E 0001 000000110A Funct Export
|
||||
$LK+BI,"PrsClass ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,824",227$0000013296 0002 000000025E Funct Export
|
||||
$LK+BI,"PrsClassNew ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1",228$00000113FE 0003 00000000B3 Funct Export
|
||||
$LK+BI,"PrsDoWhile ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1328",229$0000014616 0001 0000000153 Funct Export
|
||||
$LK+BI,"PrsDotDotDot ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,391",230$000001214E 0001 0000000100 Funct Export
|
||||
$LK+BI,"PrsExpression ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,298",231$000000DFEE 0010 0000000172 Funct Export
|
||||
$LK+BI,"PrsExpression2 ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,102",232$000000D8EE 0001 0000000700 Funct Export
|
||||
$LK+BI,"PrsFor ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1352",233$000001476E 0001 0000000182 Funct Export
|
||||
$LK+BI,"PrsFun ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,963",234$000001371E 0001 0000000340 Funct Export
|
||||
$LK+BI,"PrsFunCall ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,414",235$000000E4BE 0003 000000081E Funct Export
|
||||
$LK+BI,"PrsFunJoin ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,890",236$00000134F6 0005 0000000226 Funct Export
|
||||
$LK+BI,"PrsFunNew ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,45",237$00000114B6 0001 00000000B3 Funct Export
|
||||
$LK+BI,"PrsGlblInit ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,312",238$0000011E4E 0002 0000000084 Funct Export
|
||||
$LK+BI,"PrsGlblVarLst ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1029",239$0000013A5E 0007 0000000963 Funct Export
|
||||
$LK+BI,"PrsIf ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1277",240$00000143C6 0001 0000000142 Funct Export
|
||||
$LK+BI,"PrsKeyWord ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,88",241$0000011596 000A 000000003C Funct Export
|
||||
$LK+BI,"PrsNoUnusedWarn ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1505",242$0000014DE6 0001 000000008F Funct Export
|
||||
$LK+BI,"PrsOffsetOf ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,383",243$000000E36E 0002 0000000149 Funct Export
|
||||
$LK+BI,"PrsPop ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,13",244$000000D57E 0017 0000000022 Funct Export
|
||||
$LK+BI,"PrsPop2 ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,23",245$000000D5DE 0001 000000002D Funct Export
|
||||
$LK+BI,"PrsPopDeref ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,28",246$000000D60E 0004 000000003B Funct Export
|
||||
$LK+BI,"PrsPush ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,8",247$000000D556 0017 0000000028 Funct Export
|
||||
$LK+BI,"PrsPush2 ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,18",248$000000D5A6 0004 0000000033 Funct Export
|
||||
$LK+BI,"PrsSizeOf ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,335",249$000000E166 0001 0000000207 Funct Export
|
||||
$LK+BI,"PrsStatement ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1621",250$00000152DE 0004 0000000F23 Funct Export
|
||||
$LK+BI,"PrsStaticInit ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,321",251$0000011ED6 0002 000000013F Funct Export
|
||||
$LK+BI,"PrsStreamBlk ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1521",252$0000014E76 0001 00000001B7 Funct Export
|
||||
$LK+BI,"PrsSwitch ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1395",253$00000148F6 0002 00000004EE Funct Export
|
||||
$LK+BI,"PrsTryBlk ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1560",254$000001502E 0001 00000002AF Funct Export
|
||||
$LK+BI,"PrsType ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,424",255$000001224E 0002 000000034B Funct Export
|
||||
$LK+BI,"PrsUnaryModifier ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,1029",256$00000104FE 0000 0000000DDB Funct Export
|
||||
$LK+BI,"PrsUnaryTerm ","FL:D:/TempleOS/Compiler/ExpParser.CPP.Z,625",257$000000ECDE 0000 000000181F Funct Export
|
||||
$LK+BI,"PrsVarInit ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,112",258$0000011676 0001 00000004D4 Funct Export
|
||||
$LK+BI,"PrsVarInit2 ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,230",259$0000011B4E 0004 00000002FA Funct Export
|
||||
$LK+BI,"PrsVarLst ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,513",260$000001259E 0006 0000000CF6 Funct Export
|
||||
$LK+BI,"PrsWhile ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,1306",261$000001450E 0001 0000000103 Funct Export
|
||||
$LK,"SLASH_OP_DEC ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,475"$0x052B0000 0006 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_DIV ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,480"$0x00000000 0001 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_FADD ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,484"$0x0000C1DE 0002 0000000018 DefineStr
|
||||
@@ -324,207 +317,193 @@ $LK,"SLASH_OP_NEG ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,477"$0x0
|
||||
$LK,"SLASH_OP_NOT ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,476"$0x00000000 0001 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_POP ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,483"$0x00000000 0001 0000000018 DefineStr
|
||||
$LK,"SLASH_OP_PUSH ","FL:D:/TempleOS/Compiler/BackEnd.CPP.Z,482"$0x00000000 0001 0000000018 DefineStr
|
||||
$LK+BI,"SetSrcFileInfo ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,105",265$0000003810 0008 0000000079 Funct
|
||||
$LK+BI,"StrStrBits ","FL:D:/TempleOS/Compiler/Unassembler.CPP.Z,220",266$0000000F08 0002 0000000073 Funct
|
||||
$LK+BI,"StreamExePrintF ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,697",267$0000035C18 0000 000000003F Funct
|
||||
$LK+BI,"StreamExePutS ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,680",268$0000035B68 0001 00000000AD Funct
|
||||
$LK+BI,"StreamPrintF ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,14",269$00000340C8 0000 0000000034 Funct
|
||||
$LK+BI,"StreamPutS ","FL:D:/TempleOS/Compiler/CmpMain.CPP.Z,1",270$0000034068 0001 0000000060 Funct
|
||||
$LK+BI,"U ","FL:D:/TempleOS/Compiler/Unassembler.CPP.Z,819",271$0000002FE0 0000 000000009B Funct
|
||||
$LK+BI,"Ui ","FL:D:/TempleOS/Compiler/Unassembler.CPP.Z,233",272$0000000F80 0002 000000205F Funct
|
||||
$LK+BI,"Un ","FL:D:/TempleOS/Compiler/Unassembler.CPP.Z,835",273$0000003080 0009 00000000A6 Funct
|
||||
$LK+BI,"UnasmHashLoad ","FL:D:/TempleOS/Compiler/Unassembler.CPP.Z,181",274$0000000E00 0001 0000000107 Funct
|
||||
$LK+BI,"UndefinedExtern ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,816",275$00000143C6 0001 0000000050 Funct
|
||||
$LK+BI,"UnusedExternWarning ","FL:D:/TempleOS/Compiler/StmtParser.CPP.Z,823",276$0000014416 0004 000000004E Funct
|
||||
$LK,"_OPTNEXT ","FL:D:/TempleOS/Compiler/CmpAsm.CPP.Z,10"$0000000088 0001 ExportSysSym
|
||||
$LK,"_OPTNEXT2 ","FL:D:/TempleOS/Compiler/CmpAsm.CPP.Z,58"$00000000FA 0001 ExportSysSym
|
||||
$LK,"_OPTNEXT3 ","FL:D:/TempleOS/Compiler/CmpAsm.CPP.Z,107"$000000016C 0001 ExportSysSym
|
||||
$LK,"asm_hash ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,2"$00000006F8 0009 0000000008 GlbVar
|
||||
$LK,"asm_seg_prefixes ","FL:D:/TempleOS/Compiler/Assembler.CPP.Z,805"$000000C1A8 0001 0000000006 GlbVar
|
||||
$LK,"assign_bitmap ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,8"$00000007A8 0003 0000000008 GlbVar
|
||||
$LK,"binary_ops_table ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,6"$0000000780 0002 0000000008 GlbVar
|
||||
$LK,"cmp_arg_cnt ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,7"$0000000790 0009 0000000008 GlbVar
|
||||
$LK,"cmp_bitmap ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,8"$00000007B8 0004 0000000008 GlbVar
|
||||
$LK,"cmp_do_not_write_to_dsk ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,3"$0000000701 0003 0000000001 GlbVar
|
||||
$LK,"cmp_result_cnt ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,8"$0000000798 0005 0000000008 GlbVar
|
||||
$LK,"cmp_templates ","FL:D:/TempleOS/Compiler/CmpExts.CPP.Z,51"$00000001F6 0002 0000000004 GlbVar
|
||||
$LK,"cmp_templates_dont_pop ","FL:D:/TempleOS/Compiler/CmpExts.CPP.Z,52"$000000038B 0002 0000000004 GlbVar
|
||||
$LK,"cmp_templates_dont_push ","FL:D:/TempleOS/Compiler/CmpExts.CPP.Z,53"$0000000457 0002 0000000004 GlbVar
|
||||
$LK,"cmp_templates_dont_push2 ","FL:D:/TempleOS/Compiler/CmpExts.CPP.Z,55"$000000062D 0002 0000000004 GlbVar
|
||||
$LK,"cmp_templates_dont_push_pop","FL:D:/TempleOS/Compiler/CmpExts.CPP.Z,54"$000000059D 0002 0000000004 GlbVar
|
||||
$LK,"compiled_bytes ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,15"$0000000828 0002 0000000008 GlbVar
|
||||
$LK,"compiled_funs ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,14"$0000000820 0002 0000000008 GlbVar
|
||||
$LK,"compiled_lines ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,14"$0000000818 0003 0000000008 GlbVar
|
||||
$LK,"deref_bitmap ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,8"$00000007A0 0004 0000000008 GlbVar
|
||||
$LK,"doc_stop_btypes ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,398"$0000005138 0001 0000000008 GlbVar
|
||||
$LK,"dual_U16_tokens1 ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,5"$0000000768 0002 0000000008 GlbVar
|
||||
$LK,"dual_U16_tokens2 ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,5"$0000000770 0002 0000000008 GlbVar
|
||||
$LK,"dual_U16_tokens3 ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,6"$0000000778 0002 0000000008 GlbVar
|
||||
$LK,"fpop_bitmap ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,9"$00000007C0 0013 0000000008 GlbVar
|
||||
$LK,"internal_types_table ","FL:D:/TempleOS/Compiler/CmpInit.CPP.Z,8"$0000030418 0001 00000000A0 GlbVar
|
||||
$LK,"is_first_compiler ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,2"$0000000700 0004 0000000001 GlbVar
|
||||
$LK,"lex_zeros ","FL:D:/TempleOS/Compiler/Lex.CPP.Z,138"$00000039A8 000B 0000000004 GlbVar
|
||||
$LK,"non_ptr_vars_mask ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,11"$00000007F0 0006 0000000008 GlbVar
|
||||
$LK,"not_constant_bitmap ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,8"$00000007B0 0003 0000000008 GlbVar
|
||||
$LK,"num_non_ptr_vars ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,10"$00000007D8 0005 0000000008 GlbVar
|
||||
$LK,"num_reg_vars ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,9"$00000007D0 0006 0000000008 GlbVar
|
||||
$LK,"num_stk_temps ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,9"$00000007C8 0004 0000000008 GlbVar
|
||||
$LK,"opt_nop ","FL:D:/TempleOS/Compiler/OptPass012.CPP.Z,9"$0000024258 0007 0000000088 GlbVar
|
||||
$LK,"reg_vars_mask ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,10"$00000007E8 0002 0000000008 GlbVar
|
||||
$LK,"stk_temps_mask ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,10"$00000007E0 0003 0000000008 GlbVar
|
||||
$LK,"sys_internal_types ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,4"$0000000708 00B0 0000000060 GlbVar
|
||||
$LK,"to_non_ptr_vars_map ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,14"$0000000810 0004 0000000008 GlbVar
|
||||
$LK,"to_reg_vars_map ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,13"$0000000808 0004 0000000008 GlbVar
|
||||
$LK,"to_stk_temps_map_even ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,13"$0000000800 0007 0000000008 GlbVar
|
||||
$LK,"to_stk_temps_map_odd ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,12"$00000007F8 0007 0000000008 GlbVar
|
||||
$LK,"uasm_ins64_mask ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,19"$0000000840 000D 0000000008 GlbVar
|
||||
$LK,"uasm_mem_mask ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,20"$0000000850 0003 0000000008 GlbVar
|
||||
$LK,"uasm_signed_arg_mask ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,19"$0000000848 0003 0000000008 GlbVar
|
||||
$LK,"unary_ops_table ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,7"$0000000788 0002 0000000008 GlbVar
|
||||
$LK,"unasm_table ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,18"$0000000830 0006 0000000008 GlbVar
|
||||
$LK,"unasm_table_entries ","FL:D:/TempleOS/Compiler/CmpGlbls.CPP.Z,19"$0000000838 0003 0000000008 GlbVar
|
||||
| ||||