LTCD_070816.ISO

This commit is contained in:
Terry A. Davis authored and minexew committed 2018-09-08 21:45:20 +02:00
1 parent d14bbc24f9
commit 0e9364ff4c
506 files changed
+157705 -41812

No files matched your search

+281
View File
@@ -0,0 +1,281 @@
ALIGN 4,OC_NOP
CMP_INTERNAL_TYPES_TABLE::
DU4 HTT_INTERNAL_TYPE,IT_I8,8;
DU1 "void",0;
DU4 HTT_INTERNAL_TYPE,IT_DOUBLE,8;
DU1 "double",0;
DU4 HTT_INTERNAL_TYPE,IT_I0,0;
DU1 "I0i",0;
DU4 HTT_INTERNAL_TYPE,IT_U0,0;
DU1 "U0i",0;
DU4 HTT_INTERNAL_TYPE,IT_I0,0;
DU1 "I0",0;
DU4 HTT_INTERNAL_TYPE,IT_U0,0;
DU1 "U0",0;
DU4 HTT_INTERNAL_TYPE,IT_I1,1;
DU1 "I1i",0;
DU4 HTT_INTERNAL_TYPE,IT_U1,1;
DU1 "U1i",0;
DU4 HTT_INTERNAL_TYPE,IT_I1,1;
DU1 "I1",0;
DU4 HTT_INTERNAL_TYPE,IT_U1,1;
DU1 "U1",0;
DU4 HTT_INTERNAL_TYPE,IT_I2,2;
DU1 "I2i",0;
DU4 HTT_INTERNAL_TYPE,IT_U2,2;
DU1 "U2i",0;
DU4 HTT_INTERNAL_TYPE,IT_I4,4;
DU1 "I4i",0;
DU4 HTT_INTERNAL_TYPE,IT_U4,4;
DU1 "U4i",0;
DU4 HTT_INTERNAL_TYPE,IT_I8,8;
DU1 "I8i",0;
DU4 HTT_INTERNAL_TYPE,IT_U8,8;
DU1 "U8i",0;
DU4 HTT_INVALID;
//*******************************************************
ALIGN 8,OC_NOP
CMP_OPT_NOP:
DU4 EC_NOP; //Must be at IC_CODE offset
DU1 256 DUP(0);
/**********
void OptNext(IntermediateCode *tempi,
IntermediateCode **temp_lag)
{
I8 i,j=0;
for (i=3;i>0;i--)
temp_lag[i]=temp_lag[i-1];
temp_lag[0]=tempi;
for (i=0;i<4;i++)
if (temp_lag[i]->opcode>EC_END_EXP)
temp_lag[j++]=temp_lag[i];
while (j<4)
temp_lag[j++]=&opt_nop;
}
************/
ALIGN 8,OC_NOP
CP_OPTNEXT::
PUSH RBP
MOV RBP,RSP
PUSH RDI
MOV RCX,U8 SF_PARAM1[RBP]
MOV RDX,U8 SF_PARAM2[RBP]
MOV RAX,U8 16[RDX]
MOV U8 24[RDX],RAX
MOV RAX,U8 8[RDX]
MOV U8 16[RDX],RAX
MOV RAX,U8 [RDX]
MOV U8 8[RDX],RAX
MOV U8 [RDX],RCX
MOV RDI,RDX
MOV RAX,RCX
CMP U2 IC_CODE[RAX],EC_END_EXP
JBE @@10
STOSQ
@@10: MOV RAX,U8 8[RDX]
CMP U2 IC_CODE[RAX],EC_END_EXP
JBE @@11
STOSQ
@@11: MOV RAX,U8 16[RDX]
CMP U2 IC_CODE[RAX],EC_END_EXP
JBE @@12
STOSQ
@@12: MOV RAX,U8 24[RDX]
CMP U2 IC_CODE[RAX],EC_END_EXP
JBE @@13
STOSQ
@@13: MOV RAX,CMP_OPT_NOP
ADD RDX,32
JMP @@15
@@14: STOSQ
@@15: CMP RDI,RDX
JB @@14
POP RDI
POP RBP
RET
/**********
void OptNext2(IntermediateCode *tempi,
IntermediateCode **temp_lag)
{
I8 i,j=0;
for (i=3;i>0;i--)
temp_lag[i]=temp_lag[i-1];
temp_lag[0]=tempi;
for (i=0;i<4;i++)
if (temp_lag[i]->opcode>=EC_END_EXP)
temp_lag[j++]=temp_lag[i];
while (j<4)
temp_lag[j++]=&opt_nop;
}
************/
ALIGN 8,OC_NOP
CP_OPTNEXT2::
PUSH RBP
MOV RBP,RSP
PUSH RDI
MOV RCX,U8 SF_PARAM1[RBP]
MOV RDX,U8 SF_PARAM2[RBP]
MOV RAX,U8 16[RDX]
MOV U8 24[RDX],RAX
MOV RAX,U8 8[RDX]
MOV U8 16[RDX],RAX
MOV RAX,U8 [RDX]
MOV U8 8[RDX],RAX
MOV U8 [RDX],RCX
MOV RDI,RDX
MOV RAX,RCX
CMP U2 IC_CODE[RAX],EC_END_EXP
JB @@10
STOSQ
@@10: MOV RAX,U8 8[RDX]
CMP U2 IC_CODE[RAX],EC_END_EXP
JB @@11
STOSQ
@@11: MOV RAX,U8 16[RDX]
CMP U2 IC_CODE[RAX],EC_END_EXP
JB @@12
STOSQ
@@12: MOV RAX,U8 24[RDX]
CMP U2 IC_CODE[RAX],EC_END_EXP
JB @@13
STOSQ
@@13: MOV RAX,CMP_OPT_NOP
ADD RDX,32
JMP @@15
@@14: STOSQ
@@15: CMP RDI,RDX
JB @@14
POP RDI
POP RBP
RET
ALIGN 8,OC_NOP
CP_OPTNEXT3::
PUSH RBP
MOV RBP,RSP
PUSH RDI
MOV RCX,U8 SF_PARAM1[RBP]
MOV RDX,U8 SF_PARAM2[RBP]
MOV RAX,U8 16[RDX]
MOV U8 24[RDX],RAX
MOV RAX,U8 8[RDX]
MOV U8 16[RDX],RAX
MOV RAX,U8 [RDX]
MOV U8 8[RDX],RAX
MOV U8 [RDX],RCX
MOV RDI,RDX
MOV RAX,RCX
CMP U2 IC_CODE[RAX],EC_END_EXP
JB @@10
CMP U2 IC_CODE[RAX],EC_NOP1
JE @@10
STOSQ
@@10: MOV RAX,U8 8[RDX]
CMP U2 IC_CODE[RAX],EC_END_EXP
JB @@11
CMP U2 IC_CODE[RAX],EC_NOP1
JE @@11
STOSQ
@@11: MOV RAX,U8 16[RDX]
CMP U2 IC_CODE[RAX],EC_END_EXP
JB @@12
CMP U2 IC_CODE[RAX],EC_NOP1
JE @@12
STOSQ
@@12: MOV RAX,U8 24[RDX]
CMP U2 IC_CODE[RAX],EC_END_EXP
JB @@13
CMP U2 IC_CODE[RAX],EC_NOP1
JE @@13
STOSQ
@@13: MOV RAX,CMP_OPT_NOP
ADD RDX,32
JMP @@15
@@14: STOSQ
@@15: CMP RDI,RDX
JB @@14
POP RDI
POP RBP
RET
//*******************************************************
/****
void PrsPush(ParseStack *ps,I8 val)
{
ps->stk[ps->ptr++]=val;
}
I8 PrsPop(ParseStack *ps)
{
return ps->stk[--ps->ptr];
}
******/
ALIGN 8,OC_NOP
CP_PRSPUSH::
PUSH RBP
MOV RBP,RSP
MOV RCX,U8 SF_PARAM1[RBP]
MOV RAX,U8 [RCX]
INC RAX
MOV RDX,U8 SF_PARAM2[RBP]
MOV U8 [RCX+RAX*8],RDX
MOV U8 [RCX],RAX
POP RBP
RET
ALIGN 8,OC_NOP
CP_PRSPOP::
PUSH RBP
MOV RBP,RSP
MOV RCX,U8 SF_PARAM1[RBP]
MOV RBX,U8 [RCX]
MOV RAX,U8 [RCX+RBX*8]
DEC RBX
MOV U8 [RCX],RBX
POP RBP
RET
////**************************PROCEDURE*************************
ALIGN 8,OC_NOP
CP_HI_CALL::
PUSH RBP
MOV RBP,RSP
MOV RAX,U8 SF_PARAM1[RBP]
OR RAX,RAX
JZ @@100
CALL RAX
@@100: POP RBP
RET