TempleOSCDV4.04.ISO
This commit is contained in:
1 parent
0f1a4a5d65
commit
d1856315e0
67 files changed
+722
-697
No files matched your search
+47
-42
@@ -351,7 +351,7 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip)
|
||||
r=tempi->a1.reg;
|
||||
else
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,ip);
|
||||
if (r>7)
|
||||
j=0xC0004D;
|
||||
@@ -363,13 +363,13 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip)
|
||||
ICU24(tempi,0x6900+j+(r&7)<<16+(r&7)<<19);
|
||||
ICU32(tempi,i);
|
||||
}
|
||||
ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,TY_REG+RT_I64,r,0,ip);
|
||||
} else {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,
|
||||
tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RBX,0,
|
||||
TY_DISP+tempi->a1.type_pointed,REG_RCX,0,ip);
|
||||
TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip);
|
||||
r=REG_RBX;
|
||||
if (MIN_I8<=i<=MAX_I8)
|
||||
ICU32(tempi,i<<24+0xDB6B48);
|
||||
@@ -377,7 +377,7 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip)
|
||||
ICU24(tempi,0xDB6948);
|
||||
ICU32(tempi,i);
|
||||
}
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed,REG_RCX,0,
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,
|
||||
TY_REG+RT_I64,REG_RBX,0,ip);
|
||||
}
|
||||
} else {
|
||||
@@ -388,7 +388,7 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip)
|
||||
if (tempi->ic_flags & ICF_NOT_ADDR) {
|
||||
if (tempi->ic_flags & ICF_A1_FIRST) {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RBX,0,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
|
||||
@@ -396,11 +396,11 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip)
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RBX,0,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,ip);
|
||||
}
|
||||
ICU24(tempi,i);
|
||||
ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,TY_REG+RT_I64,REG_RAX,0,ip);
|
||||
} else {
|
||||
if (tempi->ic_flags & ICF_A1_FIRST) {
|
||||
@@ -415,9 +415,9 @@ U0 ICMulEqu(CIntermediateCode *tempi,I64 ip)
|
||||
tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip);
|
||||
}
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RBX,0,
|
||||
TY_DISP+tempi->a1.type_pointed,REG_RCX,0,ip);
|
||||
TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip);
|
||||
ICU24(tempi,i);
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed,REG_RCX,0,
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,
|
||||
TY_REG+RT_I64,REG_RAX,0,ip);
|
||||
}
|
||||
}
|
||||
@@ -454,7 +454,7 @@ U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip)
|
||||
if (tempi->ic_flags & ICF_NOT_ADDR) {
|
||||
if (tempi->ic_flags & ICF_A1_FIRST) {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
|
||||
@@ -462,7 +462,7 @@ U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip)
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,ip);
|
||||
}
|
||||
if (tempi->ic_class->raw_type&1) {
|
||||
@@ -473,10 +473,10 @@ U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip)
|
||||
ICU24(tempi,0xF9F748);
|
||||
}
|
||||
if (is_mod)
|
||||
ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,TY_REG+RT_I64,REG_RDX,0,ip);
|
||||
else
|
||||
ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,TY_REG+RT_I64,REG_RAX,0,ip);
|
||||
} else {
|
||||
if (tempi->ic_flags & ICF_A1_FIRST) {
|
||||
@@ -492,7 +492,7 @@ U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip)
|
||||
tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip);
|
||||
}
|
||||
//dangerous might clobber RBX in Mov, but it doesn't
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,TY_DISP+tempi->a1.type_pointed,
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,TY_DISP+tempi->a1.type_pointed_to,
|
||||
REG_RBX,0,ip);
|
||||
if (tempi->ic_class->raw_type&1) {
|
||||
ICZero(tempi,REG_RDX);
|
||||
@@ -502,10 +502,10 @@ U0 ICDivEqu(CIntermediateCode *tempi,Bool is_mod,I64 ip)
|
||||
ICU24(tempi,0xF9F748);
|
||||
}
|
||||
if (is_mod)
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed,REG_RBX,0,
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RBX,0,
|
||||
TY_REG+RT_I64,REG_RDX,0,ip);
|
||||
else
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed,REG_RBX,0,
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RBX,0,
|
||||
TY_REG+RT_I64,REG_RAX,0,ip);
|
||||
}
|
||||
if (tempi->r.type&TY_MASK) {
|
||||
@@ -542,7 +542,7 @@ U0 ICMod(CIntermediateCode *tempi,I64 ip)
|
||||
TY_REG+RT_I64,REG_RDX,0,ip);
|
||||
}
|
||||
|
||||
U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed,
|
||||
U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed_to,
|
||||
I64 t1,I64 r1,I64 d1,I64 t2,I64 r2,I64 d2,
|
||||
I64 t3,I64 r3,I64 d3,I64 op,I64 ip)
|
||||
{
|
||||
@@ -551,14 +551,14 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed,
|
||||
if (tempi->ic_flags & ICF_NOT_ADDR) {
|
||||
if (t3&TY_MASK==TY_IMM) {
|
||||
ICAddSubEctImm(tempi,
|
||||
t2&TY_MASK+type_pointed,r2,d2,t2&TY_MASK+
|
||||
type_pointed,r2,d2,d3,op,ip);
|
||||
t2&TY_MASK+type_pointed_to,r2,d2,t2&TY_MASK+
|
||||
type_pointed_to,r2,d2,d3,op,ip);
|
||||
if (t1&TY_MASK)
|
||||
ICMov(tempi,t1,r1,d1,t2&TY_MASK+type_pointed,r2,d2,ip);
|
||||
ICMov(tempi,t1,r1,d1,t2&TY_MASK+type_pointed_to,r2,d2,ip);
|
||||
return;
|
||||
} else {
|
||||
done=FALSE;
|
||||
if (type_pointed>=RT_I64) {
|
||||
if (type_pointed_to>=RT_I64) {
|
||||
if (!(t1&TY_MASK) &&
|
||||
TY_REG<=t2&TY_MASK<=TY_RIP_DISP32) {
|
||||
if (t3&TY_MASK==TY_REG)
|
||||
@@ -567,7 +567,7 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed,
|
||||
temp=REG_RCX;
|
||||
ICMov(tempi,TY_REG+RT_I64,temp,0,t3,r3,d3,ip);
|
||||
}
|
||||
i=ICModr1(temp,t2&TY_MASK+type_pointed,r2,d2);
|
||||
i=ICModr1(temp,t2&TY_MASK+type_pointed_to,r2,d2);
|
||||
if (tempi->ic_flags&ICF_LOCK)
|
||||
ICU8(tempi,OC_LOCK_PREFIX);
|
||||
ICRex(tempi,i.u8[1]);
|
||||
@@ -583,13 +583,13 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed,
|
||||
result_reg=REG_RCX;
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip);
|
||||
}
|
||||
i=ICModr1(result_reg,t3&TY_MASK+type_pointed,r3,d3);
|
||||
i=ICModr1(result_reg,t3&TY_MASK+type_pointed_to,r3,d3);
|
||||
if (tempi->ic_flags&ICF_LOCK)
|
||||
ICU8(tempi,OC_LOCK_PREFIX);
|
||||
ICRex(tempi,i.u8[1]);
|
||||
ICU16(tempi,i.u8[2]<<8+op.u8[0]);
|
||||
ICModr2(tempi,i,d3,ip+4);
|
||||
ICMov(tempi,t2&TY_MASK+type_pointed,r2,d2,
|
||||
ICMov(tempi,t2&TY_MASK+type_pointed_to,r2,d2,
|
||||
TY_REG+RT_I64,result_reg,0,ip);
|
||||
done=TRUE;
|
||||
}
|
||||
@@ -601,7 +601,7 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed,
|
||||
else {
|
||||
result_reg=REG_RCX;
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,
|
||||
t2&TY_MASK+type_pointed,r2,d2,ip);
|
||||
t2&TY_MASK+type_pointed_to,r2,d2,ip);
|
||||
}
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,t3,r3,d3,ip);
|
||||
} else {
|
||||
@@ -611,7 +611,7 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed,
|
||||
else {
|
||||
result_reg=REG_RCX;
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,
|
||||
t2&TY_MASK+type_pointed,r2,d2,ip);
|
||||
t2&TY_MASK+type_pointed_to,r2,d2,ip);
|
||||
}
|
||||
}
|
||||
if (tempi->ic_flags&ICF_LOCK)
|
||||
@@ -621,7 +621,7 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed,
|
||||
else
|
||||
ICU8(tempi,0x48);
|
||||
ICU16(tempi,0xC000+op.u8[0]+(result_reg&7)<<11);
|
||||
ICMov(tempi,t2&TY_MASK+type_pointed,r2,d2,
|
||||
ICMov(tempi,t2&TY_MASK+type_pointed_to,r2,d2,
|
||||
TY_REG+RT_I64,result_reg,0,ip);
|
||||
}
|
||||
}
|
||||
@@ -631,25 +631,25 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed,
|
||||
if (!d3.u32[1]) {
|
||||
if (tempi->ic_flags&ICF_NO_DEPEND_RESULT &&
|
||||
t2&TY_MASK==TY_REG && d3(U64)<=MAX_I8) {
|
||||
ICSlashOp(tempi,TY_DISP+type_pointed,r2,0,0x838000+op.u8[4],ip);
|
||||
ICSlashOp(tempi,TY_DISP+type_pointed_to,r2,0,0x838000+op.u8[4],ip);
|
||||
ICU8(tempi,d3);
|
||||
done=TRUE;
|
||||
} else if (op.u8[2]==0x24) {//AND
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
TY_DISP+type_pointed,REG_RCX,0,ip);
|
||||
TY_DISP+type_pointed_to,REG_RCX,0,ip);
|
||||
result_reg=REG_RAX;
|
||||
if (tempi->ic_flags&ICF_LOCK)
|
||||
ICU8(tempi,OC_LOCK_PREFIX);
|
||||
ICU16(tempi,op.u8[3]<<8+0x40);
|
||||
ICU32(tempi,d3);
|
||||
ICMov(tempi,TY_DISP+type_pointed,REG_RCX,0,
|
||||
ICMov(tempi,TY_DISP+type_pointed_to,REG_RCX,0,
|
||||
TY_REG+RT_I64,result_reg,0,ip);
|
||||
done=TRUE;
|
||||
} else if (type_pointed&RT_MASK<RT_I64) {//OR/XOR
|
||||
} else if (type_pointed_to&RT_MASK<RT_I64) {//OR/XOR
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
TY_DISP+type_pointed,REG_RCX,0,ip);
|
||||
TY_DISP+type_pointed_to,REG_RCX,0,ip);
|
||||
result_reg=REG_RAX;
|
||||
if (tempi->ic_flags&ICF_LOCK)
|
||||
ICU8(tempi,OC_LOCK_PREFIX);
|
||||
@@ -663,7 +663,7 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed,
|
||||
ICU16(tempi,op.u8[2]<<8+0x40);
|
||||
ICU8(tempi,d3);
|
||||
}
|
||||
ICMov(tempi,TY_DISP+type_pointed,REG_RCX,0,
|
||||
ICMov(tempi,TY_DISP+type_pointed_to,REG_RCX,0,
|
||||
TY_REG+RT_I64,result_reg,0,ip);
|
||||
done=TRUE;
|
||||
}
|
||||
@@ -677,13 +677,14 @@ U0 ICAddSubEctEqu(CIntermediateCode *tempi,I64 type_pointed,
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,t3,r3,d3,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t2,r2,d2,ip);
|
||||
}
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RBX,0,TY_DISP+type_pointed,REG_RCX,0,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RBX,0,TY_DISP+type_pointed_to,REG_RCX,0,ip);
|
||||
result_reg=REG_RBX;
|
||||
if (tempi->ic_flags&ICF_LOCK)
|
||||
ICU8(tempi,OC_LOCK_PREFIX);
|
||||
ICU8(tempi,0x48);
|
||||
ICU16(tempi,0xC000+op.u8[0]+(result_reg&7)<<11);
|
||||
ICMov(tempi,TY_DISP+type_pointed,REG_RCX,0,TY_REG+RT_I64,result_reg,0,ip);
|
||||
ICMov(tempi,TY_DISP+type_pointed_to,REG_RCX,0,
|
||||
TY_REG+RT_I64,result_reg,0,ip);
|
||||
}
|
||||
}
|
||||
if (t1&TY_MASK)
|
||||
@@ -723,8 +724,9 @@ U0 ICShift(CIntermediateCode *tempi,I64 t1,I64 r1,I64 d1,
|
||||
ICMov(tempi,t1,r1,d1,TY_REG+RT_I64,result_reg,0,ip);
|
||||
}
|
||||
|
||||
U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed,I64 t1,I64 r1,I64 d1,
|
||||
I64 t2,I64 r2,I64 d2,I64 t3,I64 r3,I64 d3,I64 us,I64 is,I64 ip)
|
||||
U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed_to,
|
||||
I64 t1,I64 r1,I64 d1,I64 t2,I64 r2,I64 d2,I64 t3,I64 r3,I64 d3,
|
||||
I64 us,I64 is,I64 ip)
|
||||
{
|
||||
I64 result_reg;
|
||||
if (tempi->ic_class->raw_type&1 || tempi->ic_flags & ICF_USE_UNSIGNED)
|
||||
@@ -735,7 +737,8 @@ U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed,I64 t1,I64 r1,I64 d1,
|
||||
result_reg=r2;
|
||||
else {
|
||||
result_reg=REG_RAX;
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,t2&TY_MASK+type_pointed,r2,d2,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
t2&TY_MASK+type_pointed_to,r2,d2,ip);
|
||||
}
|
||||
if (t3&TY_MASK!=TY_IMM)
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t3,r3,d3,ip);
|
||||
@@ -746,7 +749,8 @@ U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed,I64 t1,I64 r1,I64 d1,
|
||||
result_reg=r2;
|
||||
else {
|
||||
result_reg=REG_RAX;
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,t2&TY_MASK+type_pointed,r2,d2,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
t2&TY_MASK+type_pointed_to,r2,d2,ip);
|
||||
}
|
||||
}
|
||||
if (result_reg>7)
|
||||
@@ -762,7 +766,7 @@ U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed,I64 t1,I64 r1,I64 d1,
|
||||
}
|
||||
} else
|
||||
ICU16(tempi,is.u16[1]+(result_reg&7)<<8);
|
||||
ICMov(tempi,t2&TY_MASK+type_pointed,r2,d2,TY_REG+RT_I64,result_reg,0,ip);
|
||||
ICMov(tempi,t2&TY_MASK+type_pointed_to,r2,d2,TY_REG+RT_I64,result_reg,0,ip);
|
||||
} else {
|
||||
if (tempi->ic_flags & ICF_A1_FIRST) {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,t2,r2,d2,ip);
|
||||
@@ -773,7 +777,7 @@ U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed,I64 t1,I64 r1,I64 d1,
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,t3,r3,d3,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,t2,r2,d2,ip);
|
||||
}
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,TY_DISP+type_pointed,REG_RDX,0,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,TY_DISP+type_pointed_to,REG_RDX,0,ip);
|
||||
result_reg=REG_RAX;
|
||||
ICU8(tempi,0x48);
|
||||
if (t3&TY_MASK==TY_IMM) {
|
||||
@@ -785,7 +789,8 @@ U0 ICShiftEqu(CIntermediateCode *tempi,I64 type_pointed,I64 t1,I64 r1,I64 d1,
|
||||
}
|
||||
} else
|
||||
ICU16(tempi,is.u16[1]+(result_reg&7)<<8);
|
||||
ICMov(tempi,TY_DISP+type_pointed,REG_RDX,0,TY_REG+RT_I64,result_reg,0,ip);
|
||||
ICMov(tempi,
|
||||
TY_DISP+type_pointed_to,REG_RDX,0,TY_REG+RT_I64,result_reg,0,ip);
|
||||
}
|
||||
if (t1&TY_MASK)
|
||||
ICMov(tempi,t1,r1,d1,TY_REG+RT_I64,result_reg,0,ip);
|
||||
|
||||
+20
-20
@@ -397,17 +397,17 @@ U0 ICPreIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
if (tempi->ic_flags & ICF_NOT_ADDR) {
|
||||
if (tempc->ptr_stars_cnt && tempc1->size!=1) {
|
||||
ICAddSubEctImm(tempi,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,tempc1->size,op.u16[3],ip);
|
||||
} else
|
||||
ICSlashOp(tempi,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,op,ip);
|
||||
if (tempi->r.type&TY_MASK)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,ip);
|
||||
} else {
|
||||
if (tempi->a1.type&TY_MASK==TY_REG)
|
||||
@@ -419,15 +419,15 @@ U0 ICPreIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
}
|
||||
if (tempc->ptr_stars_cnt &&
|
||||
tempc1->size!=1) {
|
||||
ICAddSubEctImm(tempi,TY_DISP+tempi->a1.type_pointed,r,0,
|
||||
TY_DISP+tempi->a1.type_pointed,r,0,
|
||||
ICAddSubEctImm(tempi,TY_DISP+tempi->a1.type_pointed_to,r,0,
|
||||
TY_DISP+tempi->a1.type_pointed_to,r,0,
|
||||
tempc1->size,op.u16[3],ip);
|
||||
} else
|
||||
ICSlashOp(tempi,
|
||||
TY_DISP+tempi->a1.type_pointed,r,0,op,ip);
|
||||
TY_DISP+tempi->a1.type_pointed_to,r,0,op,ip);
|
||||
if (tempi->r.type&TY_MASK)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
TY_DISP+tempi->a1.type_pointed,r,0,ip);
|
||||
TY_DISP+tempi->a1.type_pointed_to,r,0,ip);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -438,17 +438,17 @@ U0 ICPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
if (tempi->ic_flags & ICF_NOT_ADDR) {
|
||||
if (tempi->r.type&TY_MASK)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,ip);
|
||||
if (tempc->ptr_stars_cnt && tempc1->size!=1)
|
||||
ICAddSubEctImm(tempi,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,tempc1->size,op.u16[3],ip);
|
||||
else
|
||||
ICSlashOp(tempi,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,op,ip);
|
||||
} else {
|
||||
if (tempi->a1.type&TY_MASK==TY_REG &&
|
||||
@@ -461,12 +461,12 @@ U0 ICPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
}
|
||||
if (tempi->r.type&TY_MASK)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
TY_DISP+tempi->a1.type_pointed,r,0,ip);
|
||||
TY_DISP+tempi->a1.type_pointed_to,r,0,ip);
|
||||
if (tempc->ptr_stars_cnt && tempc1->size!=1)
|
||||
ICAddSubEctImm(tempi,TY_DISP+tempi->a1.type_pointed,r,0,
|
||||
TY_DISP+tempi->a1.type_pointed,r,0,tempc1->size,op.u16[3],ip);
|
||||
ICAddSubEctImm(tempi,TY_DISP+tempi->a1.type_pointed_to,r,0,
|
||||
TY_DISP+tempi->a1.type_pointed_to,r,0,tempc1->size,op.u16[3],ip);
|
||||
else
|
||||
ICSlashOp(tempi,TY_DISP+tempi->a1.type_pointed,r,0,op,ip);
|
||||
ICSlashOp(tempi,TY_DISP+tempi->a1.type_pointed_to,r,0,op,ip);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -475,8 +475,8 @@ U0 ICDerefPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
I64 t,r;
|
||||
CHashClass *tempc1=tempi->ic_class;
|
||||
t=tempi->r.type&RT_MASK;
|
||||
if (t>tempi->a1.type_pointed)
|
||||
t=tempi->a1.type_pointed;
|
||||
if (t>tempi->a1.type_pointed_to)
|
||||
t=tempi->a1.type_pointed_to;
|
||||
if (tempi->ic_flags & ICF_NOT_ADDR) {
|
||||
if (tempi->a1.type&TY_MASK==TY_REG)
|
||||
r=tempi->a1.reg;
|
||||
@@ -526,7 +526,7 @@ U0 ICAssignPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
tempi->a1.type&TY_MASK+RT_I64,tempi->a1.reg,tempi->a1.disp,ip);
|
||||
r=REG_RDX;
|
||||
}
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed,r,0,
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,r,0,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
|
||||
if (tempi->r.type&TY_MASK)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
@@ -540,7 +540,7 @@ U0 ICAssignPostIncDec(CIntermediateCode *tempi,I64 op,I64 ip)
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,
|
||||
tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,TY_DISP+RT_I64,REG_RDX,0,ip);
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed,REG_RCX,0,
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
|
||||
if (tempi->r.type&TY_MASK)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
|
||||
+9
-8
@@ -160,13 +160,13 @@ U0 ICAssign(CIntermediateCode *tempi,I64 ip)
|
||||
{
|
||||
CIntermediateCode *tempi1;
|
||||
if (tempi->ic_flags & ICF_NOT_ADDR) {
|
||||
ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
|
||||
if (tempi->r.type&TY_MASK) {
|
||||
if (tempi->a1.type&TY_MASK==TY_REG)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,ip);
|
||||
else
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
@@ -182,7 +182,8 @@ U0 ICAssign(CIntermediateCode *tempi,I64 ip)
|
||||
tempi->a2.reg==tempi->a1.reg ||
|
||||
tempi->r.type&TY_MASK ||
|
||||
tempi1->ic_flags&~ICG_NO_CVT_MASK) {
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed,tempi->a1.reg,tempi->a1.disp,
|
||||
ICMov(tempi,
|
||||
TY_DISP+tempi->a1.type_pointed_to,tempi->a1.reg,tempi->a1.disp,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
|
||||
if (tempi->r.type&TY_MASK)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
@@ -192,14 +193,14 @@ U0 ICAssign(CIntermediateCode *tempi,I64 ip)
|
||||
~ICF_CODE_FINAL|ICF_DONT_RESTORE;
|
||||
tempi->a1.disp=tempi1->ic_data;
|
||||
OptSetNOP1(tempi1); //This better not be last pass!
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed,
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
|
||||
}
|
||||
} else {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,
|
||||
tempi->a1.type,tempi->a1.reg,tempi->a1.disp,ip);
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed,REG_RCX,0,
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
|
||||
if (tempi->r.type&TY_MASK)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
@@ -706,7 +707,7 @@ U0 ICAndEqu(CIntermediateCode *tempi,I64 ip2)
|
||||
return;
|
||||
}
|
||||
}
|
||||
ICAddSubEctEqu(tempi,tempi->a1.type_pointed,
|
||||
ICAddSubEctEqu(tempi,tempi->a1.type_pointed_to,
|
||||
tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
tempi->a1.type,tempi->a1.reg,tempi->a1.disp,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,0x210425240423,ip2);
|
||||
@@ -727,7 +728,7 @@ U0 ICOrEqu(CIntermediateCode *tempi,I64 ip2)
|
||||
return;
|
||||
}
|
||||
}
|
||||
ICAddSubEctEqu(tempi,tempi->a1.type_pointed,
|
||||
ICAddSubEctEqu(tempi,tempi->a1.type_pointed_to,
|
||||
tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
tempi->a1.type,tempi->a1.reg,tempi->a1.disp,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,0x09010D0C010B,ip2);
|
||||
@@ -748,7 +749,7 @@ U0 ICXorEqu(CIntermediateCode *tempi,I64 ip2)
|
||||
return;
|
||||
}
|
||||
}
|
||||
ICAddSubEctEqu(tempi,tempi->a1.type_pointed,
|
||||
ICAddSubEctEqu(tempi,tempi->a1.type_pointed_to,
|
||||
tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
tempi->a1.type,tempi->a1.reg,tempi->a1.disp,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,0x310635340633,ip2);
|
||||
|
||||
+18
-18
@@ -9,7 +9,7 @@ U0 CmpNoteFloatOp(CCmpCtrl *cc,CIntermediateCode *tempi,
|
||||
Bool link=FALSE;
|
||||
if (cc->pass==7 && cc->last_float_op_ic &&
|
||||
cc->last_dont_popable && dont_pushable) {
|
||||
nobound_switch (pos) {
|
||||
switch [pos] {
|
||||
case CN_A2:
|
||||
if (cc->last_float_op_ic!=tempi && cc->dont_push_float)
|
||||
link=TRUE;
|
||||
@@ -589,15 +589,15 @@ U0 ICFModEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip)
|
||||
if (tempi->ic_flags & ICF_NOT_ADDR) {
|
||||
if (dont_push_float) {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,ip);
|
||||
if (tempi->a1.type_pointed!=RT_F64)
|
||||
if (tempi->a1.type_pointed_to!=RT_F64)
|
||||
ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,FALSE,ip);
|
||||
} else if (tempi->ic_flags & ICF_A1_FIRST) {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,ip);
|
||||
if (tempi->a1.type_pointed!=RT_F64)
|
||||
if (tempi->a1.type_pointed_to!=RT_F64)
|
||||
ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
|
||||
@@ -605,28 +605,28 @@ U0 ICFModEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip)
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,ip);
|
||||
if (tempi->a1.type_pointed!=RT_F64)
|
||||
if (tempi->a1.type_pointed_to!=RT_F64)
|
||||
ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip);
|
||||
}
|
||||
//TODO: unpushable,unpop? Not sure
|
||||
ICCopyTemplate(cc,tempi,CMP_TEMPLATE_MOD,FALSE,FALSE,FALSE,CN_MAIN);
|
||||
if (tempi->a1.type_pointed!=RT_F64)
|
||||
if (tempi->a1.type_pointed_to!=RT_F64)
|
||||
ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,TRUE,ip);
|
||||
ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
ICMov(tempi,tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,TY_REG+RT_I64,REG_RAX,0,ip);
|
||||
if (tempi->r.type&TY_MASK)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed,
|
||||
tempi->a1.type&TY_MASK+tempi->a1.type_pointed_to,
|
||||
tempi->a1.reg,tempi->a1.disp,ip);
|
||||
} else {
|
||||
if (dont_push_float) {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,tempi->a1.type,
|
||||
tempi->a1.reg,tempi->a1.disp,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
TY_DISP+tempi->a1.type_pointed,REG_RCX,0,ip);
|
||||
if (tempi->a1.type_pointed!=RT_F64)
|
||||
TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip);
|
||||
if (tempi->a1.type_pointed_to!=RT_F64)
|
||||
ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,FALSE,ip);
|
||||
} else if (tempi->ic_flags & ICF_A1_FIRST) {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,tempi->a1.type,
|
||||
@@ -634,8 +634,8 @@ U0 ICFModEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip)
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,
|
||||
TY_DISP+tempi->a1.type_pointed,REG_RCX,0,ip);
|
||||
if (tempi->a1.type_pointed!=RT_F64)
|
||||
TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip);
|
||||
if (tempi->a1.type_pointed_to!=RT_F64)
|
||||
ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip);
|
||||
} else {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
@@ -643,15 +643,15 @@ U0 ICFModEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip)
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,tempi->a1.type,
|
||||
tempi->a1.reg,tempi->a1.disp,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,
|
||||
TY_DISP+tempi->a1.type_pointed,REG_RCX,0,ip);
|
||||
if (tempi->a1.type_pointed!=RT_F64)
|
||||
TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,ip);
|
||||
if (tempi->a1.type_pointed_to!=RT_F64)
|
||||
ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip);
|
||||
}
|
||||
//TODO: unpushable,unpop? Not sure
|
||||
ICCopyTemplate(cc,tempi,CMP_TEMPLATE_MOD,FALSE,FALSE,FALSE,CN_MAIN);
|
||||
if (tempi->a1.type_pointed!=RT_F64)
|
||||
if (tempi->a1.type_pointed_to!=RT_F64)
|
||||
ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,TRUE,ip);
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed,REG_RCX,0,
|
||||
ICMov(tempi,TY_DISP+tempi->a1.type_pointed_to,REG_RCX,0,
|
||||
TY_REG+RT_I64,REG_RAX,0,ip);
|
||||
if (tempi->r.type&TY_MASK)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
|
||||
+46
-43
@@ -16,31 +16,32 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
if (tempi->ic_flags & ICF_NOT_ADDR) {
|
||||
p1_mem=FALSE;
|
||||
if (dont_push_float) {
|
||||
if (a1->type_pointed!=RT_F64) {
|
||||
if (a1->type_pointed_to!=RT_F64) {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
a1->type&TY_MASK+a1->type_pointed,a1->reg,a1->disp,ip);
|
||||
a1->type&TY_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip);
|
||||
ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,FALSE,ip);
|
||||
ICPush(tempi,TY_REG+RT_I64,REG_RAX,0,ip);
|
||||
t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0;
|
||||
rsp_size+=8;
|
||||
} else {
|
||||
if (a1->type_pointed>=RT_I64 && (a1->type&TY_MASK==TY_DISP ||
|
||||
if (a1->type_pointed_to>=RT_I64 && (a1->type&TY_MASK==TY_DISP ||
|
||||
a1->type&TY_MASK==TY_RIP_DISP32 || a1->type&TY_MASK==TY_SIB)) {
|
||||
t1=a1->type_pointed+a1->type&TY_MASK;
|
||||
t1=a1->type_pointed_to+a1->type&TY_MASK;
|
||||
r1=a1->reg;
|
||||
d1=a1->disp;
|
||||
p1_mem=TRUE;
|
||||
} else {
|
||||
ICPush(tempi,a1->type_pointed+a1->type&TY_MASK,a1->reg,a1->disp,ip);
|
||||
ICPush(tempi,
|
||||
a1->type_pointed_to+a1->type&TY_MASK,a1->reg,a1->disp,ip);
|
||||
t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0;
|
||||
rsp_size+=8;
|
||||
}
|
||||
}
|
||||
} else if (tempi->ic_flags & ICF_A1_FIRST) {
|
||||
if (a1->type_pointed!=RT_F64 || a2->type&TY_MASK==TY_STK) {
|
||||
if (a1->type_pointed_to!=RT_F64 || a2->type&TY_MASK==TY_STK) {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,
|
||||
a1->type&TY_MASK+a1->type_pointed,a1->reg,a1->disp,ip);
|
||||
if (a1->type_pointed!=RT_F64)
|
||||
a1->type&TY_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip);
|
||||
if (a1->type_pointed_to!=RT_F64)
|
||||
ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
a2->type,a2->reg,a2->disp,ip);
|
||||
@@ -50,14 +51,15 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8;
|
||||
t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0;
|
||||
} else {
|
||||
if (a1->type_pointed>=RT_I64 && (a1->type&TY_MASK==TY_DISP ||
|
||||
if (a1->type_pointed_to>=RT_I64 && (a1->type&TY_MASK==TY_DISP ||
|
||||
a1->type&TY_MASK==TY_RIP_DISP32 || a1->type&TY_MASK==TY_SIB)) {
|
||||
t1=a1->type_pointed+a1->type&TY_MASK;
|
||||
t1=a1->type_pointed_to+a1->type&TY_MASK;
|
||||
r1=a1->reg;
|
||||
d1=a1->disp;
|
||||
p1_mem=TRUE;
|
||||
} else {
|
||||
ICPush(tempi,a1->type_pointed+a1->type&TY_MASK,a1->reg,a1->disp,ip);
|
||||
ICPush(tempi,
|
||||
a1->type_pointed_to+a1->type&TY_MASK,a1->reg,a1->disp,ip);
|
||||
t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0;
|
||||
rsp_size+=8;
|
||||
}
|
||||
@@ -83,11 +85,11 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (a1->type_pointed!=RT_F64 || a1->type&TY_MASK==TY_STK) {
|
||||
if (a1->type_pointed_to!=RT_F64 || a1->type&TY_MASK==TY_STK) {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,
|
||||
a1->type&TY_MASK+a1->type_pointed,a1->reg,a1->disp,ip);
|
||||
if (a1->type_pointed!=RT_F64)
|
||||
a1->type&TY_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip);
|
||||
if (a1->type_pointed_to!=RT_F64)
|
||||
ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip);
|
||||
ICU16(tempi,0x5052); //PUSH EDX PUSH EAX
|
||||
rsp_size=16;
|
||||
@@ -112,14 +114,15 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
rsp_size+=8;
|
||||
}
|
||||
}
|
||||
if (a1->type_pointed>=RT_I64 && (a1->type&TY_MASK==TY_DISP ||
|
||||
if (a1->type_pointed_to>=RT_I64 && (a1->type&TY_MASK==TY_DISP ||
|
||||
a1->type&TY_MASK==TY_RIP_DISP32 || a1->type&TY_MASK==TY_SIB)) {
|
||||
t1=a1->type_pointed+a1->type&TY_MASK;
|
||||
t1=a1->type_pointed_to+a1->type&TY_MASK;
|
||||
r1=a1->reg;
|
||||
d1=a1->disp;
|
||||
p1_mem=TRUE;
|
||||
} else {
|
||||
ICPush(tempi,a1->type_pointed+a1->type&TY_MASK,a1->reg,a1->disp,ip);
|
||||
ICPush(tempi,
|
||||
a1->type_pointed_to+a1->type&TY_MASK,a1->reg,a1->disp,ip);
|
||||
t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0;
|
||||
rsp_size+=8;
|
||||
if (r2==REG_RSP+REG_RSP<<8)
|
||||
@@ -127,7 +130,7 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!rsp_size && !(p1_mem && a1->type_pointed==RT_F64)) {
|
||||
if (!rsp_size && !(p1_mem && a1->type_pointed_to==RT_F64)) {
|
||||
rsp_size=8;
|
||||
ICAddRSP(tempi,-8);
|
||||
}
|
||||
@@ -143,7 +146,7 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
}
|
||||
ICSlashOp(tempi,t1,r1,d1,op,ip);
|
||||
CmpNoteFloatOp(cc,tempi,TRUE,FALSE,CN_MAIN);
|
||||
if (p1_mem && a1->type_pointed==RT_F64) {
|
||||
if (p1_mem && a1->type_pointed_to==RT_F64) {
|
||||
ICSlashOp(tempi,t1,r1,d1,SLASH_OP_FSTP,ip);
|
||||
if (rsp_size)
|
||||
ICAddRSP(tempi,rsp_size);
|
||||
@@ -156,39 +159,39 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
SLASH_OP_FSTP,ip);
|
||||
ICAddRSP(tempi,rsp_size-8);
|
||||
}
|
||||
if (a1->type_pointed!=RT_F64) {
|
||||
if (a1->type_pointed_to!=RT_F64) {
|
||||
ICPop(tempi,TY_REG+RT_I64,REG_RAX,0,ip);
|
||||
ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,TRUE,ip);
|
||||
ICMov(tempi,a1->type&TY_MASK+a1->type_pointed,a1->reg,a1->disp,
|
||||
ICMov(tempi,a1->type&TY_MASK+a1->type_pointed_to,a1->reg,a1->disp,
|
||||
TY_REG+RT_I64,REG_RAX,0,ip);
|
||||
} else
|
||||
ICPop(tempi,a1->type_pointed+a1->type&TY_MASK,a1->reg,a1->disp,ip);
|
||||
ICPop(tempi,a1->type_pointed_to+a1->type&TY_MASK,a1->reg,a1->disp,ip);
|
||||
}
|
||||
if (tempi->r.type&TY_MASK)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
a1->type&TY_MASK+a1->type_pointed,a1->reg,a1->disp,ip);
|
||||
a1->type&TY_MASK+a1->type_pointed_to,a1->reg,a1->disp,ip);
|
||||
} else {
|
||||
if (a1->type_pointed>=RT_I64)
|
||||
if (a1->type_pointed_to>=RT_I64)
|
||||
p1_mem=TRUE;
|
||||
else
|
||||
p1_mem=FALSE;
|
||||
if (dont_push_float) {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip);
|
||||
if (a1->type_pointed!=RT_F64) {
|
||||
if (a1->type_pointed_to!=RT_F64) {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,
|
||||
TY_DISP+a1->type_pointed,REG_RCX,0,ip);
|
||||
TY_DISP+a1->type_pointed_to,REG_RCX,0,ip);
|
||||
ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,FALSE,ip);
|
||||
ICPush(tempi,TY_REG+RT_I64,REG_RAX,0,ip);
|
||||
} else
|
||||
ICPush(tempi,a1->type_pointed+TY_DISP,REG_RCX,0,ip);
|
||||
ICPush(tempi,a1->type_pointed_to+TY_DISP,REG_RCX,0,ip);
|
||||
t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0;
|
||||
rsp_size+=8;
|
||||
} else if (tempi->ic_flags & ICF_A1_FIRST) {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip);
|
||||
if (a1->type_pointed!=RT_F64 || a2->type&TY_MASK==TY_STK) {
|
||||
if (a1->type_pointed_to!=RT_F64 || a2->type&TY_MASK==TY_STK) {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,
|
||||
TY_DISP+a1->type_pointed,REG_RCX,0,ip);
|
||||
if (a1->type_pointed!=RT_F64)
|
||||
TY_DISP+a1->type_pointed_to,REG_RCX,0,ip);
|
||||
if (a1->type_pointed_to!=RT_F64)
|
||||
ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip);
|
||||
|
||||
@@ -197,7 +200,7 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=8;
|
||||
t2=TY_SIB+RT_I64; r2=REG_RSP+REG_RSP<<8; d2=0;
|
||||
} else {
|
||||
ICPush(tempi,TY_DISP+a1->type_pointed,REG_RCX,0,ip);
|
||||
ICPush(tempi,TY_DISP+a1->type_pointed_to,REG_RCX,0,ip);
|
||||
t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0;
|
||||
rsp_size+=8;
|
||||
if (a2->type&RT_MASK>=RT_I64 && (a2->type&TY_MASK==TY_DISP ||
|
||||
@@ -222,12 +225,12 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (a1->type_pointed!=RT_F64 || a1->type&TY_MASK==TY_STK) {
|
||||
if (a1->type_pointed_to!=RT_F64 || a1->type&TY_MASK==TY_STK) {
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RAX,0,a2->type,a2->reg,a2->disp,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip);
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RDX,0,
|
||||
TY_DISP+a1->type_pointed,REG_RCX,0,ip);
|
||||
if (a1->type_pointed!=RT_F64)
|
||||
TY_DISP+a1->type_pointed_to,REG_RCX,0,ip);
|
||||
if (a1->type_pointed_to!=RT_F64)
|
||||
ICFCvt2(cc,tempi,REG_RDX,TY_REG+RT_I64,REG_RDX,0,FALSE,ip);
|
||||
ICU16(tempi,0x5052); //PUSH EDX PUSH EAX
|
||||
rsp_size=16;
|
||||
@@ -253,14 +256,14 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
}
|
||||
}
|
||||
ICMov(tempi,TY_REG+RT_I64,REG_RCX,0,a1->type,a1->reg,a1->disp,ip);
|
||||
ICPush(tempi,TY_DISP+a1->type_pointed,REG_RCX,0,ip);
|
||||
ICPush(tempi,TY_DISP+a1->type_pointed_to,REG_RCX,0,ip);
|
||||
t1=TY_SIB+RT_I64; r1=REG_RSP+REG_RSP<<8; d1=0;
|
||||
rsp_size+=8;
|
||||
if (r2==REG_RSP+REG_RSP<<8)
|
||||
d2+=8;
|
||||
}
|
||||
}
|
||||
if (!rsp_size && !(p1_mem && a1->type_pointed==RT_F64)) {
|
||||
if (!rsp_size && !(p1_mem && a1->type_pointed_to==RT_F64)) {
|
||||
rsp_size=8;
|
||||
ICAddRSP(tempi,-8);
|
||||
}
|
||||
@@ -277,8 +280,8 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
}
|
||||
ICSlashOp(tempi,t1,r1,d1,op,ip);
|
||||
CmpNoteFloatOp(cc,tempi,TRUE,FALSE,CN_MAIN);
|
||||
if (p1_mem && a1->type_pointed==RT_F64) {
|
||||
ICSlashOp(tempi,TY_DISP+a1->type_pointed,REG_RCX,0,
|
||||
if (p1_mem && a1->type_pointed_to==RT_F64) {
|
||||
ICSlashOp(tempi,TY_DISP+a1->type_pointed_to,REG_RCX,0,
|
||||
SLASH_OP_FSTP,ip);
|
||||
if (rsp_size)
|
||||
ICAddRSP(tempi,rsp_size);
|
||||
@@ -292,9 +295,9 @@ U0 ICFOpEqu(CCmpCtrl *cc,CIntermediateCode *tempi,I64 op,U8 *buf2,I64 ip)
|
||||
ICAddRSP(tempi,rsp_size-8);
|
||||
}
|
||||
ICPop(tempi,TY_REG+RT_I64,REG_RAX,0,ip);
|
||||
if (a1->type_pointed!=RT_F64)
|
||||
if (a1->type_pointed_to!=RT_F64)
|
||||
ICFCvt2(cc,tempi,REG_RAX,TY_REG+RT_I64,REG_RAX,0,TRUE,ip);
|
||||
ICMov(tempi,TY_DISP+a1->type_pointed,REG_RCX,0,
|
||||
ICMov(tempi,TY_DISP+a1->type_pointed_to,REG_RCX,0,
|
||||
TY_REG+RT_I64,REG_RAX,0,ip);
|
||||
}
|
||||
if (tempi->r.type&TY_MASK)
|
||||
@@ -569,13 +572,13 @@ U0 ICFCmpAndBranch(CCmpCtrl *cc,CIntermediateCode *tempi,I64 ip,
|
||||
U0 ICFMul(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip)
|
||||
{
|
||||
if (tempi->a1.type&TY_MASK==TY_IMM &&
|
||||
tempi->a1.type_pointed&RT_MASK==RT_F64 &&
|
||||
tempi->a1.type_pointed_to&RT_MASK==RT_F64 &&
|
||||
tempi->a1.disp(F64)==1.0) {
|
||||
CmpNoteFloatOp(cc,tempi,FALSE,FALSE,CN_MAIN);
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
tempi->a2.type,tempi->a2.reg,tempi->a2.disp,ip);
|
||||
} else if (tempi->a2.type&TY_MASK==TY_IMM &&
|
||||
tempi->a2.type_pointed&RT_MASK==RT_F64 &&
|
||||
tempi->a2.type_pointed_to&RT_MASK==RT_F64 &&
|
||||
tempi->a2.disp(F64)==1.0) {
|
||||
CmpNoteFloatOp(cc,tempi,FALSE,FALSE,CN_MAIN);
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
@@ -587,7 +590,7 @@ U0 ICFMul(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip)
|
||||
U0 ICFDiv(CCmpCtrl *cc,CIntermediateCode *tempi,U8 *buf,I64 ip)
|
||||
{
|
||||
if (tempi->a2.type&TY_MASK==TY_IMM &&
|
||||
tempi->a2.type_pointed&RT_MASK==RT_F64 &&
|
||||
tempi->a2.type_pointed_to&RT_MASK==RT_F64 &&
|
||||
tempi->a2.disp(F64)==1.0) {
|
||||
CmpNoteFloatOp(cc,tempi,FALSE,FALSE,CN_MAIN);
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
|
||||
@@ -222,7 +222,7 @@ I64 ICModr1(I64 r,I64 t2,I64 r2,I64 d2)
|
||||
|
||||
U0 ICModr2(CIntermediateCode *tempi,I64 i,I64 d,I64 ip=0)
|
||||
{//t=0 means no SIB
|
||||
nobound_switch (i.u8[0]) {
|
||||
switch [i.u8[0]] {
|
||||
case MDR_REG:
|
||||
break;
|
||||
case MDR_INDIRECT_REG:
|
||||
@@ -648,8 +648,8 @@ U0 ICDeref(CIntermediateCode *tempi,I64 ip)
|
||||
{
|
||||
I64 t;
|
||||
t=tempi->r.type&RT_MASK;
|
||||
if (t>tempi->a1.type_pointed)
|
||||
t=tempi->a1.type_pointed;
|
||||
if (t>tempi->a1.type_pointed_to)
|
||||
t=tempi->a1.type_pointed_to;
|
||||
if (tempi->a1.type&TY_MASK==TY_REG)
|
||||
ICMov(tempi,tempi->r.type,tempi->r.reg,tempi->r.disp,
|
||||
TY_DISP+t,tempi->a1.reg,tempi->a1.disp,ip);
|
||||
|
||||
@@ -140,10 +140,10 @@ U0 ICClassPut(CHashClass *c)
|
||||
|
||||
U0 ICArgPut(CICArg *a)
|
||||
{
|
||||
if (a->type_pointed)
|
||||
if (a->type_pointed_to)
|
||||
"%Z %Z %Z ",
|
||||
a->type&RT_MASK,"ST_RAW_TYPES",
|
||||
a->type_pointed&RT_MASK,"ST_RAW_TYPES",
|
||||
a->type_pointed_to&RT_MASK,"ST_RAW_TYPES",
|
||||
a->type>>4,"ST_TY_TYPES";
|
||||
else
|
||||
"%Z %Z ",
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ import U0 DocBinsValidate(CDoc *doc);
|
||||
import U0 DocDel(CDoc *doc);
|
||||
import U0 DocLoad(CDoc *doc,U8 *src2,I64 size);
|
||||
import CDoc *DocNew(U8 *filename=NULL,CTask *task=NULL);
|
||||
import CDocEntry *DocPrint(CDoc *doc,U8 *fmt,...);
|
||||
import CDocEntry *DocPrint(CDoc *doc=NULL,U8 *fmt,...);
|
||||
import CDocEntry *DocPutLine(CDoc *doc,CDocEntry *doc_e);
|
||||
import I64 DocSize(CDoc *doc);
|
||||
import Bool DocWrite(CDoc *doc,Bool prompt=FALSE);
|
||||
|
||||
+4
-4
@@ -184,7 +184,7 @@ U0 CmpFixUpJITAsm(CCmpCtrl *cc,CAOT *tempaot)
|
||||
while (tempa) {
|
||||
tempa1=tempa->next;
|
||||
ptr=ip2+tempa->ip;
|
||||
nobound_switch (tempa->type) {
|
||||
switch [tempa->type] {
|
||||
case AAT_ADD_U8: *ptr(U8 *) +=ip2; break;
|
||||
case AAT_SUB_U8: *ptr(U8 *) -=ip2; break;
|
||||
case AAT_ADD_U16: *ptr(U16 *)+=ip2; break;
|
||||
@@ -250,7 +250,7 @@ U0 CmpFixUpJITAsm(CCmpCtrl *cc,CAOT *tempaot)
|
||||
}
|
||||
if (tempex || g_lb) {
|
||||
ptr=tempie->ip+ip2;
|
||||
nobound_switch (tempie->type) {
|
||||
switch [tempie->type] {
|
||||
case IET_REL_I0:
|
||||
case IET_IMM_U0:
|
||||
break;
|
||||
@@ -313,7 +313,7 @@ U0 CmpFixUpAOTAsm(CCmpCtrl *cc,CAOT *tempaot)
|
||||
tempa1=tempa->next;
|
||||
tempa->next=aotc->abss;
|
||||
ptr=tempaot->buf+tempaot->ip+tempa->ip;
|
||||
nobound_switch (tempa->type) {
|
||||
switch [tempa->type] {
|
||||
case AAT_ADD_U8: *ptr(U8 *)+=ip2; break;
|
||||
case AAT_SUB_U8: *ptr(U8 *)-=ip2; break;
|
||||
case AAT_ADD_U16: *ptr(U16 *)+=ip2; break;
|
||||
@@ -350,7 +350,7 @@ U0 CmpFixUpAOTAsm(CCmpCtrl *cc,CAOT *tempaot)
|
||||
ptr=tempaot->buf+tempaot->ip+tempie->ip;
|
||||
if (g_lb) {
|
||||
i=g_lb->addr+tempaot->buf;
|
||||
nobound_switch (tempie->type) {
|
||||
switch [tempie->type] {
|
||||
case IET_REL_I0:
|
||||
case IET_IMM_U0:
|
||||
break;
|
||||
|
||||
Binary file not shown.
+115
-129
@@ -21,11 +21,11 @@ $LK,"AsmStoreNum",A="FL:::/Compiler/Asm.CPP.Z,263",BI=18$
|
||||
$LK,"MDR_SIB_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,137"$
|
||||
$LK,"OptPass012",A="FL:::/Compiler/OptPass012.CPP.Z,23",BI=19$
|
||||
$LK,"MemberLstSize",A="FL:::/Compiler/LexLib.CPP.Z,191",BI=20$
|
||||
$LK,"ICQueIns",A="FL:::/Compiler/BackC.CPP.Z,411",BI=21$
|
||||
$LK,"ICQueIns",A="FL:::/Compiler/BackC.CPP.Z,412",BI=21$
|
||||
$LK,"ICAndBranch",A="FL:::/Compiler/BackC.CPP.Z,1",BI=22$
|
||||
$LK,"MDR_D8_INDIRECT_REG",A="FL:::/Compiler/BackLib.CPP.Z,134"$
|
||||
$LK,"U",A="FL:::/Compiler/UAsm.CPP.Z,649",BI=23$
|
||||
$LK,"ICQueRem",A="FL:::/Compiler/BackC.CPP.Z,493",BI=24$
|
||||
$LK,"ICQueRem",A="FL:::/Compiler/BackC.CPP.Z,494",BI=24$
|
||||
$LK,"CN_R",A="FL:::/Compiler/BackFA.CPP.Z,4"$
|
||||
$LK,"OptLead1",A="FL:::/Compiler/OptLib.CPP.Z,73",BI=25$
|
||||
$LK,"CmpNoteFloatOp",A="FL:::/Compiler/BackFA.CPP.Z,6",BI=26$
|
||||
@@ -75,7 +75,7 @@ $LK,"ICAdd",A="FL:::/Compiler/PrsLib.CPP.Z,79",BI=53$
|
||||
$LK,"CmpRawType",A="FL:::/Compiler/OptLib.CPP.Z,509",BI=54$
|
||||
$LK,"ICFOpEqu",A="FL:::/Compiler/BackFB.CPP.Z,1",BI=55$
|
||||
$LK,"LexExpressionI64",A="FL:::/Compiler/PrsExp.CPP.Z,1135",BI=56$
|
||||
$LK,"ICQueInsRev",A="FL:::/Compiler/BackC.CPP.Z,452",BI=57$
|
||||
$LK,"ICQueInsRev",A="FL:::/Compiler/BackC.CPP.Z,453",BI=57$
|
||||
$LK,"LexExpression",A="FL:::/Compiler/PrsExp.CPP.Z,1163",BI=58$
|
||||
$LK,"PrsExpression",A="FL:::/Compiler/PrsExp.CPP.Z,264",BI=59$
|
||||
$LK,"PrsClassNew",A="FL:::/Compiler/PrsLib.CPP.Z,40",BI=60$
|
||||
@@ -87,7 +87,7 @@ $LK,"OptPass5",A="FL:::/Compiler/OptPass5.CPP.Z,1",BI=64$
|
||||
$LK,"OptPass6",A="FL:::/Compiler/OptPass6.CPP.Z,111",BI=65$
|
||||
$LK,"Echo",A="FL:::/Compiler/CMisc.CPP.Z,24",BI=66$
|
||||
$LK,"PrsGlblVarLst",A="FL:::/Compiler/PrsStmt.CPP.Z,201",BI=67$
|
||||
$LK,"ICQueInit",A="FL:::/Compiler/BackC.CPP.Z,397",BI=68$
|
||||
$LK,"ICQueInit",A="FL:::/Compiler/BackC.CPP.Z,398",BI=68$
|
||||
$LK,"ICCmp",A="FL:::/Compiler/BackB.CPP.Z,136",BI=69$
|
||||
$LK,"ICAddRSP",A="FL:::/Compiler/BackLib.CPP.Z,69",BI=70$
|
||||
$LK,"ICDiv",A="FL:::/Compiler/BackA.CPP.Z,428",BI=71$
|
||||
@@ -111,7 +111,7 @@ $LK,"OptSetNOP1",A="FL:::/Compiler/OptLib.CPP.Z,17",BI=87$
|
||||
$LK,"OptPass789A",A="FL:::/Compiler/OptPass789A.CPP.Z,1",BI=88$
|
||||
$LK,"OptSetNOP2",A="FL:::/Compiler/OptLib.CPP.Z,25",BI=89$
|
||||
$LK,"FBO1_F64",A="FL:::/Compiler/OptLib.CPP.Z,94"$
|
||||
$LK,"ICXorEqu",A="FL:::/Compiler/BackC.CPP.Z,736",BI=90$
|
||||
$LK,"ICXorEqu",A="FL:::/Compiler/BackC.CPP.Z,737",BI=90$
|
||||
$LK,"ICToUpper",A="FL:::/Compiler/BackB.CPP.Z,355",BI=91$
|
||||
$LK,"AsmLexExpression",A="FL:::/Compiler/AsmLib.CPP.Z,129",BI=92$
|
||||
$LK,"ICMov",A="FL:::/Compiler/BackLib.CPP.Z,435",BI=93$
|
||||
@@ -126,12 +126,12 @@ $LK,"ICSub",A="FL:::/Compiler/BackA.CPP.Z,207",BI=99$
|
||||
$LK,"COCFloatConstFind",A="FL:::/Compiler/PrsLib.CPP.Z,164",BI=100$
|
||||
$LK,"ICPut",A="FL:::/Compiler/CExcept.CPP.Z,186",BI=101$
|
||||
$LK,"PrsArrayDims",A="FL:::/Compiler/PrsVar.CPP.Z,247",BI=102$
|
||||
$LK,"ICSqr",A="FL:::/Compiler/BackC.CPP.Z,581",BI=103$
|
||||
$LK,"ICSqr",A="FL:::/Compiler/BackC.CPP.Z,582",BI=103$
|
||||
$LK,"FBO1_NOT_CONST",A="FL:::/Compiler/OptLib.CPP.Z,92"$
|
||||
$LK,"CMP_TEMPLATES_DONT_POP",A="FL:::/Compiler/Templates.CPP.Z,178"$
|
||||
$LK,"PrsClass",A="FL:::/Compiler/PrsStmt.CPP.Z,1",BI=104$
|
||||
$LK,"MemberMetaData",A="FL:::/Compiler/LexLib.CPP.Z,45",BI=105$
|
||||
$LK,"ICSwitch",A="FL:::/Compiler/BackC.CPP.Z,757",BI=106$
|
||||
$LK,"ICSwitch",A="FL:::/Compiler/BackC.CPP.Z,758",BI=106$
|
||||
$LK,"OptBrNotZero",A="FL:::/Compiler/OptLib.CPP.Z,358",BI=107$
|
||||
$LK,"LexPutToken",A="FL:::/Compiler/CExcept.CPP.Z,1",BI=108$
|
||||
$LK,"SLASH_OP_FDIV",A="FL:::/Compiler/BackLib.CPP.Z,268"$
|
||||
@@ -140,14 +140,14 @@ $LK,"UAsmHashLoad",A="FL:::/Compiler/UAsm.CPP.Z,188",BI=110$
|
||||
$LK,"UnusedExternWarning",A="FL:::/Compiler/CExcept.CPP.Z,104",BI=111$
|
||||
$LK,"SLASH_OP_FILD",A="FL:::/Compiler/BackLib.CPP.Z,273"$
|
||||
$LK,"ICXorXor",A="FL:::/Compiler/BackB.CPP.Z,98",BI=112$
|
||||
$LK,"PrsTryBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,831",BI=113$
|
||||
$LK,"PrsTryBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,838",BI=113$
|
||||
$LK,"CInit",A="FL:::/Compiler/CMain.CPP.Z,684",BI=114$
|
||||
$LK,"MemberMetaFind",A="FL:::/Compiler/LexLib.CPP.Z,56",BI=115$
|
||||
$LK,"ExePrint2",A="FL:::/Compiler/CMain.CPP.Z,646",BI=116$
|
||||
$LK,"FBO1_INT",A="FL:::/Compiler/OptLib.CPP.Z,93"$
|
||||
$LK,"PE_DO_UNARY_OP",A="FL:::/Compiler/PrsExp.CPP.Z,8"$
|
||||
$LK,"PrsVarInit",A="FL:::/Compiler/PrsVar.CPP.Z,1",BI=117$
|
||||
$LK,"ICOrEqu",A="FL:::/Compiler/BackC.CPP.Z,715",BI=118$
|
||||
$LK,"ICOrEqu",A="FL:::/Compiler/BackC.CPP.Z,716",BI=118$
|
||||
$LK,"ICModr1",A="FL:::/Compiler/BackLib.CPP.Z,141",BI=119$
|
||||
$LK,"ICModr2",A="FL:::/Compiler/BackLib.CPP.Z,223",BI=120$
|
||||
$LK,"SLASH_OP_FMUL",A="FL:::/Compiler/BackLib.CPP.Z,267"$
|
||||
@@ -162,20 +162,20 @@ $LK,"SLASH_OP_IMUL",A="FL:::/Compiler/BackLib.CPP.Z,259"$
|
||||
$LK,"SLASH_OP_FSTP",A="FL:::/Compiler/BackLib.CPP.Z,271"$
|
||||
$LK,"COCDel",A="FL:::/Compiler/PrsLib.CPP.Z,186",BI=127$
|
||||
$LK,"PE_UNARY_TERM1",A="FL:::/Compiler/PrsExp.CPP.Z,1"$
|
||||
$LK,"ICFAdd",A="FL:::/Compiler/BackFB.CPP.Z,599",BI=128$
|
||||
$LK,"ICFAdd",A="FL:::/Compiler/BackFB.CPP.Z,602",BI=128$
|
||||
$LK,"PE_UNARY_TERM2",A="FL:::/Compiler/PrsExp.CPP.Z,2"$
|
||||
$LK,"CmdLinePmt",A="FL:::/Compiler/CMisc.CPP.Z,88",BI=129$
|
||||
$LK,"AsmMakeArgMask",A="FL:::/Compiler/Asm.CPP.Z,172",BI=130$
|
||||
$LK,"COCHeaderPut",A="FL:::/Compiler/PrsLib.CPP.Z,229",BI=131$
|
||||
$LK,"PrsGlblInit",A="FL:::/Compiler/PrsVar.CPP.Z,206",BI=132$
|
||||
$LK,"ICAndEqu",A="FL:::/Compiler/BackC.CPP.Z,694",BI=133$
|
||||
$LK,"ICAndEqu",A="FL:::/Compiler/BackC.CPP.Z,695",BI=133$
|
||||
$LK,"LexD2I32",A="FL:::/Compiler/CMisc.CPP.Z,52",BI=134$
|
||||
$LK,"MemberLstNew",A="FL:::/Compiler/LexLib.CPP.Z,150",BI=135$
|
||||
$LK,"LexD3I32",A="FL:::/Compiler/CMisc.CPP.Z,68",BI=136$
|
||||
$LK,"OptClassFwd",A="FL:::/Compiler/OptLib.CPP.Z,9",BI=137$
|
||||
$LK,"ICFCmp",A="FL:::/Compiler/BackFA.CPP.Z,545",BI=138$
|
||||
$LK,"PrsSwitch",A="FL:::/Compiler/PrsStmt.CPP.Z,575",BI=139$
|
||||
$LK,"ICFDiv",A="FL:::/Compiler/BackFB.CPP.Z,587",BI=140$
|
||||
$LK,"ICFDiv",A="FL:::/Compiler/BackFB.CPP.Z,590",BI=140$
|
||||
$LK,"AOTStoreCodeU8At",A="FL:::/Compiler/AsmLib.CPP.Z,108",BI=141$
|
||||
$LK,"PE_PUSH_LOWER",A="FL:::/Compiler/PrsExp.CPP.Z,11"$
|
||||
$LK,"OptPass6Lag",A="FL:::/Compiler/OptPass6.CPP.Z,28",BI=142$
|
||||
@@ -188,7 +188,7 @@ $LK,"PrsOffsetOf",A="FL:::/Compiler/PrsExp.CPP.Z,348",BI=148$
|
||||
$LK,"MDR_REG",A="FL:::/Compiler/BackLib.CPP.Z,132"$
|
||||
$LK,"GetOption",A="FL:::/Compiler/CMisc.CPP.Z,6",BI=149$
|
||||
$LK,"PrsDoWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,503",BI=150$
|
||||
$LK,"ICShift",A="FL:::/Compiler/BackA.CPP.Z,693",BI=151$
|
||||
$LK,"ICShift",A="FL:::/Compiler/BackA.CPP.Z,694",BI=151$
|
||||
$LK,"ICFMod",A="FL:::/Compiler/BackFA.CPP.Z,249",BI=152$
|
||||
$LK,"COCPop",A="FL:::/Compiler/PrsLib.CPP.Z,121",BI=153$
|
||||
$LK,"PrsExpression2",A="FL:::/Compiler/PrsExp.CPP.Z,65",BI=154$
|
||||
@@ -196,12 +196,12 @@ $LK,"SLASH_OP_PUSH",A="FL:::/Compiler/BackLib.CPP.Z,262"$
|
||||
$LK,"PE_DEREFERENCE",A="FL:::/Compiler/PrsExp.CPP.Z,5"$
|
||||
$LK,"LexPopRestore",A="FL:::/Compiler/LexLib.CPP.Z,23",BI=155$
|
||||
$LK,"ICUnaries",A="FL:::/Compiler/BackB.CPP.Z,1",BI=156$
|
||||
$LK,"ICFMul",A="FL:::/Compiler/BackFB.CPP.Z,569",BI=157$
|
||||
$LK,"ICShiftEqu",A="FL:::/Compiler/BackA.CPP.Z,726",BI=158$
|
||||
$LK,"ICFMul",A="FL:::/Compiler/BackFB.CPP.Z,572",BI=157$
|
||||
$LK,"ICShiftEqu",A="FL:::/Compiler/BackA.CPP.Z,727",BI=158$
|
||||
$LK,"LexExpression2Bin",A="FL:::/Compiler/PrsExp.CPP.Z,1112",BI=159$
|
||||
$LK,"ICFPow",A="FL:::/Compiler/BackFA.CPP.Z,280",BI=160$
|
||||
$LK,"MapFileWrite",A="FL:::/Compiler/CHash.CPP.Z,90",BI=161$
|
||||
$LK,"ICFSub",A="FL:::/Compiler/BackFB.CPP.Z,635",BI=162$
|
||||
$LK,"ICFSub",A="FL:::/Compiler/BackFB.CPP.Z,638",BI=162$
|
||||
$LK,"ICFModEqu",A="FL:::/Compiler/BackFA.CPP.Z,585",BI=163$
|
||||
$LK,"CmpF1PushPop",A="FL:::/Compiler/OptLib.CPP.Z,529",BI=164$
|
||||
$LK,"OptFree",A="FL:::/Compiler/OptLib.CPP.Z,33",BI=165$
|
||||
@@ -225,7 +225,7 @@ $LK,"OptIC6",A="FL:::/Compiler/OptPass6.CPP.Z,1",BI=177$
|
||||
$LK,"ICCmpAndBranch",A="FL:::/Compiler/BackB.CPP.Z,556",BI=178$
|
||||
$LK,"ICDivEqu",A="FL:::/Compiler/BackA.CPP.Z,452",BI=179$
|
||||
$LK,"PrsWhile",A="FL:::/Compiler/PrsStmt.CPP.Z,483",BI=180$
|
||||
$LK,"ICFCmpAndBranch",A="FL:::/Compiler/BackFB.CPP.Z,306",BI=181$
|
||||
$LK,"ICFCmpAndBranch",A="FL:::/Compiler/BackFB.CPP.Z,309",BI=181$
|
||||
$LK,"Lex",A="FL:::/Compiler/Lex.CPP.Z,442",BI=182$
|
||||
$LK,"ICTestAndBranch",A="FL:::/Compiler/BackB.CPP.Z,736",BI=183$
|
||||
$LK,"uasm",A="FL:::/Compiler/Compiler.PRJ.Z,21"$
|
||||
@@ -253,34 +253,34 @@ $LK,"MemberFind",A="FL:::/Compiler/LexLib.CPP.Z,67",BI=196$
|
||||
$LK,"cmp",A="FL:::/Compiler/Compiler.PRJ.Z,16"$
|
||||
$LK,"OptLag",A="FL:::/Compiler/OptLib.CPP.Z,40",BI=197$
|
||||
$LK,"ICPostIncDec",A="FL:::/Compiler/BackB.CPP.Z,434",BI=198$
|
||||
$LK,"ICFPostIncDec",A="FL:::/Compiler/BackFB.CPP.Z,677",BI=199$
|
||||
$LK,"ICFPostIncDec",A="FL:::/Compiler/BackFB.CPP.Z,680",BI=199$
|
||||
$LK,"ICTest",A="FL:::/Compiler/BackLib.CPP.Z,403",BI=200$
|
||||
$LK,"ICModU64",A="FL:::/Compiler/BackC.CPP.Z,588",BI=201$
|
||||
$LK,"ICModU64",A="FL:::/Compiler/BackC.CPP.Z,589",BI=201$
|
||||
$LK,"ICLastIns",A="FL:::/Compiler/BackLib.CPP.Z,59",BI=202$
|
||||
$LK,"PrsAsmImm",A="FL:::/Compiler/Asm.CPP.Z,1",BI=203$
|
||||
$LK,"LexExtStr",A="FL:::/Compiler/LexLib.CPP.Z,218",BI=204$
|
||||
$LK,"ICAddSubEctEqu",A="FL:::/Compiler/BackA.CPP.Z,545",BI=205$
|
||||
$LK,"ICAddSubEctImm",A="FL:::/Compiler/BackA.CPP.Z,57",BI=206$
|
||||
$LK,"ICPush",A="FL:::/Compiler/BackLib.CPP.Z,303",BI=207$
|
||||
$LK,"ICSwap",A="FL:::/Compiler/BackC.CPP.Z,632",BI=208$
|
||||
$LK,"ICSwap",A="FL:::/Compiler/BackC.CPP.Z,633",BI=208$
|
||||
$LK,"CMP_TEMPLATES_DONT_PUSH",A="FL:::/Compiler/Templates.CPP.Z,267"$
|
||||
$LK,"intermediate_code_table",A="FL:::/Compiler/CInit.CPP.Z,16"$
|
||||
$LK,"ICZero",A="FL:::/Compiler/BackLib.CPP.Z,394",BI=209$
|
||||
$LK,"CmpCtrlDel",A="FL:::/Compiler/Lex.CPP.Z,58",BI=210$
|
||||
$LK,"ICClassPut",A="FL:::/Compiler/CExcept.CPP.Z,117",BI=211$
|
||||
$LK,"ICAssign",A="FL:::/Compiler/BackC.CPP.Z,159",BI=212$
|
||||
$LK,"ICFTemplateFun",A="FL:::/Compiler/BackFB.CPP.Z,701",BI=213$
|
||||
$LK,"ICFTemplateFun",A="FL:::/Compiler/BackFB.CPP.Z,704",BI=213$
|
||||
$LK,"MemberAdd",A="FL:::/Compiler/LexLib.CPP.Z,103",BI=214$
|
||||
$LK,"PrsPush",A="FL:::/Compiler/PrsLib.CPP.Z,1",BI=215$
|
||||
$LK,"SLASH_OP_FDIVR",A="FL:::/Compiler/BackLib.CPP.Z,269"$
|
||||
$LK,"SLASH_OP_FISTTP",A="FL:::/Compiler/BackLib.CPP.Z,272"$
|
||||
$LK,"CmpCtrlSize",A="FL:::/Compiler/Lex.CPP.Z,70",BI=216$
|
||||
$LK,"ICLocalVarInit",A="FL:::/Compiler/BackC.CPP.Z,923",BI=217$
|
||||
$LK,"ICLocalVarInit",A="FL:::/Compiler/BackC.CPP.Z,924",BI=217$
|
||||
$LK,"PrsFor",A="FL:::/Compiler/PrsStmt.CPP.Z,526",BI=218$
|
||||
$LK,"PassTrace",A="FL:::/Compiler/CMisc.CPP.Z,11",BI=219$
|
||||
$LK,"PrsPopDeref",A="FL:::/Compiler/PrsLib.CPP.Z,21",BI=220$
|
||||
$LK,"ICCopyTemplate",A="FL:::/Compiler/BackFA.CPP.Z,75",BI=221$
|
||||
$LK,"PrsStmt",A="FL:::/Compiler/PrsStmt.CPP.Z,893",BI=222$
|
||||
$LK,"PrsStmt",A="FL:::/Compiler/PrsStmt.CPP.Z,900",BI=222$
|
||||
$LK,"PrsFun",A="FL:::/Compiler/PrsStmt.CPP.Z,132",BI=223$
|
||||
$LK,"LexIncludeStr",A="FL:::/Compiler/Lex.CPP.Z,298",BI=224$
|
||||
$LK,"PrsType",A="FL:::/Compiler/PrsVar.CPP.Z,287",BI=225$
|
||||
@@ -289,7 +289,7 @@ $LK,"cmp_type_flags_src_code",A="FL:::/Compiler/Lex.CPP.Z,327"$
|
||||
$LK,"PrsVarInit2",A="FL:::/Compiler/PrsVar.CPP.Z,123",BI=227$
|
||||
$LK,"PrsPop",A="FL:::/Compiler/PrsLib.CPP.Z,6",BI=228$
|
||||
$LK,"asm_seg_prefixes",A="FL:::/Compiler/Asm.CPP.Z,388"$
|
||||
$LK,"ICMinMax",A="FL:::/Compiler/BackC.CPP.Z,509",BI=229$
|
||||
$LK,"ICMinMax",A="FL:::/Compiler/BackC.CPP.Z,510",BI=229$
|
||||
$LK,"CmpLoadDefines",A="FL:::/Compiler/CInit.CPP.Z,205",BI=230$
|
||||
$LK,"PrsIf",A="FL:::/Compiler/PrsStmt.CPP.Z,456",BI=231$
|
||||
$LK,"ICBuiltInFloatConst",A="FL:::/Compiler/BackLib.CPP.Z,413",BI=232$
|
||||
@@ -307,12 +307,12 @@ $LK,"PE_CHECK_BINARY_OPS1",A="FL:::/Compiler/PrsExp.CPP.Z,6"$
|
||||
$LK,"PE_CHECK_BINARY_OPS2",A="FL:::/Compiler/PrsExp.CPP.Z,7"$
|
||||
$LK,"LexBackupLastChar",A="FL:::/Compiler/LexLib.CPP.Z,1",BI=242$
|
||||
$LK,"Trace",A="FL:::/Compiler/CMisc.CPP.Z,19",BI=243$
|
||||
$LK,"ICBrBitOps",A="FL:::/Compiler/BackC.CPP.Z,211",BI=244$
|
||||
$LK,"ICBrBitOps",A="FL:::/Compiler/BackC.CPP.Z,212",BI=244$
|
||||
$LK,"LexGetChar",A="FL:::/Compiler/Lex.CPP.Z,107",BI=245$
|
||||
$LK,"LexSkipEol",A="FL:::/Compiler/Lex.CPP.Z,269",BI=246$
|
||||
$LK,"ICFlagBranch",A="FL:::/Compiler/BackB.CPP.Z,785",BI=247$
|
||||
$LK,"SLASH_OP_FSUBR",A="FL:::/Compiler/BackLib.CPP.Z,266"$
|
||||
$LK,"ICFPreIncDec",A="FL:::/Compiler/BackFB.CPP.Z,657",BI=248$
|
||||
$LK,"ICFPreIncDec",A="FL:::/Compiler/BackFB.CPP.Z,660",BI=248$
|
||||
$LK,"ExeFile",A="FL:::/Compiler/CMain.CPP.Z,616",BI=249$
|
||||
$LK,"COCMiscNew",A="FL:::/Compiler/PrsLib.CPP.Z,143",BI=250$
|
||||
$LK,"cmp_templates_dont_pop",A="FL:::/Compiler/CExts.CPP.Z,43"$
|
||||
@@ -323,120 +323,106 @@ $LK,"COCGoToLabelFind",A="FL:::/Compiler/PrsLib.CPP.Z,152",BI=254$
|
||||
$LK,"OptMVCompare",A="FL:::/Compiler/OptLib.CPP.Z,556",BI=255$
|
||||
$LK,"ICToBool",A="FL:::/Compiler/BackB.CPP.Z,378",BI=256$
|
||||
$LK,"PrsFunJoin",A="FL:::/Compiler/PrsStmt.CPP.Z,68",BI=257$
|
||||
$LK,"PrsNoUnusedWarn",A="FL:::/Compiler/PrsStmt.CPP.Z,780",BI=258$
|
||||
$LK,"PrsNoUnusedWarn",A="FL:::/Compiler/PrsStmt.CPP.Z,787",BI=258$
|
||||
$LK,"OptFixSizeOf",A="FL:::/Compiler/OptLib.CPP.Z,485",BI=259$
|
||||
$LK,"cmp_templates_dont_push",A="FL:::/Compiler/CExts.CPP.Z,45"$
|
||||
$LK,"cmp_templates_dont_push_pop",A="FL:::/Compiler/CExts.CPP.Z,46"$
|
||||
$LK,"LexAttachDoc",A="FL:::/Compiler/Lex.CPP.Z,330",BI=260$
|
||||
$LK,"PrsStreamBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,794",BI=261$
|
||||
$LK,"PrsStreamBlk",A="FL:::/Compiler/PrsStmt.CPP.Z,801",BI=261$
|
||||
$LK,"cmp_templates_dont_push2",A="FL:::/Compiler/CExts.CPP.Z,44"$
|
||||
$LK,"InstEntryFind",A="FL:::/Compiler/UAsm.CPP.Z,66",BI=262$
|
||||
$LK,"PrsDotDotDot",A="FL:::/Compiler/PrsVar.CPP.Z,381",BI=263$
|
||||
$LK,"ICMulEqu",A="FL:::/Compiler/BackA.CPP.Z,344",BI=264$
|
||||
$LK,"AsmPrsInsFlags",A="FL:::/Compiler/AsmInit.CPP.Z,1",BI=265$
|
||||
| ||||