mirror of
https://github.com/AntKrotov/oberon-07-compiler.git
synced 2026-10-05 09:45:47 +00:00
мелкие правки; RVM32I: исправление ошибки
This commit is contained in:
1 parent
8234828dfc
commit
2d48266a69
5 files changed
+9
-17
No files matched your search
Binary file not shown.
+5
-8
@@ -1,7 +1,7 @@
|
|||||||
(*
|
(*
|
||||||
BSD 2-Clause License
|
BSD 2-Clause License
|
||||||
|
|
||||||
Copyright (c) 2018-2020, Anton Krotov
|
Copyright (c) 2018-2021, Anton Krotov
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
*)
|
*)
|
||||||
|
|
||||||
@@ -154,27 +154,24 @@ END read;
|
|||||||
|
|
||||||
PROCEDURE write* (file: FILE; chunk: ARRAY OF BYTE; bytes: INTEGER): INTEGER;
|
PROCEDURE write* (file: FILE; chunk: ARRAY OF BYTE; bytes: INTEGER): INTEGER;
|
||||||
VAR
|
VAR
|
||||||
free, n, k, res, idx: INTEGER;
|
free, n, idx: INTEGER;
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
idx := 0;
|
idx := 0;
|
||||||
res := 0;
|
|
||||||
IF (file # NIL) & (file.count >= 0) THEN
|
IF (file # NIL) & (file.count >= 0) THEN
|
||||||
|
|
||||||
free := LEN(file.buffer) - file.count;
|
free := LEN(file.buffer) - file.count;
|
||||||
WHILE bytes > 0 DO
|
WHILE bytes > 0 DO
|
||||||
n := MIN(free, bytes);
|
n := MIN(free, bytes);
|
||||||
copy(chunk, idx, file.buffer, file.count, n);
|
copy(chunk, idx, file.buffer, file.count, n);
|
||||||
INC(res, n);
|
|
||||||
DEC(free, n);
|
DEC(free, n);
|
||||||
DEC(bytes, n);
|
DEC(bytes, n);
|
||||||
INC(idx, n);
|
INC(idx, n);
|
||||||
INC(file.count, n);
|
INC(file.count, n);
|
||||||
IF free = 0 THEN
|
IF free = 0 THEN
|
||||||
k := flush(file);
|
IF flush(file) # LEN(file.buffer) THEN
|
||||||
IF k # LEN(file.buffer) THEN
|
|
||||||
bytes := 0;
|
bytes := 0;
|
||||||
DEC(res, n)
|
DEC(idx, n)
|
||||||
ELSE
|
ELSE
|
||||||
file.count := 0;
|
file.count := 0;
|
||||||
free := LEN(file.buffer)
|
free := LEN(file.buffer)
|
||||||
@@ -184,7 +181,7 @@ BEGIN
|
|||||||
|
|
||||||
END
|
END
|
||||||
|
|
||||||
RETURN res
|
RETURN idx
|
||||||
END write;
|
END write;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+2
-6
@@ -861,15 +861,11 @@ BEGIN
|
|||||||
|
|
||||||
|IL.opINCLC, IL.opEXCLC:
|
|IL.opINCLC, IL.opEXCLC:
|
||||||
UnOp(r1);
|
UnOp(r1);
|
||||||
r2 := GetAnyReg();
|
|
||||||
ldr32(r2, r1);
|
|
||||||
IF opcode = IL.opINCLC THEN
|
IF opcode = IL.opINCLC THEN
|
||||||
Emit(opINCLC, r2, param2)
|
Emit(opINCLC, r1, param2)
|
||||||
ELSE
|
ELSE
|
||||||
Emit(opEXCLC, r2, param2)
|
Emit(opEXCLC, r1, param2)
|
||||||
END;
|
END;
|
||||||
str32(r1, r2);
|
|
||||||
drop;
|
|
||||||
drop
|
drop
|
||||||
|
|
||||||
|IL.opEQB, IL.opNEB:
|
|IL.opEQB, IL.opNEB:
|
||||||
|
|||||||
+2
-3
@@ -312,14 +312,13 @@ BEGIN
|
|||||||
sym := lxERROR07
|
sym := lxERROR07
|
||||||
END;
|
END;
|
||||||
|
|
||||||
|
num[i] := 0X;
|
||||||
|
|
||||||
IF sym = lxINTEGER THEN
|
IF sym = lxINTEGER THEN
|
||||||
num[i] := 0X;
|
|
||||||
ARITH.iconv(num, lex.value, error)
|
ARITH.iconv(num, lex.value, error)
|
||||||
ELSIF (sym = lxHEX) OR (sym = lxCHAR) THEN
|
ELSIF (sym = lxHEX) OR (sym = lxCHAR) THEN
|
||||||
num[i] := 0X;
|
|
||||||
ARITH.hconv(num, lex.value, error)
|
ARITH.hconv(num, lex.value, error)
|
||||||
ELSIF sym = lxFLOAT THEN
|
ELSIF sym = lxFLOAT THEN
|
||||||
num[i] := 0X;
|
|
||||||
ARITH.fconv(num, lex.value, error)
|
ARITH.fconv(num, lex.value, error)
|
||||||
END;
|
END;
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user