mirror of
https://github.com/AntKrotov/oberon-07-compiler.git
synced 2026-10-05 09:45:47 +00:00
x86: улучшена поддержка Linux
This commit is contained in:
1 parent
5213aafab5
commit
80940be28c
4 files changed
+20
-13
No files matched your search
@@ -162,7 +162,6 @@ VAR
|
||||
checking: SET;
|
||||
|
||||
bits64: BOOLEAN;
|
||||
//bit32only: ARRAY 15 OF CHAR;
|
||||
|
||||
BEGIN
|
||||
StackSize := 2;
|
||||
@@ -231,9 +230,9 @@ BEGIN
|
||||
IF UTILS.bit_depth = 32 THEN
|
||||
ERRORS.error1("bad parameter <target>")
|
||||
END;
|
||||
PARS.init(64)
|
||||
PARS.init(64, target)
|
||||
ELSE
|
||||
PARS.init(32)
|
||||
PARS.init(32, target)
|
||||
END;
|
||||
|
||||
PARS.program.dll := target IN {mConst.Target_iDLL, mConst.Target_iObject, mConst.Target_iDLL64};
|
||||
|
||||
+1
-1
@@ -86,7 +86,7 @@ BEGIN
|
||||
| 67: str := "'OF' expected"
|
||||
| 68: str := "type expected"
|
||||
| 69: str := "result type of procedure is not a basic type"
|
||||
|
||||
| 70: str := "import not supported"
|
||||
| 71: str := "']' expected"
|
||||
| 72: str := "expression is not BOOLEAN"
|
||||
| 73: str := "not a record"
|
||||
|
||||
+12
-6
@@ -493,13 +493,15 @@ END sysflag;
|
||||
PROCEDURE procflag (parser: PARSER; VAR import: CODE.IMPORT_PROC; isProc: BOOLEAN): INTEGER;
|
||||
VAR
|
||||
call: INTEGER;
|
||||
dll, proc: SCAN.LEXSTR;
|
||||
dll, proc: SCAN.LEXSTR;
|
||||
pos: SCAN.POSITION;
|
||||
|
||||
BEGIN
|
||||
|
||||
import := NIL;
|
||||
|
||||
IF parser.sym = SCAN.lxLSQUARE THEN
|
||||
IF parser.sym = SCAN.lxLSQUARE THEN
|
||||
getpos(parser, pos);
|
||||
check1(parser.unit.sysimport, parser, 54);
|
||||
Next(parser);
|
||||
call := sysflag(parser);
|
||||
@@ -525,6 +527,10 @@ BEGIN
|
||||
Next(parser)
|
||||
ELSE
|
||||
call := PROG.default
|
||||
END;
|
||||
|
||||
IF import # NIL THEN
|
||||
check(program.target.sys # mConst.Target_iELF32, parser, pos, 70)
|
||||
END
|
||||
|
||||
RETURN call
|
||||
@@ -601,14 +607,14 @@ BEGIN
|
||||
|
||||
t.closed := TRUE
|
||||
|
||||
ELSIF parser.sym = SCAN.lxRECORD THEN
|
||||
ELSIF parser.sym = SCAN.lxRECORD THEN
|
||||
getpos(parser, pos2);
|
||||
Next(parser);
|
||||
|
||||
t := program.enterType(program, PROG.tRECORD, 0, 0, unit);
|
||||
t.align := 1;
|
||||
|
||||
IF parser.sym = SCAN.lxLSQUARE THEN
|
||||
IF parser.sym = SCAN.lxLSQUARE THEN
|
||||
check1(parser.unit.sysimport, parser, 54);
|
||||
Next(parser);
|
||||
RecFlag := sysflag(parser);
|
||||
@@ -1120,9 +1126,9 @@ BEGIN
|
||||
END create;
|
||||
|
||||
|
||||
PROCEDURE init* (bit_depth: INTEGER);
|
||||
PROCEDURE init* (bit_depth, sys: INTEGER);
|
||||
BEGIN
|
||||
program := PROG.create(bit_depth);
|
||||
program := PROG.create(bit_depth, sys);
|
||||
parsers := C.create()
|
||||
END init;
|
||||
|
||||
|
||||
+5
-3
@@ -81,7 +81,7 @@ TYPE
|
||||
END;
|
||||
|
||||
PROC* = POINTER TO RECORD (LISTS.ITEM)
|
||||
|
||||
|
||||
label*: INTEGER;
|
||||
used*: BOOLEAN;
|
||||
processed*: BOOLEAN;
|
||||
@@ -241,7 +241,8 @@ TYPE
|
||||
|
||||
bit_depth*: INTEGER;
|
||||
word*: INTEGER;
|
||||
adr*: INTEGER
|
||||
adr*: INTEGER;
|
||||
sys*: INTEGER
|
||||
|
||||
END;
|
||||
|
||||
@@ -1223,7 +1224,7 @@ BEGIN
|
||||
END DelUnused;
|
||||
|
||||
|
||||
PROCEDURE create* (bit_depth: INTEGER): PROGRAM;
|
||||
PROCEDURE create* (bit_depth, sys: INTEGER): PROGRAM;
|
||||
VAR
|
||||
program: PROGRAM;
|
||||
units: UNITS;
|
||||
@@ -1239,6 +1240,7 @@ BEGIN
|
||||
program.target.bit_depth := bit_depth;
|
||||
program.target.word := bit_depth DIV 8;
|
||||
program.target.adr := bit_depth DIV 8;
|
||||
program.target.sys := sys;
|
||||
|
||||
program.recCount := -1;
|
||||
program.bss := 0;
|
||||
|
||||
Reference in new issue
Block a user