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
d8c4975aed
commit
c78c0ebd28
15 files changed
+23
-92
No files matched your search
Binary file not shown.
@@ -1,7 +1,7 @@
|
||||
(*
|
||||
BSD 2-Clause License
|
||||
|
||||
Copyright (c) 2013-2014, 2018-2020 Anton Krotov
|
||||
Copyright (c) 2013-2014, 2018-2022 Anton Krotov
|
||||
All rights reserved.
|
||||
*)
|
||||
|
||||
@@ -271,8 +271,7 @@ BEGIN
|
||||
ELSIF x < -15.0 THEN
|
||||
x := -1.0
|
||||
ELSE
|
||||
x := exp(2.0 * x);
|
||||
x := (x - 1.0) / (x + 1.0)
|
||||
x := 1.0 - 2.0 / (exp(2.0 * x) + 1.0)
|
||||
END
|
||||
|
||||
RETURN x
|
||||
|
||||
+2
-3
@@ -1,7 +1,7 @@
|
||||
(*
|
||||
BSD 2-Clause License
|
||||
|
||||
Copyright (c) 2019-2021, Anton Krotov
|
||||
Copyright (c) 2019-2022, Anton Krotov
|
||||
All rights reserved.
|
||||
*)
|
||||
|
||||
@@ -394,8 +394,7 @@ BEGIN
|
||||
ELSIF x < -15.0 THEN
|
||||
x := -ONE
|
||||
ELSE
|
||||
x := exp(TWO * x);
|
||||
x := (x - ONE) / (x + ONE)
|
||||
x := ONE - TWO / (exp(TWO * x) + ONE)
|
||||
END
|
||||
|
||||
RETURN x
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
(*
|
||||
BSD 2-Clause License
|
||||
|
||||
Copyright (c) 2013-2014, 2018-2021 Anton Krotov
|
||||
Copyright (c) 2013-2014, 2018-2022 Anton Krotov
|
||||
All rights reserved.
|
||||
*)
|
||||
|
||||
@@ -271,8 +271,7 @@ BEGIN
|
||||
ELSIF x < -15.0 THEN
|
||||
x := -1.0
|
||||
ELSE
|
||||
x := exp(2.0 * x);
|
||||
x := (x - 1.0) / (x + 1.0)
|
||||
x := 1.0 - 2.0 / (exp(2.0 * x) + 1.0)
|
||||
END
|
||||
|
||||
RETURN x
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
(*
|
||||
BSD 2-Clause License
|
||||
|
||||
Copyright (c) 2019-2021, Anton Krotov
|
||||
Copyright (c) 2019-2022, Anton Krotov
|
||||
All rights reserved.
|
||||
*)
|
||||
|
||||
@@ -394,8 +394,7 @@ BEGIN
|
||||
ELSIF x < -15.0 THEN
|
||||
x := -ONE
|
||||
ELSE
|
||||
x := exp(TWO * x);
|
||||
x := (x - ONE) / (x + ONE)
|
||||
x := ONE - TWO / (exp(TWO * x) + ONE)
|
||||
END
|
||||
|
||||
RETURN x
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
(*
|
||||
BSD 2-Clause License
|
||||
|
||||
Copyright (c) 2013-2014, 2018-2021 Anton Krotov
|
||||
Copyright (c) 2013-2014, 2018-2022 Anton Krotov
|
||||
All rights reserved.
|
||||
*)
|
||||
|
||||
@@ -271,8 +271,7 @@ BEGIN
|
||||
ELSIF x < -15.0 THEN
|
||||
x := -1.0
|
||||
ELSE
|
||||
x := exp(2.0 * x);
|
||||
x := (x - 1.0) / (x + 1.0)
|
||||
x := 1.0 - 2.0 / (exp(2.0 * x) + 1.0)
|
||||
END
|
||||
|
||||
RETURN x
|
||||
|
||||
@@ -1787,11 +1787,6 @@ BEGIN
|
||||
X86._movrm(reg1, reg1, 0, param2 * 8, FALSE);
|
||||
X86._movrm(reg1, reg2, 0, param2 * 8, TRUE)
|
||||
|
||||
|IL.opCHKBYTE:
|
||||
BinOp(reg1, reg2);
|
||||
cmprc(reg1, 256);
|
||||
jcc(jb, param1)
|
||||
|
||||
|IL.opCHKIDX:
|
||||
UnOp(reg1);
|
||||
cmprc(reg1, param2);
|
||||
@@ -1832,14 +1827,6 @@ BEGIN
|
||||
INCL(R.regs, reg1);
|
||||
ASSERT(REG.GetReg(R, reg1))
|
||||
|
||||
|IL.opCHR:
|
||||
UnOp(reg1);
|
||||
andrc(reg1, 255)
|
||||
|
||||
|IL.opWCHR:
|
||||
UnOp(reg1);
|
||||
andrc(reg1, 65535)
|
||||
|
||||
|IL.opEQP, IL.opNEP, IL.opEQIP, IL.opNEIP:
|
||||
UnOp(reg1);
|
||||
reg2 := GetAnyReg();
|
||||
|
||||
+3
-3
@@ -24,7 +24,7 @@ CONST
|
||||
opCOPYA* = 6; opCASET* = 7; opMULC* = 8; opMUL* = 9; opDIV* = 10; opMOD* = 11;
|
||||
opDIVL* = 12; opMODL* = 13; opDIVR* = 14; opMODR* = 15; opUMINUS* = 16;
|
||||
opADD* = 17; opSUB* = 18; opONERR* = 19; opSUBL* = 20; opADDC* = 21; opSUBR* = 22;
|
||||
opSAVE* = 23; opSAVEC* = 24; opSAVE8* = 25; opSAVE8C* = 26; opCHKBYTE* = 27; opDROP* = 28;
|
||||
opSAVE* = 23; opSAVEC* = 24; opSAVE8* = 25; opSAVE8C* = 26; (*opCHKBYTE* = 27;*) opDROP* = 28;
|
||||
opNOT* = 29;
|
||||
|
||||
opEQ* = 30; opNE* = opEQ + 1; opLT* = opEQ + 2; opLE* = opEQ + 3; opGT* = opEQ + 4; opGE* = opEQ + 5 (* 35 *);
|
||||
@@ -72,7 +72,7 @@ CONST
|
||||
opPUSHT* = 169; opTYPEGR* = 170; opISREC* = 171; opCHKIDX* = 172; opPARAM* = 173;
|
||||
opCHKIDX2* = 174; opLEN* = 175; opROT* = 176; opSAVES* = 177; opSADR* = 178; opLENGTHW* = 179;
|
||||
|
||||
opCHR* = 180; opENDSW* = 181; opLEAVEF* = 182; opCLEANUP* = 183; opMOVE* = 184;
|
||||
(*opCHR* = 180;*) opENDSW* = 181; opLEAVEF* = 182; opCLEANUP* = 183; opMOVE* = 184;
|
||||
opLSR* = 185; opLSR1* = 186; opLSR2* = 187;
|
||||
opMIN* = 188; opMINC* = 189; opMAX* = 190; opMAXC* = 191; opSYSVALIGN16* = 192;
|
||||
opEQB* = 193; opNEB* = 194; opINF* = 195; opWIN64ALIGN16* = 196; opVLOAD8* = 197; opGLOAD8* = 198;
|
||||
@@ -80,7 +80,7 @@ CONST
|
||||
opLOAD64* = 202; opLLOAD64* = 203; opVLOAD64* = 204; opGLOAD64* = 205; opSAVE64* = 206;
|
||||
|
||||
opTYPEGD* = 207; opCALLI* = 208; opPUSHIP* = 209; opSAVEIP* = 210; opEQIP* = 211; opNEIP* = 212;
|
||||
opSAVE16C* = 213; opWCHR* = 214; opHANDLER* = 215;
|
||||
opSAVE16C* = 213; (*opWCHR* = 214;*) opHANDLER* = 215;
|
||||
|
||||
opSYSVCALL* = 216; opSYSVCALLI* = 217; opSYSVCALLP* = 218; opFNAME* = 219; opFASTCALL* = 220;
|
||||
|
||||
|
||||
+1
-10
@@ -1,7 +1,7 @@
|
||||
(*
|
||||
BSD 2-Clause License
|
||||
|
||||
Copyright (c) 2019-2021, Anton Krotov
|
||||
Copyright (c) 2019-2022, Anton Krotov
|
||||
All rights reserved.
|
||||
*)
|
||||
|
||||
@@ -984,11 +984,6 @@ BEGIN
|
||||
drop;
|
||||
Op2(opMOV + bw(param2 = 1), src_x(param1, SR), dst_x(0, reg2))
|
||||
|
||||
|IL.opCHKBYTE:
|
||||
BinOp(reg1, reg2);
|
||||
Op2(opCMP, imm(256), reg1);
|
||||
jcc(jb, param1)
|
||||
|
||||
|IL.opCHKIDX:
|
||||
UnOp(reg1);
|
||||
Op2(opCMP, imm(param2), reg1);
|
||||
@@ -1412,10 +1407,6 @@ BEGIN
|
||||
Test(ACC);
|
||||
jcc(jne, param1)
|
||||
|
||||
|IL.opCHR:
|
||||
UnOp(reg1);
|
||||
Op2(opAND, imm(255), reg1)
|
||||
|
||||
|IL.opABS:
|
||||
UnOp(reg1);
|
||||
Test(reg1);
|
||||
|
||||
+1
-14
@@ -1,7 +1,7 @@
|
||||
(*
|
||||
BSD 2-Clause License
|
||||
|
||||
Copyright (c) 2020-2021, Anton Krotov
|
||||
Copyright (c) 2020-2022, Anton Krotov
|
||||
All rights reserved.
|
||||
*)
|
||||
|
||||
@@ -790,14 +790,6 @@ BEGIN
|
||||
UnOp(r1);
|
||||
Emit(opLSRC, r1, param2 MOD (szWord * 8))
|
||||
|
||||
|IL.opCHR:
|
||||
UnOp(r1);
|
||||
Emit(opANDC, r1, 255)
|
||||
|
||||
|IL.opWCHR:
|
||||
UnOp(r1);
|
||||
Emit(opANDC, r1, 65535)
|
||||
|
||||
|IL.opABS:
|
||||
UnOp(r1);
|
||||
Emit(opCMPC, r1, 0);
|
||||
@@ -958,11 +950,6 @@ BEGIN
|
||||
END;
|
||||
drop
|
||||
|
||||
|IL.opCHKBYTE:
|
||||
BinOp(r1, r2);
|
||||
Emit(opCMPC, r1, 256);
|
||||
Emit(opJBT, param1, 0)
|
||||
|
||||
|IL.opCHKIDX:
|
||||
UnOp(r1);
|
||||
Emit(opCMPC, r1, param2);
|
||||
|
||||
@@ -402,12 +402,6 @@ BEGIN
|
||||
IL.AddCmd(IL.opSAVE8C, ARITH.Int(e.value))
|
||||
END
|
||||
ELSE
|
||||
IF chkBYTE IN Options.checking THEN
|
||||
label := IL.NewLabel();
|
||||
IL.AddCmd2(IL.opCHKBYTE, label, 0);
|
||||
IL.OnError(line, errBYTE);
|
||||
IL.SetLabel(label)
|
||||
END;
|
||||
IL.AddCmd0(IL.opSAVE8)
|
||||
END
|
||||
END
|
||||
@@ -1062,7 +1056,7 @@ BEGIN
|
||||
IF chkCHR IN Options.checking THEN
|
||||
CheckRange(256, pos.line, errCHR)
|
||||
ELSE
|
||||
IL.AddCmd0(IL.opCHR)
|
||||
IL.AddCmd(IL.opMODR, 256)
|
||||
END
|
||||
END
|
||||
|
||||
@@ -1077,7 +1071,7 @@ BEGIN
|
||||
IF chkWCHR IN Options.checking THEN
|
||||
CheckRange(65536, pos.line, errWCHR)
|
||||
ELSE
|
||||
IL.AddCmd0(IL.opWCHR)
|
||||
IL.AddCmd(IL.opMODR, 65536)
|
||||
END
|
||||
END
|
||||
|
||||
@@ -2599,6 +2593,9 @@ BEGIN
|
||||
|
||||
NextPos(parser, pos);
|
||||
expression(parser, e1);
|
||||
IF (e._type.typ = PROG.tBYTE) & (e1.obj # eCONST) & (e1._type.typ = PROG.tINTEGER) & (chkBYTE IN Options.checking) THEN
|
||||
CheckRange(256, pos.line, errBYTE)
|
||||
END;
|
||||
|
||||
IL.setlast(endcall.prev(IL.COMMAND));
|
||||
|
||||
|
||||
+1
-14
@@ -1,7 +1,7 @@
|
||||
(*
|
||||
BSD 2-Clause License
|
||||
|
||||
Copyright (c) 2019-2021, Anton Krotov
|
||||
Copyright (c) 2019-2022, Anton Krotov
|
||||
All rights reserved.
|
||||
*)
|
||||
|
||||
@@ -1587,14 +1587,6 @@ BEGIN
|
||||
Tst(r1);
|
||||
SetCC(jne, r1)
|
||||
|
||||
|IL.opCHR:
|
||||
UnOp(r1);
|
||||
Code(0B2C0H + r1 * 9) (* uxtb r1, r1 *)
|
||||
|
||||
|IL.opWCHR:
|
||||
UnOp(r1);
|
||||
Code(0B280H + r1 * 9) (* uxth r1, r1 *)
|
||||
|
||||
|IL.opASR, IL.opROR, IL.opLSL, IL.opLSR:
|
||||
BinOp(r1, r2);
|
||||
Shift(opcode, r1, r2);
|
||||
@@ -1620,11 +1612,6 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
|IL.opCHKBYTE:
|
||||
BinOp(r1, r2);
|
||||
CmpConst(r1, 256);
|
||||
jcc(jb, param1)
|
||||
|
||||
|IL.opCHKIDX:
|
||||
UnOp(r1);
|
||||
CmpConst(r1, param2);
|
||||
|
||||
+2
-2
@@ -23,8 +23,8 @@ CONST
|
||||
max32* = 2147483647;
|
||||
|
||||
vMajor* = 1;
|
||||
vMinor* = 58;
|
||||
Date* = "07-sep-2022";
|
||||
vMinor* = 59;
|
||||
Date* = "10-sep-2022";
|
||||
|
||||
FILE_EXT* = ".ob07";
|
||||
RTL_NAME* = "RTL";
|
||||
|
||||
@@ -1438,11 +1438,6 @@ BEGIN
|
||||
pushc(param1);
|
||||
CallRTL(pic, IL._move)
|
||||
|
||||
|IL.opCHKBYTE:
|
||||
BinOp(reg1, reg2);
|
||||
cmprc(reg1, 256);
|
||||
jcc(jb, param1)
|
||||
|
||||
|IL.opCHKIDX:
|
||||
UnOp(reg1);
|
||||
cmprc(reg1, param2);
|
||||
@@ -1557,14 +1552,6 @@ BEGIN
|
||||
CallRTL(pic, IL._lengthw);
|
||||
GetRegA
|
||||
|
||||
|IL.opCHR:
|
||||
UnOp(reg1);
|
||||
andrc(reg1, 255)
|
||||
|
||||
|IL.opWCHR:
|
||||
UnOp(reg1);
|
||||
andrc(reg1, 65535)
|
||||
|
||||
|IL.opASR, IL.opROR, IL.opLSL, IL.opLSR:
|
||||
UnOp(reg1);
|
||||
IF reg1 # ecx THEN
|
||||
|
||||
Reference in new issue
Block a user