x86: улучшена поддержка Linux

This commit is contained in:
AntKrotov authored and GitHub committed 2019-02-15 11:31:25 +03:00
1 parent 5213aafab5
commit 80940be28c
4 files changed
+20 -13

No files matched your search

+2 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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;