mirror of
https://github.com/AntKrotov/oberon-07-compiler.git
synced 2026-10-05 09:45:47 +00:00
удален тип SYSTEM.CARD16
This commit is contained in:
1 parent
7fb5dd3f10
commit
d03600b97a
16 files changed
+42
-103
No files matched your search
Binary file not shown.
+2
-2
@@ -307,7 +307,7 @@ MODULE Read - чтение основных типов данных из фай
|
||||
|
||||
PROCEDURE Set(F: File.FS; VAR x: SET): BOOLEAN
|
||||
|
||||
PROCEDURE Card16(F: File.FS; VAR x: SYSTEM.CARD16): BOOLEAN
|
||||
PROCEDURE WChar(F: File.FS; VAR x: WCHAR): BOOLEAN
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
MODULE Write - запись основных типов данных в файл F
|
||||
@@ -326,7 +326,7 @@ MODULE Write - запись основных типов данных в файл
|
||||
|
||||
PROCEDURE Set(F: File.FS; x: SET): BOOLEAN
|
||||
|
||||
PROCEDURE Card16(F: File.FS; x: SYSTEM.CARD16): BOOLEAN
|
||||
PROCEDURE WChar(F: File.FS; x: WCHAR): BOOLEAN
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
MODULE DateTime - дата, время
|
||||
|
||||
-18
@@ -166,24 +166,6 @@ UTF-8 с BOM-сигнатурой.
|
||||
например:
|
||||
SYSTEM.CODE(08BH, 045H, 008H) (* mov eax, dword [ebp + 08h] *)
|
||||
|
||||
Также в модуле SYSTEM определен тип CARD16 (2 байта). Для типа CARD16 не
|
||||
допускаются никакие явные операции, за исключением присваивания.
|
||||
Преобразования CARD16 -> INTEGER и INTEGER -> CARD16 могут быть реализованы
|
||||
так:
|
||||
|
||||
PROCEDURE Card16ToInt (w: SYSTEM.CARD16): INTEGER;
|
||||
VAR i: INTEGER;
|
||||
BEGIN
|
||||
SYSTEM.PUT(SYSTEM.ADR(i), w)
|
||||
RETURN i
|
||||
END Card16ToInt;
|
||||
|
||||
PROCEDURE IntToCard16 (i: INTEGER): SYSTEM.CARD16;
|
||||
VAR w: SYSTEM.CARD16;
|
||||
BEGIN
|
||||
SYSTEM.GET(SYSTEM.ADR(i), w)
|
||||
RETURN w
|
||||
END IntToCard16;
|
||||
|
||||
Функции псевдомодуля SYSTEM нельзя использовать в константных выражениях.
|
||||
|
||||
|
||||
+2
-3
@@ -164,9 +164,8 @@ UTF-8 с BOM-сигнатурой.
|
||||
|
||||
SYSTEM.CODE(048H,08BH,045H,010H) (* mov rax,qword[rbp+16] *)
|
||||
|
||||
Также в модуле SYSTEM определены типы CARD16 (2 байта) и CARD32 (4 байта).
|
||||
Для типов CARD16 и CARD32 не допускаются никакие явные операции, за
|
||||
исключением присваивания.
|
||||
Также, в модуле SYSTEM определен тип CARD32 (4 байта). Для типа CARD32 не
|
||||
допускаются никакие явные операции, за исключением присваивания.
|
||||
|
||||
Функции псевдомодуля SYSTEM нельзя использовать в константных выражениях.
|
||||
|
||||
|
||||
+4
-10
@@ -184,7 +184,7 @@ BEGIN
|
||||
END _dispose;
|
||||
|
||||
|
||||
PROCEDURE [stdcall] _length* (len, str: INTEGER): INTEGER;
|
||||
PROCEDURE [stdcall] _length* (len, str: INTEGER);
|
||||
BEGIN
|
||||
SYSTEM.CODE(
|
||||
08BH, 045H, 00CH, (* mov eax, dword [ebp + 0Ch] *)
|
||||
@@ -197,15 +197,12 @@ BEGIN
|
||||
0E2H, 0F8H, (* loop L1 *)
|
||||
040H, (* inc eax *)
|
||||
(* L2: *)
|
||||
02BH, 045H, 00CH, (* sub eax, dword [ebp + 0Ch] *)
|
||||
05DH, (* pop ebp *)
|
||||
0C2H, 008H, 000H (* ret 08h *)
|
||||
02BH, 045H, 00CH (* sub eax, dword [ebp + 0Ch] *)
|
||||
)
|
||||
RETURN 0
|
||||
END _length;
|
||||
|
||||
|
||||
PROCEDURE [stdcall] _lengthw* (len, str: INTEGER): INTEGER;
|
||||
PROCEDURE [stdcall] _lengthw* (len, str: INTEGER);
|
||||
BEGIN
|
||||
SYSTEM.CODE(
|
||||
08BH, 045H, 00CH, (* mov eax, dword [ebp + 0Ch] *)
|
||||
@@ -222,11 +219,8 @@ BEGIN
|
||||
040H, (* inc eax *)
|
||||
(* L2: *)
|
||||
02BH, 045H, 00CH, (* sub eax, dword [ebp + 0Ch] *)
|
||||
0D1H, 0E8H, (* shr eax, 1 *)
|
||||
05DH, (* pop ebp *)
|
||||
0C2H, 008H, 000H (* ret 08h *)
|
||||
0D1H, 0E8H (* shr eax, 1 *)
|
||||
)
|
||||
RETURN 0
|
||||
END _lengthw;
|
||||
|
||||
|
||||
|
||||
@@ -39,8 +39,8 @@ PROCEDURE Set*(F: File.FS; VAR x: SET): BOOLEAN;
|
||||
RETURN File.Read(F, sys.ADR(x), sys.SIZE(SET)) = sys.SIZE(SET)
|
||||
END Set;
|
||||
|
||||
PROCEDURE Card16*(F: File.FS; VAR x: sys.CARD16): BOOLEAN;
|
||||
RETURN File.Read(F, sys.ADR(x), sys.SIZE(sys.CARD16)) = sys.SIZE(sys.CARD16)
|
||||
END Card16;
|
||||
PROCEDURE WChar*(F: File.FS; VAR x: WCHAR): BOOLEAN;
|
||||
RETURN File.Read(F, sys.ADR(x), sys.SIZE(WCHAR)) = sys.SIZE(WCHAR)
|
||||
END WChar;
|
||||
|
||||
END Read.
|
||||
@@ -39,8 +39,8 @@ PROCEDURE Set*(F: File.FS; x: SET): BOOLEAN;
|
||||
RETURN File.Write(F, sys.ADR(x), sys.SIZE(SET)) = sys.SIZE(SET)
|
||||
END Set;
|
||||
|
||||
PROCEDURE Card16*(F: File.FS; x: sys.CARD16): BOOLEAN;
|
||||
RETURN File.Write(F, sys.ADR(x), sys.SIZE(sys.CARD16)) = sys.SIZE(sys.CARD16)
|
||||
END Card16;
|
||||
PROCEDURE WChar*(F: File.FS; x: WCHAR): BOOLEAN;
|
||||
RETURN File.Write(F, sys.ADR(x), sys.SIZE(WCHAR)) = sys.SIZE(WCHAR)
|
||||
END WChar;
|
||||
|
||||
END Write.
|
||||
+4
-10
@@ -184,7 +184,7 @@ BEGIN
|
||||
END _dispose;
|
||||
|
||||
|
||||
PROCEDURE [stdcall] _length* (len, str: INTEGER): INTEGER;
|
||||
PROCEDURE [stdcall] _length* (len, str: INTEGER);
|
||||
BEGIN
|
||||
SYSTEM.CODE(
|
||||
08BH, 045H, 00CH, (* mov eax, dword [ebp + 0Ch] *)
|
||||
@@ -197,15 +197,12 @@ BEGIN
|
||||
0E2H, 0F8H, (* loop L1 *)
|
||||
040H, (* inc eax *)
|
||||
(* L2: *)
|
||||
02BH, 045H, 00CH, (* sub eax, dword [ebp + 0Ch] *)
|
||||
05DH, (* pop ebp *)
|
||||
0C2H, 008H, 000H (* ret 08h *)
|
||||
02BH, 045H, 00CH (* sub eax, dword [ebp + 0Ch] *)
|
||||
)
|
||||
RETURN 0
|
||||
END _length;
|
||||
|
||||
|
||||
PROCEDURE [stdcall] _lengthw* (len, str: INTEGER): INTEGER;
|
||||
PROCEDURE [stdcall] _lengthw* (len, str: INTEGER);
|
||||
BEGIN
|
||||
SYSTEM.CODE(
|
||||
08BH, 045H, 00CH, (* mov eax, dword [ebp + 0Ch] *)
|
||||
@@ -222,11 +219,8 @@ BEGIN
|
||||
040H, (* inc eax *)
|
||||
(* L2: *)
|
||||
02BH, 045H, 00CH, (* sub eax, dword [ebp + 0Ch] *)
|
||||
0D1H, 0E8H, (* shr eax, 1 *)
|
||||
05DH, (* pop ebp *)
|
||||
0C2H, 008H, 000H (* ret 08h *)
|
||||
0D1H, 0E8H (* shr eax, 1 *)
|
||||
)
|
||||
RETURN 0
|
||||
END _lengthw;
|
||||
|
||||
|
||||
|
||||
+5
-13
@@ -65,10 +65,8 @@ BEGIN
|
||||
048H, 083H, 0E1H, 007H, (* and rcx, 7 *)
|
||||
0F3H, 0A4H, (* rep movsb *)
|
||||
05EH, (* pop rsi *)
|
||||
05FH, (* pop rdi *)
|
||||
05FH (* pop rdi *)
|
||||
(* L: *)
|
||||
05DH, (* pop rbp *)
|
||||
0C2H, 018H, 000H (* ret 24 *)
|
||||
)
|
||||
END _move;
|
||||
|
||||
@@ -186,7 +184,7 @@ BEGIN
|
||||
END _dispose;
|
||||
|
||||
|
||||
PROCEDURE [stdcall64] _length* (len, str: INTEGER): INTEGER;
|
||||
PROCEDURE [stdcall64] _length* (len, str: INTEGER);
|
||||
BEGIN
|
||||
SYSTEM.CODE(
|
||||
048H, 08BH, 045H, 018H, (* mov rax, qword [rbp + 24] *)
|
||||
@@ -199,15 +197,12 @@ BEGIN
|
||||
0E2H, 0F6H, (* loop L1 *)
|
||||
048H, 0FFH, 0C0H, (* inc rax *)
|
||||
(* L2: *)
|
||||
048H, 02BH, 045H, 018H, (* sub rax, qword [rbp + 24] *)
|
||||
05DH, (* pop rbp *)
|
||||
0C2H, 010H, 000H (* ret 10h *)
|
||||
048H, 02BH, 045H, 018H (* sub rax, qword [rbp + 24] *)
|
||||
)
|
||||
RETURN 0
|
||||
END _length;
|
||||
|
||||
|
||||
PROCEDURE [stdcall64] _lengthw* (len, str: INTEGER): INTEGER;
|
||||
PROCEDURE [stdcall64] _lengthw* (len, str: INTEGER);
|
||||
BEGIN
|
||||
SYSTEM.CODE(
|
||||
048H, 08BH, 045H, 018H, (* mov rax, qword [rbp + 24] *)
|
||||
@@ -221,11 +216,8 @@ BEGIN
|
||||
048H, 083H, 0C0H, 002H, (* add rax, 2 *)
|
||||
(* L2: *)
|
||||
048H, 02BH, 045H, 018H, (* sub rax, qword [rbp + 24] *)
|
||||
048H, 0D1H, 0E8H, (* shr rax, 1 *)
|
||||
05DH, (* pop rbp *)
|
||||
0C2H, 010H, 000H (* ret 10h *)
|
||||
048H, 0D1H, 0E8H (* shr rax, 1 *)
|
||||
)
|
||||
RETURN 0
|
||||
END _lengthw;
|
||||
|
||||
|
||||
|
||||
@@ -42,9 +42,9 @@ TYPE
|
||||
|
||||
cBytes: CHAR;
|
||||
fFixedDisk: CHAR;
|
||||
nErrCode: SYSTEM.CARD16;
|
||||
Reserved1: SYSTEM.CARD16;
|
||||
Reserved2: SYSTEM.CARD16;
|
||||
nErrCode: WCHAR;
|
||||
Reserved1: WCHAR;
|
||||
Reserved2: WCHAR;
|
||||
szPathName: ARRAY OFS_MAXPATHNAME OF CHAR
|
||||
|
||||
END;
|
||||
|
||||
+4
-10
@@ -184,7 +184,7 @@ BEGIN
|
||||
END _dispose;
|
||||
|
||||
|
||||
PROCEDURE [stdcall] _length* (len, str: INTEGER): INTEGER;
|
||||
PROCEDURE [stdcall] _length* (len, str: INTEGER);
|
||||
BEGIN
|
||||
SYSTEM.CODE(
|
||||
08BH, 045H, 00CH, (* mov eax, dword [ebp + 0Ch] *)
|
||||
@@ -197,15 +197,12 @@ BEGIN
|
||||
0E2H, 0F8H, (* loop L1 *)
|
||||
040H, (* inc eax *)
|
||||
(* L2: *)
|
||||
02BH, 045H, 00CH, (* sub eax, dword [ebp + 0Ch] *)
|
||||
05DH, (* pop ebp *)
|
||||
0C2H, 008H, 000H (* ret 08h *)
|
||||
02BH, 045H, 00CH (* sub eax, dword [ebp + 0Ch] *)
|
||||
)
|
||||
RETURN 0
|
||||
END _length;
|
||||
|
||||
|
||||
PROCEDURE [stdcall] _lengthw* (len, str: INTEGER): INTEGER;
|
||||
PROCEDURE [stdcall] _lengthw* (len, str: INTEGER);
|
||||
BEGIN
|
||||
SYSTEM.CODE(
|
||||
08BH, 045H, 00CH, (* mov eax, dword [ebp + 0Ch] *)
|
||||
@@ -222,11 +219,8 @@ BEGIN
|
||||
040H, (* inc eax *)
|
||||
(* L2: *)
|
||||
02BH, 045H, 00CH, (* sub eax, dword [ebp + 0Ch] *)
|
||||
0D1H, 0E8H, (* shr eax, 1 *)
|
||||
05DH, (* pop ebp *)
|
||||
0C2H, 008H, 000H (* ret 08h *)
|
||||
0D1H, 0E8H (* shr eax, 1 *)
|
||||
)
|
||||
RETURN 0
|
||||
END _lengthw;
|
||||
|
||||
|
||||
|
||||
@@ -42,9 +42,9 @@ TYPE
|
||||
|
||||
cBytes: CHAR;
|
||||
fFixedDisk: CHAR;
|
||||
nErrCode: SYSTEM.CARD16;
|
||||
Reserved1: SYSTEM.CARD16;
|
||||
Reserved2: SYSTEM.CARD16;
|
||||
nErrCode: WCHAR;
|
||||
Reserved1: WCHAR;
|
||||
Reserved2: WCHAR;
|
||||
szPathName: ARRAY OFS_MAXPATHNAME OF CHAR
|
||||
|
||||
END;
|
||||
|
||||
+5
-13
@@ -65,10 +65,8 @@ BEGIN
|
||||
048H, 083H, 0E1H, 007H, (* and rcx, 7 *)
|
||||
0F3H, 0A4H, (* rep movsb *)
|
||||
05EH, (* pop rsi *)
|
||||
05FH, (* pop rdi *)
|
||||
05FH (* pop rdi *)
|
||||
(* L: *)
|
||||
05DH, (* pop rbp *)
|
||||
0C2H, 018H, 000H (* ret 24 *)
|
||||
)
|
||||
END _move;
|
||||
|
||||
@@ -186,7 +184,7 @@ BEGIN
|
||||
END _dispose;
|
||||
|
||||
|
||||
PROCEDURE [stdcall64] _length* (len, str: INTEGER): INTEGER;
|
||||
PROCEDURE [stdcall64] _length* (len, str: INTEGER);
|
||||
BEGIN
|
||||
SYSTEM.CODE(
|
||||
048H, 08BH, 045H, 018H, (* mov rax, qword [rbp + 24] *)
|
||||
@@ -199,15 +197,12 @@ BEGIN
|
||||
0E2H, 0F6H, (* loop L1 *)
|
||||
048H, 0FFH, 0C0H, (* inc rax *)
|
||||
(* L2: *)
|
||||
048H, 02BH, 045H, 018H, (* sub rax, qword [rbp + 24] *)
|
||||
05DH, (* pop rbp *)
|
||||
0C2H, 010H, 000H (* ret 10h *)
|
||||
048H, 02BH, 045H, 018H (* sub rax, qword [rbp + 24] *)
|
||||
)
|
||||
RETURN 0
|
||||
END _length;
|
||||
|
||||
|
||||
PROCEDURE [stdcall64] _lengthw* (len, str: INTEGER): INTEGER;
|
||||
PROCEDURE [stdcall64] _lengthw* (len, str: INTEGER);
|
||||
BEGIN
|
||||
SYSTEM.CODE(
|
||||
048H, 08BH, 045H, 018H, (* mov rax, qword [rbp + 24] *)
|
||||
@@ -221,11 +216,8 @@ BEGIN
|
||||
048H, 083H, 0C0H, 002H, (* add rax, 2 *)
|
||||
(* L2: *)
|
||||
048H, 02BH, 045H, 018H, (* sub rax, qword [rbp + 24] *)
|
||||
048H, 0D1H, 0E8H, (* shr rax, 1 *)
|
||||
05DH, (* pop rbp *)
|
||||
0C2H, 010H, 000H (* ret 10h *)
|
||||
048H, 0D1H, 0E8H (* shr rax, 1 *)
|
||||
)
|
||||
RETURN 0
|
||||
END _lengthw;
|
||||
|
||||
|
||||
|
||||
+3
-9
@@ -24,9 +24,9 @@ CONST
|
||||
tINTEGER* = 1; tBYTE* = 2; tCHAR* = 3; tSET* = 4;
|
||||
tBOOLEAN* = 5; tREAL* = 6; tARRAY* = 7; tRECORD* = 8;
|
||||
tPOINTER* = 9; tPROCEDURE* = 10; tSTRING* = 11; tNIL* = 12;
|
||||
tCARD16* = 13; tCARD32* = 14; tANYREC* = 15; tWCHAR* = 16;
|
||||
tCARD32* = 13; tANYREC* = 14; tWCHAR* = 15;
|
||||
|
||||
BASICTYPES* = {tINTEGER, tBYTE, tCHAR, tSET, tBOOLEAN, tREAL, tCARD16, tCARD32, tWCHAR};
|
||||
BASICTYPES* = {tINTEGER, tBYTE, tCHAR, tSET, tBOOLEAN, tREAL, tCARD32, tWCHAR};
|
||||
|
||||
stABS* = 1; stASR* = 2; stCHR* = 3; stFLOOR* = 4;
|
||||
stFLT* = 5; stLEN* = 6; stLSL* = 7; stODD* = 8;
|
||||
@@ -205,7 +205,7 @@ TYPE
|
||||
stTypes*: RECORD
|
||||
|
||||
tINTEGER*, tBYTE*, tCHAR*, tWCHAR*, tSET*, tBOOLEAN*, tREAL*,
|
||||
tSTRING*, tNIL*, tCARD16*, tCARD32*, tANYREC*: TYPE_
|
||||
tSTRING*, tNIL*, tCARD32*, tANYREC*: TYPE_
|
||||
|
||||
END;
|
||||
|
||||
@@ -1126,10 +1126,6 @@ BEGIN
|
||||
EnterProc(unit, "PUT16", idSYSPROC, sysPUT16);
|
||||
EnterProc(unit, "COPY", idSYSPROC, sysCOPY);
|
||||
|
||||
ident := addIdent(unit, SCAN.enterid("CARD16"), idTYPE);
|
||||
ident.type := program.stTypes.tCARD16;
|
||||
ident.export := TRUE;
|
||||
|
||||
ident := addIdent(unit, SCAN.enterid("CARD32"), idTYPE);
|
||||
ident.type := program.stTypes.tCARD32;
|
||||
ident.export := TRUE
|
||||
@@ -1248,7 +1244,6 @@ BEGIN
|
||||
IF target # mConst.Target_iMSP430 THEN
|
||||
program.stTypes.tWCHAR := enterType(program, tWCHAR, 2, 0, NIL);
|
||||
program.stTypes.tREAL := enterType(program, tREAL, 8, 0, NIL);
|
||||
program.stTypes.tCARD16 := enterType(program, tCARD16, 2, 0, NIL);
|
||||
program.stTypes.tCARD32 := enterType(program, tCARD32, 4, 0, NIL)
|
||||
END;
|
||||
|
||||
@@ -1267,7 +1262,6 @@ BEGIN
|
||||
IF target # mConst.Target_iMSP430 THEN
|
||||
program.stTypes.tWCHAR.align := program.stTypes.tWCHAR.size;
|
||||
program.stTypes.tREAL.align := program.stTypes.tREAL.size;
|
||||
program.stTypes.tCARD16.align := program.stTypes.tCARD16.size;
|
||||
program.stTypes.tCARD32.align := program.stTypes.tCARD32.size
|
||||
END;
|
||||
|
||||
|
||||
@@ -470,8 +470,6 @@ BEGIN
|
||||
END
|
||||
ELSIF (e.type.typ = PROG.tCARD32) & (VarType.typ = PROG.tCARD32) THEN
|
||||
IL.AddCmd0(IL.opSAVE32)
|
||||
ELSIF (e.type.typ = PROG.tCARD16) & (VarType.typ = PROG.tCARD16) THEN
|
||||
IL.AddCmd0(IL.opSAVE16)
|
||||
ELSIF ~PROG.isOpenArray(VarType) & ~PROG.isOpenArray(e.type) & PROG.isTypeEq(VarType, e.type) THEN
|
||||
IF e.obj = ePROC THEN
|
||||
IL.AssignProc(e.ident.proc.label)
|
||||
@@ -934,7 +932,7 @@ BEGIN
|
||||
END
|
||||
|
||||
ELSIF (proc = PROG.sysPUT8) OR (proc = PROG.sysPUT16) OR (proc = PROG.sysPUT32) THEN
|
||||
PARS.check(e2.type.typ IN {PROG.tINTEGER, PROG.tBYTE, PROG.tCHAR, PROG.tSET, PROG.tWCHAR, PROG.tCARD16, PROG.tCARD32}, pos, 66);
|
||||
PARS.check(e2.type.typ IN {PROG.tINTEGER, PROG.tBYTE, PROG.tCHAR, PROG.tSET, PROG.tWCHAR, PROG.tCARD32}, pos, 66);
|
||||
IF e2.obj = eCONST THEN
|
||||
LoadConst(e2)
|
||||
END;
|
||||
|
||||
Reference in new issue
Block a user