mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 07:32:24 +00:00
Moving to config independent types stage 1 - generate intxx types.
This commit is contained in:
parent
159f5a3d80
commit
ee8342ef0d
168 changed files with 6673 additions and 6565 deletions
|
|
@ -41,7 +41,7 @@ MODULE OPC; (* copyright (c) J. Templ 12.7.95 / 3.7.96 *)
|
|||
indentLevel: INTEGER;
|
||||
ptrinit, mainprog, ansi: BOOLEAN;
|
||||
hashtab: ARRAY 105 OF SHORTINT;
|
||||
keytab: ARRAY 36, 9 OF CHAR;
|
||||
keytab: ARRAY 50, 9 OF CHAR;
|
||||
GlbPtrs: BOOLEAN;
|
||||
BodyNameExt: ARRAY 13 OF CHAR;
|
||||
|
||||
|
|
@ -117,6 +117,8 @@ MODULE OPC; (* copyright (c) J. Templ 12.7.95 / 3.7.96 *)
|
|||
IF hashtab[h] >= 0 THEN
|
||||
IF keytab[hashtab[h]] = obj^.name THEN OPM.Write('_') END
|
||||
END
|
||||
ELSIF (mode = OPT.Typ) & (obj.typ.form = OPT.Int) THEN
|
||||
OPM.WriteString("int"); OPM.WriteInt(obj.typ.size*8)
|
||||
ELSE
|
||||
IF (mode # OPT.Typ) OR (obj^.linkadr # PredefinedType) THEN
|
||||
IF mode = OPT.TProc THEN Ident(obj^.link^.typ^.strobj)
|
||||
|
|
@ -128,10 +130,6 @@ MODULE OPC; (* copyright (c) J. Templ 12.7.95 / 3.7.96 *)
|
|||
OPM.Write('_')
|
||||
ELSIF (obj = OPT.sysptrtyp^.strobj)
|
||||
OR (obj = OPT.ainttyp^.strobj)
|
||||
OR (obj = OPT.int8typ^.strobj)
|
||||
OR (obj = OPT.int16typ^.strobj)
|
||||
OR (obj = OPT.int32typ^.strobj)
|
||||
OR (obj = OPT.int64typ^.strobj)
|
||||
OR (obj = OPT.bytetyp^.strobj) THEN
|
||||
OPM.WriteString("SYSTEM_")
|
||||
END;
|
||||
|
|
@ -1261,14 +1259,8 @@ MODULE OPC; (* copyright (c) J. Templ 12.7.95 / 3.7.96 *)
|
|||
PROCEDURE IntLiteral*(n, size: LONGINT);
|
||||
BEGIN
|
||||
IF (size > OPM.CIntSize) & (n <= OPM.CIntMax) & (n > OPM.CIntMin) THEN
|
||||
CASE size OF
|
||||
|2: OPM.WriteString("((SYSTEM_INT16)(");
|
||||
|4: OPM.WriteString("((SYSTEM_INT32)(");
|
||||
|8: OPM.WriteString("((SYSTEM_INT64)(");
|
||||
ELSE OPM.LogWStr("Unhandled case in OPC.IntLiteral, size = "); OPM.LogWNum(size,1); OPM.LogWLn;
|
||||
END;
|
||||
OPM.WriteInt(n);
|
||||
OPM.WriteString("))")
|
||||
OPM.WriteString("((int"); OPM.WriteInt(size*8); OPM.WriteString(")(");
|
||||
OPM.WriteInt(n); OPM.WriteString("))")
|
||||
ELSE
|
||||
OPM.WriteInt(n)
|
||||
END
|
||||
|
|
@ -1328,6 +1320,7 @@ MODULE OPC; (* copyright (c) J. Templ 12.7.95 / 3.7.96 *)
|
|||
|
||||
BEGIN n := 0;
|
||||
FOR i := 0 TO 104 DO hashtab[i] := -1 END ;
|
||||
Enter("adrint"); (* pseudo keyword used by voc *)
|
||||
Enter("asm");
|
||||
Enter("auto");
|
||||
Enter("break");
|
||||
|
|
@ -1341,24 +1334,33 @@ MODULE OPC; (* copyright (c) J. Templ 12.7.95 / 3.7.96 *)
|
|||
Enter("else");
|
||||
Enter("enum");
|
||||
Enter("extern");
|
||||
Enter("export"); (* pseudo keyword used by voc *)
|
||||
Enter("export"); (* pseudo keyword used by voc *)
|
||||
Enter("float");
|
||||
Enter("for");
|
||||
Enter("fortran");
|
||||
Enter("goto");
|
||||
Enter("if");
|
||||
Enter("import"); (* pseudo keyword used by voc *)
|
||||
Enter("import"); (* pseudo keyword used by voc *)
|
||||
Enter("int");
|
||||
Enter("int16"); (* pseudo keyword used by voc *)
|
||||
Enter("int32"); (* pseudo keyword used by voc *)
|
||||
Enter("int64"); (* pseudo keyword used by voc *)
|
||||
Enter("int8"); (* pseudo keyword used by voc *)
|
||||
Enter("long");
|
||||
Enter("register");
|
||||
Enter("return");
|
||||
Enter("short");
|
||||
Enter("signed");
|
||||
Enter("sizeof");
|
||||
Enter("size_t");
|
||||
Enter("static");
|
||||
Enter("struct");
|
||||
Enter("switch");
|
||||
Enter("typedef");
|
||||
Enter("uint16"); (* pseudo keyword used by voc *)
|
||||
Enter("uint32"); (* pseudo keyword used by voc *)
|
||||
Enter("uint64"); (* pseudo keyword used by voc *)
|
||||
Enter("uint8"); (* pseudo keyword used by voc *)
|
||||
Enter("union");
|
||||
Enter("unsigned");
|
||||
Enter("void");
|
||||
|
|
|
|||
|
|
@ -298,13 +298,7 @@ MODULE OPV; (* J. Templ 16.2.95 / 3.7.96
|
|||
PROCEDURE SizeCast(from, to: LONGINT);
|
||||
BEGIN
|
||||
IF (from # to) & ((from > OPM.CIntSize) OR (to # OPM.CIntSize)) THEN
|
||||
CASE to OF
|
||||
|1: OPM.WriteString("(SYSTEM_INT8)");
|
||||
|2: OPM.WriteString("(SYSTEM_INT16)");
|
||||
|4: OPM.WriteString("(SYSTEM_INT32)");
|
||||
|8: OPM.WriteString("(SYSTEM_INT64)");
|
||||
ELSE OPM.LogWStr("Unhandled case in OPC.SizeCast, to = "); OPM.LogWNum(to,1); OPM.LogWLn;
|
||||
END
|
||||
OPM.WriteString("(int"); OPM.WriteInt(to*8); OPM.WriteString(")")
|
||||
END
|
||||
END SizeCast;
|
||||
|
||||
|
|
|
|||
|
|
@ -2,19 +2,21 @@
|
|||
#define SYSTEM__h
|
||||
|
||||
#if defined(_WIN64)
|
||||
typedef long long SYSTEM_INT64;
|
||||
typedef unsigned long long SYSTEM_CARD64;
|
||||
typedef long long int64;
|
||||
typedef unsigned long long uint64;
|
||||
#else
|
||||
typedef long SYSTEM_INT64;
|
||||
typedef unsigned long SYSTEM_CARD64;
|
||||
typedef long int64;
|
||||
typedef unsigned long uint64;
|
||||
#endif
|
||||
|
||||
typedef int SYSTEM_INT32;
|
||||
typedef unsigned int SYSTEM_CARD32;
|
||||
typedef short int SYSTEM_INT16;
|
||||
typedef unsigned short int SYSTEM_CARD16;
|
||||
typedef signed char SYSTEM_INT8;
|
||||
typedef unsigned char SYSTEM_CARD8;
|
||||
typedef int int32;
|
||||
typedef unsigned int uint32;
|
||||
|
||||
typedef short int int16;
|
||||
typedef unsigned short int uint16;
|
||||
|
||||
typedef signed char int8;
|
||||
typedef unsigned char uint8;
|
||||
|
||||
#if (__SIZEOF_POINTER__ == 8) || defined(_WIN64) || defined(__LP64__)
|
||||
#if defined(_WIN64)
|
||||
|
|
@ -26,12 +28,30 @@ typedef unsigned char SYSTEM_CARD8;
|
|||
typedef unsigned int size_t;
|
||||
#endif
|
||||
|
||||
#define SYSTEM_ADRINT size_t
|
||||
#define SYSTEM_ADDRESS size_t // Temporarily for bootstrap
|
||||
#define _SIZE_T_DECLARED // For FreeBSD
|
||||
#define _SIZE_T_DEFINED_ // For OpenBSD
|
||||
|
||||
void *memcpy(void *dest, const void *source, SYSTEM_ADRINT size);
|
||||
void *memcpy(void *dest, const void *source, size_t size);
|
||||
|
||||
|
||||
// Temporary while bootstrapping:
|
||||
|
||||
#define SYSTEM_INT8 int8
|
||||
#define SYSTEM_INT16 int16
|
||||
#define SYSTEM_INT32 int32
|
||||
#define SYSTEM_INT64 int64
|
||||
#define SYSTEM_ADDRESS size_t
|
||||
|
||||
#define U_SYSTEM_INT8 uint8
|
||||
#define U_SYSTEM_INT16 uint16
|
||||
#define U_SYSTEM_INT32 uint32
|
||||
#define U_SYSTEM_INT64 uint64
|
||||
|
||||
#define U_int8 uint8
|
||||
#define U_int16 uint16
|
||||
#define U_int32 uint32
|
||||
#define U_int64 uint64
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -52,41 +72,53 @@ void *memcpy(void *dest, const void *source, SYSTEM_ADRINT size);
|
|||
|
||||
// Oberon types
|
||||
|
||||
typedef char BOOLEAN;
|
||||
typedef unsigned char SYSTEM_BYTE;
|
||||
typedef unsigned char CHAR;
|
||||
typedef signed char SHORTINT;
|
||||
typedef float REAL;
|
||||
typedef double LONGREAL;
|
||||
typedef void* SYSTEM_PTR;
|
||||
// typedef char BOOLEAN;
|
||||
// typedef unsigned char SYSTEM_BYTE;
|
||||
// typedef unsigned char CHAR;
|
||||
// typedef signed char SHORTINT;
|
||||
// typedef float REAL;
|
||||
// typedef double LONGREAL;
|
||||
// typedef void* SYSTEM_PTR;
|
||||
|
||||
typedef int8 BOOLEAN;
|
||||
typedef int8 SYSTEM_BYTE;
|
||||
typedef uint8 U_SYSTEM_BYTE;
|
||||
typedef uint8 CHAR;
|
||||
typedef uint8 U_CHAR;
|
||||
typedef int8 SHORTINT;
|
||||
typedef uint8 U_SHORTINT;
|
||||
typedef float REAL;
|
||||
typedef double LONGREAL;
|
||||
typedef void* SYSTEM_PTR;
|
||||
|
||||
typedef size_t SYSTEM_ADRINT;
|
||||
|
||||
|
||||
// For 32 bit builds, the size of LONGINT depends on a make option:
|
||||
|
||||
#if (__SIZEOF_POINTER__ == 8) || defined(LARGE) || defined(_WIN64)
|
||||
typedef int INTEGER; // INTEGER is 32 bit.
|
||||
typedef long long LONGINT; // LONGINT is 64 bit. (long long is always 64 bits, while long can be 32 bits e.g. under MSC/MingW)
|
||||
typedef unsigned int U_INTEGER;
|
||||
typedef unsigned long long U_LONGINT;
|
||||
typedef int32 INTEGER;
|
||||
typedef int64 LONGINT;
|
||||
typedef uint32 U_INTEGER;
|
||||
typedef uint64 U_LONGINT;
|
||||
#else
|
||||
typedef short int INTEGER; // INTEGER is 16 bit.
|
||||
typedef long LONGINT; // LONGINT is 32 bit.
|
||||
typedef unsigned short int U_INTEGER;
|
||||
typedef unsigned long U_LONGINT;
|
||||
typedef int16 INTEGER;
|
||||
typedef int32 LONGINT;
|
||||
typedef uint16 U_INTEGER;
|
||||
typedef uint32 U_LONGINT;
|
||||
#endif
|
||||
|
||||
// Unsigned variants are for use by shift and rotate macros.
|
||||
|
||||
typedef unsigned char U_SYSTEM_BYTE;
|
||||
typedef unsigned char U_CHAR;
|
||||
typedef unsigned char U_SHORTINT;
|
||||
|
||||
typedef U_LONGINT SET;
|
||||
typedef U_LONGINT U_SET;
|
||||
|
||||
typedef SYSTEM_CARD8 U_SYSTEM_INT8;
|
||||
typedef SYSTEM_CARD16 U_SYSTEM_INT16;
|
||||
typedef SYSTEM_CARD32 U_SYSTEM_INT32;
|
||||
typedef SYSTEM_CARD64 U_SYSTEM_INT64;
|
||||
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// ----------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
// OS Memory allocation interfaces are in PlatformXXX.Mod
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue