mirror of
https://github.com/AntKrotov/oberon-07-compiler.git
synced 2026-10-05 09:45:47 +00:00
мелкие правки
This commit is contained in:
1 parent
1b430b2bea
commit
ba320c08f8
3 files changed
+26
-19
No files matched your search
+24
-17
@@ -30,7 +30,7 @@ CONST
|
||||
sete = 94H; setne = 95H; setl = 9CH; setge = 9DH; setle = 9EH; setg = 9FH; setc = 92H; setnc = 93H;
|
||||
|
||||
shl = CODE.opLSL2; shr = CODE.opLSR2; sar = CODE.opASR2; ror = CODE.opROR2;
|
||||
|
||||
|
||||
sCODE = BIN.PICCODE;
|
||||
sDATA = BIN.PICDATA;
|
||||
sBSS = BIN.PICBSS;
|
||||
@@ -738,13 +738,28 @@ BEGIN
|
||||
CODE.opLLOAD32_PARAM,
|
||||
CODE.opLADR_SAVE,
|
||||
CODE.opLADR_INC1,
|
||||
CODE.opLADR_DEC1:
|
||||
CODE.opLADR_DEC1,
|
||||
CODE.opLADR_INC,
|
||||
CODE.opLADR_DEC,
|
||||
CODE.opLADR_INC1B,
|
||||
CODE.opLADR_DEC1B,
|
||||
CODE.opLADR_INCB,
|
||||
CODE.opLADR_DECB,
|
||||
CODE.opLADR_INCL,
|
||||
CODE.opLADR_EXCL,
|
||||
CODE.opLADR_UNPK:
|
||||
lvar := getVar(variables, cur.param2);
|
||||
IF (lvar # NIL) & (lvar.count # -1) THEN
|
||||
INC(lvar.count, loop)
|
||||
END
|
||||
|
||||
|CODE.opLADR_SAVEC:
|
||||
|CODE.opLADR_SAVEC,
|
||||
CODE.opLADR_INCC,
|
||||
CODE.opLADR_DECC,
|
||||
CODE.opLADR_INCCB,
|
||||
CODE.opLADR_DECCB,
|
||||
CODE.opLADR_INCLC,
|
||||
CODE.opLADR_EXCLC:
|
||||
lvar := getVar(variables, cur.param1);
|
||||
IF (lvar # NIL) & (lvar.count # -1) THEN
|
||||
INC(lvar.count, loop)
|
||||
@@ -2181,26 +2196,18 @@ BEGIN
|
||||
DEC(xmm)
|
||||
|
||||
|CODE.opUMINF:
|
||||
ASSERT(xmm < 5);
|
||||
INC(xmm);
|
||||
reg1 := REG.GetAnyReg(R);
|
||||
lea(reg1, Numbers_Offs, sDATA);
|
||||
movsdrm(xmm, reg1, 0);
|
||||
OutByte3(66H, 0FH, 57H); // xorpd xmm - 1, xmm
|
||||
OutByte(0C0H + (xmm - 1) * 8 + xmm);
|
||||
drop;
|
||||
DEC(xmm)
|
||||
OutByte3(66H, 40H + reg1 DIV 8 + (xmm DIV 8) * 4, 0FH); // xorpd xmm, xmmword[reg1]
|
||||
OutByte2(57H, reg1 MOD 8 + (xmm MOD 8) * 8);
|
||||
drop
|
||||
|
||||
|CODE.opFABS:
|
||||
ASSERT(xmm < 5);
|
||||
INC(xmm);
|
||||
reg1 := REG.GetAnyReg(R);
|
||||
lea(reg1, Numbers_Offs + 16, sDATA);
|
||||
movsdrm(xmm, reg1, 0);
|
||||
OutByte3(66H, 0FH, 54H); // andpd xmm - 1, xmm
|
||||
OutByte(0C0H + (xmm - 1) * 8 + xmm);
|
||||
drop;
|
||||
DEC(xmm)
|
||||
OutByte3(66H, 40H + reg1 DIV 8 + (xmm DIV 8) * 4, 0FH); // andpd xmm, xmmword[reg1]
|
||||
OutByte2(54H, reg1 MOD 8 + (xmm MOD 8) * 8);
|
||||
drop
|
||||
|
||||
|CODE.opFLT:
|
||||
UnOp(reg1);
|
||||
|
||||
@@ -3266,7 +3266,7 @@ BEGIN
|
||||
checking := chk;
|
||||
|
||||
IF amd64 THEN
|
||||
CODE.init(5, CODE.little_endian)
|
||||
CODE.init(6, CODE.little_endian)
|
||||
ELSE
|
||||
CODE.init(8, CODE.little_endian)
|
||||
END;
|
||||
|
||||
+1
-1
@@ -1894,7 +1894,7 @@ BEGIN
|
||||
OutByte2(0D9H, 0E8H); // fld1
|
||||
OutByte2(0D9H, 0E0H) // fchs
|
||||
ELSE
|
||||
a := UTILS.splitf(float, a, b);
|
||||
n := UTILS.splitf(float, a, b);
|
||||
pushc(b);
|
||||
pushc(a);
|
||||
OutByte3(0DDH, 004H, 024H); // fld qword[esp]
|
||||
|
||||
Reference in new issue
Block a user