mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 09:52:24 +00:00
added SYSTEM.INT8, SYSTEM.INT16, SYSTEM.INT32, SYSTEM.INT64. tested only
on x86_64 yet. -- noch
Former-commit-id: 38794808ac
This commit is contained in:
parent
ebfcd163aa
commit
060ec5134d
6 changed files with 20 additions and 5 deletions
|
|
@ -12,7 +12,6 @@
|
||||||
MODULE SYSTEM; (* J. Templ, 31.5.95 *)
|
MODULE SYSTEM; (* J. Templ, 31.5.95 *)
|
||||||
|
|
||||||
IMPORT SYSTEM; (*must not import other modules*)
|
IMPORT SYSTEM; (*must not import other modules*)
|
||||||
|
|
||||||
CONST
|
CONST
|
||||||
ModNameLen = 20;
|
ModNameLen = 20;
|
||||||
CmdNameLen = 24;
|
CmdNameLen = 24;
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ uses double # as concatenation operator
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <alloca.h>
|
#include <alloca.h>
|
||||||
|
#include <stdint.h>
|
||||||
extern void *memcpy(void *dest, const void *src, unsigned long n);
|
extern void *memcpy(void *dest, const void *src, unsigned long n);
|
||||||
extern void *malloc(unsigned long size);
|
extern void *malloc(unsigned long size);
|
||||||
extern void exit(int status);
|
extern void exit(int status);
|
||||||
|
|
@ -51,7 +51,10 @@ typedef void *SYSTEM_PTR;
|
||||||
//#define *SYSTEM_PTR void
|
//#define *SYSTEM_PTR void
|
||||||
//typedef unsigned char SYSTEM_BYTE;
|
//typedef unsigned char SYSTEM_BYTE;
|
||||||
#define SYSTEM_BYTE unsigned char
|
#define SYSTEM_BYTE unsigned char
|
||||||
|
#define SYSTEM_INT8 int8_t
|
||||||
|
#define SYSTEM_INT16 int16_t
|
||||||
|
#define SYSTEM_INT32 int32_t
|
||||||
|
#define SYSTEM_INT64 int64_t
|
||||||
/* runtime system routines */
|
/* runtime system routines */
|
||||||
extern long SYSTEM_DIV();
|
extern long SYSTEM_DIV();
|
||||||
extern long SYSTEM_MOD();
|
extern long SYSTEM_MOD();
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,8 @@ MODULE OPT; (* NW, RC 6.3.89 / 23.1.92 *) (* object model 24.2.94 *)
|
||||||
typSize*: PROCEDURE(typ: Struct);
|
typSize*: PROCEDURE(typ: Struct);
|
||||||
topScope*: Object;
|
topScope*: Object;
|
||||||
undftyp*, bytetyp*, booltyp*, chartyp*, sinttyp*, inttyp*, linttyp*,
|
undftyp*, bytetyp*, booltyp*, chartyp*, sinttyp*, inttyp*, linttyp*,
|
||||||
realtyp*, lrltyp*, settyp*, stringtyp*, niltyp*, notyp*, sysptrtyp*: Struct;
|
realtyp*, lrltyp*, settyp*, stringtyp*, niltyp*, notyp*, sysptrtyp*,
|
||||||
|
int8typ*, int16typ*, int32typ*, int64typ*: Struct;
|
||||||
nofGmod*: SHORTINT; (*nof imports*)
|
nofGmod*: SHORTINT; (*nof imports*)
|
||||||
GlbMod*: ARRAY maxImps OF Object; (* ^.right = first object, ^.name = module import name (not alias) *)
|
GlbMod*: ARRAY maxImps OF Object; (* ^.right = first object, ^.name = module import name (not alias) *)
|
||||||
SelfName*: OPS.Name; (* name of module being compiled *)
|
SelfName*: OPS.Name; (* name of module being compiled *)
|
||||||
|
|
@ -1042,6 +1043,10 @@ BEGIN topScope := NIL; OpenScope(0, NIL); OPM.errpos := 0;
|
||||||
|
|
||||||
(*initialization of module SYSTEM*)
|
(*initialization of module SYSTEM*)
|
||||||
EnterTyp("BYTE", Byte, OPM.ByteSize, bytetyp);
|
EnterTyp("BYTE", Byte, OPM.ByteSize, bytetyp);
|
||||||
|
EnterTyp("INT8", Byte, 1, int8typ);
|
||||||
|
EnterTyp("INT16", SInt, 2, int16typ);
|
||||||
|
EnterTyp("INT32", Int, 4, int32typ);
|
||||||
|
EnterTyp("INT64", LInt, 8, int64typ);
|
||||||
EnterTyp("PTR", Pointer, OPM.PointerSize, sysptrtyp);
|
EnterTyp("PTR", Pointer, OPM.PointerSize, sysptrtyp);
|
||||||
EnterProc("ADR", adrfn);
|
EnterProc("ADR", adrfn);
|
||||||
EnterProc("CC", ccfn);
|
EnterProc("CC", ccfn);
|
||||||
|
|
|
||||||
|
|
@ -249,6 +249,10 @@ MODULE OPV; (* J. Templ 16.2.95 / 3.7.96
|
||||||
OPT.sinttyp^.strobj^.linkadr := PredefinedType;
|
OPT.sinttyp^.strobj^.linkadr := PredefinedType;
|
||||||
OPT.booltyp^.strobj^.linkadr := PredefinedType;
|
OPT.booltyp^.strobj^.linkadr := PredefinedType;
|
||||||
OPT.bytetyp^.strobj^.linkadr := PredefinedType;
|
OPT.bytetyp^.strobj^.linkadr := PredefinedType;
|
||||||
|
OPT.int8typ^.strobj^.linkadr := PredefinedType;
|
||||||
|
OPT.int16typ^.strobj^.linkadr := PredefinedType;
|
||||||
|
OPT.int32typ^.strobj^.linkadr := PredefinedType;
|
||||||
|
OPT.int64typ^.strobj^.linkadr := PredefinedType;
|
||||||
OPT.sysptrtyp^.strobj^.linkadr := PredefinedType;
|
OPT.sysptrtyp^.strobj^.linkadr := PredefinedType;
|
||||||
END AdrAndSize;
|
END AdrAndSize;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -80,6 +80,10 @@ VAR mname : ARRAY 256 OF CHAR; (* noch *)
|
||||||
modulesobj := "";
|
modulesobj := "";
|
||||||
OPM.OpenPar; (* gclock(); slightly faste rtranslation but may lead to opening "too many files" *)
|
OPM.OpenPar; (* gclock(); slightly faste rtranslation but may lead to opening "too many files" *)
|
||||||
OPT.bytetyp.size := OPM.ByteSize;
|
OPT.bytetyp.size := OPM.ByteSize;
|
||||||
|
OPT.int8typ.size := 1;
|
||||||
|
OPT.int16typ.size := 2;
|
||||||
|
OPT.int32typ.size := 4;
|
||||||
|
OPT.int64typ.size := 8;
|
||||||
OPT.sysptrtyp.size := OPM.PointerSize;
|
OPT.sysptrtyp.size := OPM.PointerSize;
|
||||||
OPT.chartyp.size := OPM.CharSize;
|
OPT.chartyp.size := OPM.CharSize;
|
||||||
OPT.settyp.size := OPM.SetSize;
|
OPT.settyp.size := OPM.SetSize;
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
7ce73aa13bfab8e21eda71e0e351d5d5395e6bd3
|
70f95b7f098514cbf57aeb0108e969c76033c940
|
||||||
Loading…
Add table
Add a link
Reference in a new issue