mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 00:32:24 +00:00
ulmIO.Mod changed and now it works with 64 bit longint numbers.
This commit is contained in:
parent
2cf9f399e3
commit
bf5bc16cd6
11 changed files with 23 additions and 77 deletions
|
|
@ -1,62 +1 @@
|
||||||
/opt/voc-1.0/lib
|
/opt/voc-1.0/lib
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
/opt/voc-1.0/lib
|
|
||||||
|
|
|
||||||
2
makefile
2
makefile
|
|
@ -145,7 +145,7 @@ stage7:
|
||||||
$(ARCHIVE) *.o
|
$(ARCHIVE) *.o
|
||||||
#$(ARCHIVE) objects
|
#$(ARCHIVE) objects
|
||||||
$(LD) *.o
|
$(LD) *.o
|
||||||
echo "$(PREFIX)/lib" >> 05vishap.conf
|
echo "$(PREFIX)/lib" > 05vishap.conf
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
# rm_objects := rm $(wildcard *.o)
|
# rm_objects := rm $(wildcard *.o)
|
||||||
|
|
|
||||||
|
|
@ -144,7 +144,7 @@ stage7:
|
||||||
$(ARCHIVE) *.o
|
$(ARCHIVE) *.o
|
||||||
#$(ARCHIVE) objects
|
#$(ARCHIVE) objects
|
||||||
$(LD) *.o
|
$(LD) *.o
|
||||||
echo "$(PREFIX)/lib" >> 05vishap.conf
|
echo "$(PREFIX)/lib" > 05vishap.conf
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
# rm_objects := rm $(wildcard *.o)
|
# rm_objects := rm $(wildcard *.o)
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ stage7:
|
||||||
$(ARCHIVE) *.o
|
$(ARCHIVE) *.o
|
||||||
#$(ARCHIVE) objects
|
#$(ARCHIVE) objects
|
||||||
$(LD) *.o
|
$(LD) *.o
|
||||||
echo "$(PREFIX)/lib" >> 05vishap.conf
|
echo "$(PREFIX)/lib" > 05vishap.conf
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
# rm_objects := rm $(wildcard *.o)
|
# rm_objects := rm $(wildcard *.o)
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ stage7:
|
||||||
$(ARCHIVE) *.o
|
$(ARCHIVE) *.o
|
||||||
#$(ARCHIVE) objects
|
#$(ARCHIVE) objects
|
||||||
$(LD) *.o
|
$(LD) *.o
|
||||||
echo "$(PREFIX)/lib" >> 05vishap.conf
|
echo "$(PREFIX)/lib" > 05vishap.conf
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
# rm_objects := rm $(wildcard *.o)
|
# rm_objects := rm $(wildcard *.o)
|
||||||
|
|
|
||||||
|
|
@ -145,7 +145,7 @@ stage7:
|
||||||
$(ARCHIVE) *.o
|
$(ARCHIVE) *.o
|
||||||
#$(ARCHIVE) objects
|
#$(ARCHIVE) objects
|
||||||
$(LD) *.o
|
$(LD) *.o
|
||||||
echo "$(PREFIX)/lib" >> 05vishap.conf
|
echo "$(PREFIX)/lib" > 05vishap.conf
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
# rm_objects := rm $(wildcard *.o)
|
# rm_objects := rm $(wildcard *.o)
|
||||||
|
|
|
||||||
BIN
ocat
BIN
ocat
Binary file not shown.
BIN
showdef
BIN
showdef
Binary file not shown.
|
|
@ -30,16 +30,27 @@ MODULE ulmIO;
|
||||||
(* len is the minimal length of the generated string *)
|
(* len is the minimal length of the generated string *)
|
||||||
(* neg means: "the number is negative" for btyp = dec *)
|
(* neg means: "the number is negative" for btyp = dec *)
|
||||||
|
|
||||||
CONST
|
(*CONST
|
||||||
NumberLen = 11;
|
NumberLen = 11;*)
|
||||||
|
(* we need it as variable to change the value depending on architecture; -- noch *)
|
||||||
VAR
|
VAR
|
||||||
digits : ARRAY NumberLen+1 OF CHAR;
|
(*digits : ARRAY NumberLen+1 OF CHAR;*)
|
||||||
|
digits : POINTER TO ARRAY OF CHAR;
|
||||||
base : INTEGER;
|
base : INTEGER;
|
||||||
cnt, ix : INTEGER;
|
cnt, ix : INTEGER;
|
||||||
maxlen : LONGINT;
|
maxlen : LONGINT;
|
||||||
dig : LONGINT;
|
dig : LONGINT;
|
||||||
|
NumberLen : SHORTINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
||||||
|
IF SIZE(LONGINT) = 4 THEN
|
||||||
|
NumberLen := 11
|
||||||
|
ELSIF SIZE(LONGINT) = 8 THEN
|
||||||
|
NumberLen := 21
|
||||||
|
ELSE
|
||||||
|
NumberLen := 11 (* default value, corresponds to 32 bit *)
|
||||||
|
END;
|
||||||
|
NEW(digits, NumberLen + 1 );
|
||||||
ASSERT(num >= 0);
|
ASSERT(num >= 0);
|
||||||
ix := 1;
|
ix := 1;
|
||||||
WHILE ix <= NumberLen DO
|
WHILE ix <= NumberLen DO
|
||||||
|
|
@ -103,11 +114,7 @@ MODULE ulmIO;
|
||||||
CHAR);
|
CHAR);
|
||||||
(* conversion of an integer decimal number to a string *)
|
(* conversion of an integer decimal number to a string *)
|
||||||
BEGIN
|
BEGIN
|
||||||
IF num = MIN(LONGINT) THEN
|
|
||||||
COPY("-2147483648", str); (* need fix, it's 32 bit only; -- noch *)
|
|
||||||
ELSE
|
|
||||||
ConvertNumber(ABS(num),len,dec,num < 0,str);
|
ConvertNumber(ABS(num),len,dec,num < 0,str);
|
||||||
END;
|
|
||||||
END ConvertInteger;
|
END ConvertInteger;
|
||||||
|
|
||||||
(* ========================= terminal ============================ *)
|
(* ========================= terminal ============================ *)
|
||||||
|
|
@ -180,13 +187,13 @@ MODULE ulmIO;
|
||||||
END InitIO;
|
END InitIO;
|
||||||
|
|
||||||
PROCEDURE WriteInt*(arg: LONGINT);
|
PROCEDURE WriteInt*(arg: LONGINT);
|
||||||
VAR field: ARRAY 12 OF CHAR;
|
VAR field: ARRAY 23 OF CHAR;
|
||||||
BEGIN
|
BEGIN (* the field size should be big enough to hold the long number. it was 12 to hold just 32 bit numbers, now it can hold 64 bit numbers; need to be more for 128bit numbers; -- noch *)
|
||||||
ConvertInteger(arg, 1, field);
|
ConvertInteger(arg, 1, field);
|
||||||
WriteString(field);
|
WriteString(field);
|
||||||
END WriteInt;
|
END WriteInt;
|
||||||
|
|
||||||
PROCEDURE ReadInt*(VAR arg: INTEGER);
|
PROCEDURE ReadInt*(VAR arg: LONGINT);
|
||||||
VAR ch: CHAR;
|
VAR ch: CHAR;
|
||||||
minus: BOOLEAN;
|
minus: BOOLEAN;
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
|
||||||
BIN
voc
BIN
voc
Binary file not shown.
BIN
vocstatic
BIN
vocstatic
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue