mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 06:22:25 +00:00
Add SYSTEM types INT8 through INT64. Define LINT as derived type of SYSTEM.INT64.
This commit is contained in:
parent
b6385f8b8c
commit
7df022d94e
29 changed files with 344 additions and 192 deletions
|
|
@ -211,7 +211,7 @@ void OPC_Ident (OPT_Object obj)
|
||||||
OPM_WriteStringVar((void*)OPM_modName, ((LONGINT)(32)));
|
OPM_WriteStringVar((void*)OPM_modName, ((LONGINT)(32)));
|
||||||
}
|
}
|
||||||
OPM_Write('_');
|
OPM_Write('_');
|
||||||
} else if ((obj == OPT_sysptrtyp->strobj || obj == OPT_ainttyp->strobj) || obj == OPT_bytetyp->strobj) {
|
} else if ((((((obj == OPT_sysptrtyp->strobj || obj == OPT_ainttyp->strobj) || obj == OPT_int8typ->strobj) || obj == OPT_int16typ->strobj) || obj == OPT_int32typ->strobj) || obj == OPT_int64typ->strobj) || obj == OPT_bytetyp->strobj) {
|
||||||
OPM_WriteString((CHAR*)"SYSTEM_", (LONGINT)8);
|
OPM_WriteString((CHAR*)"SYSTEM_", (LONGINT)8);
|
||||||
}
|
}
|
||||||
OPM_WriteStringVar((void*)obj->name, ((LONGINT)(256)));
|
OPM_WriteStringVar((void*)obj->name, ((LONGINT)(256)));
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,8 @@ typedef
|
||||||
|
|
||||||
export void (*OPT_typSize)(OPT_Struct);
|
export void (*OPT_typSize)(OPT_Struct);
|
||||||
export OPT_Object OPT_topScope;
|
export OPT_Object OPT_topScope;
|
||||||
export OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
export OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_int8typ, OPT_int16typ, OPT_int32typ, OPT_int64typ, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
||||||
|
static OPT_Object OPT_LIntObj;
|
||||||
export SHORTINT OPT_nofGmod;
|
export SHORTINT OPT_nofGmod;
|
||||||
export OPT_Object OPT_GlbMod[64];
|
export OPT_Object OPT_GlbMod[64];
|
||||||
export OPS_Name OPT_SelfName;
|
export OPS_Name OPT_SelfName;
|
||||||
|
|
@ -105,6 +106,7 @@ export void OPT_Close (void);
|
||||||
export void OPT_CloseScope (void);
|
export void OPT_CloseScope (void);
|
||||||
static void OPT_DebugStruct (OPT_Struct btyp);
|
static void OPT_DebugStruct (OPT_Struct btyp);
|
||||||
static void OPT_EnterBoolConst (OPS_Name name, LONGINT value);
|
static void OPT_EnterBoolConst (OPS_Name name, LONGINT value);
|
||||||
|
static void OPT_EnterDerivedType (OPS_Name name, OPT_Struct typ, OPT_Object *obj);
|
||||||
static void OPT_EnterProc (OPS_Name name, INTEGER num);
|
static void OPT_EnterProc (OPS_Name name, INTEGER num);
|
||||||
static void OPT_EnterTyp (OPS_Name name, SHORTINT form, INTEGER size, OPT_Struct *res);
|
static void OPT_EnterTyp (OPS_Name name, SHORTINT form, INTEGER size, OPT_Struct *res);
|
||||||
export void OPT_Export (BOOLEAN *ext, BOOLEAN *new);
|
export void OPT_Export (BOOLEAN *ext, BOOLEAN *new);
|
||||||
|
|
@ -465,21 +467,21 @@ void OPT_IdFPrint (OPT_Struct typ)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct FPrintStr__12 {
|
static struct FPrintStr__13 {
|
||||||
LONGINT *pbfp, *pvfp;
|
LONGINT *pbfp, *pvfp;
|
||||||
struct FPrintStr__12 *lnk;
|
struct FPrintStr__13 *lnk;
|
||||||
} *FPrintStr__12_s;
|
} *FPrintStr__13_s;
|
||||||
|
|
||||||
static void FPrintFlds__13 (OPT_Object fld, LONGINT adr, BOOLEAN visible);
|
static void FPrintFlds__14 (OPT_Object fld, LONGINT adr, BOOLEAN visible);
|
||||||
static void FPrintHdFld__15 (OPT_Struct typ, OPT_Object fld, LONGINT adr);
|
static void FPrintHdFld__16 (OPT_Struct typ, OPT_Object fld, LONGINT adr);
|
||||||
static void FPrintTProcs__17 (OPT_Object obj);
|
static void FPrintTProcs__18 (OPT_Object obj);
|
||||||
|
|
||||||
static void FPrintHdFld__15 (OPT_Struct typ, OPT_Object fld, LONGINT adr)
|
static void FPrintHdFld__16 (OPT_Struct typ, OPT_Object fld, LONGINT adr)
|
||||||
{
|
{
|
||||||
LONGINT i, j, n;
|
LONGINT i, j, n;
|
||||||
OPT_Struct btyp = NIL;
|
OPT_Struct btyp = NIL;
|
||||||
if (typ->comp == 4) {
|
if (typ->comp == 4) {
|
||||||
FPrintFlds__13(typ->link, adr, 0);
|
FPrintFlds__14(typ->link, adr, 0);
|
||||||
} else if (typ->comp == 2) {
|
} else if (typ->comp == 2) {
|
||||||
btyp = typ->BaseTyp;
|
btyp = typ->BaseTyp;
|
||||||
n = typ->n;
|
n = typ->n;
|
||||||
|
|
@ -489,53 +491,53 @@ static void FPrintHdFld__15 (OPT_Struct typ, OPT_Object fld, LONGINT adr)
|
||||||
}
|
}
|
||||||
if (btyp->form == 13 || btyp->comp == 4) {
|
if (btyp->form == 13 || btyp->comp == 4) {
|
||||||
j = OPT_nofhdfld;
|
j = OPT_nofhdfld;
|
||||||
FPrintHdFld__15(btyp, fld, adr);
|
FPrintHdFld__16(btyp, fld, adr);
|
||||||
if (j != OPT_nofhdfld) {
|
if (j != OPT_nofhdfld) {
|
||||||
i = 1;
|
i = 1;
|
||||||
while ((i < n && OPT_nofhdfld <= 2048)) {
|
while ((i < n && OPT_nofhdfld <= 2048)) {
|
||||||
adr += btyp->size;
|
adr += btyp->size;
|
||||||
FPrintHdFld__15(btyp, fld, adr);
|
FPrintHdFld__16(btyp, fld, adr);
|
||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (typ->form == 13 || __STRCMP(fld->name, "@ptr") == 0) {
|
} else if (typ->form == 13 || __STRCMP(fld->name, "@ptr") == 0) {
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pvfp, ((LONGINT)(13)));
|
OPM_FPrint(&*FPrintStr__13_s->pvfp, ((LONGINT)(13)));
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pvfp, adr);
|
OPM_FPrint(&*FPrintStr__13_s->pvfp, adr);
|
||||||
OPT_nofhdfld += 1;
|
OPT_nofhdfld += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FPrintFlds__13 (OPT_Object fld, LONGINT adr, BOOLEAN visible)
|
static void FPrintFlds__14 (OPT_Object fld, LONGINT adr, BOOLEAN visible)
|
||||||
{
|
{
|
||||||
while ((fld != NIL && fld->mode == 4)) {
|
while ((fld != NIL && fld->mode == 4)) {
|
||||||
if ((fld->vis != 0 && visible)) {
|
if ((fld->vis != 0 && visible)) {
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, fld->vis);
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, fld->vis);
|
||||||
OPT_FPrintName(&*FPrintStr__12_s->pbfp, (void*)fld->name, ((LONGINT)(256)));
|
OPT_FPrintName(&*FPrintStr__13_s->pbfp, (void*)fld->name, ((LONGINT)(256)));
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, fld->adr);
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, fld->adr);
|
||||||
OPT_FPrintStr(fld->typ);
|
OPT_FPrintStr(fld->typ);
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, fld->typ->pbfp);
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, fld->typ->pbfp);
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pvfp, fld->typ->pvfp);
|
OPM_FPrint(&*FPrintStr__13_s->pvfp, fld->typ->pvfp);
|
||||||
} else {
|
} else {
|
||||||
FPrintHdFld__15(fld->typ, fld, fld->adr + adr);
|
FPrintHdFld__16(fld->typ, fld, fld->adr + adr);
|
||||||
}
|
}
|
||||||
fld = fld->link;
|
fld = fld->link;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FPrintTProcs__17 (OPT_Object obj)
|
static void FPrintTProcs__18 (OPT_Object obj)
|
||||||
{
|
{
|
||||||
if (obj != NIL) {
|
if (obj != NIL) {
|
||||||
FPrintTProcs__17(obj->left);
|
FPrintTProcs__18(obj->left);
|
||||||
if (obj->mode == 13) {
|
if (obj->mode == 13) {
|
||||||
if (obj->vis != 0) {
|
if (obj->vis != 0) {
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, ((LONGINT)(13)));
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, ((LONGINT)(13)));
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, __ASHR(obj->adr, 16));
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, __ASHR(obj->adr, 16));
|
||||||
OPT_FPrintSign(&*FPrintStr__12_s->pbfp, obj->typ, obj->link);
|
OPT_FPrintSign(&*FPrintStr__13_s->pbfp, obj->typ, obj->link);
|
||||||
OPT_FPrintName(&*FPrintStr__12_s->pbfp, (void*)obj->name, ((LONGINT)(256)));
|
OPT_FPrintName(&*FPrintStr__13_s->pbfp, (void*)obj->name, ((LONGINT)(256)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FPrintTProcs__17(obj->right);
|
FPrintTProcs__18(obj->right);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -545,11 +547,11 @@ void OPT_FPrintStr (OPT_Struct typ)
|
||||||
OPT_Struct btyp = NIL;
|
OPT_Struct btyp = NIL;
|
||||||
OPT_Object strobj = NIL, bstrobj = NIL;
|
OPT_Object strobj = NIL, bstrobj = NIL;
|
||||||
LONGINT pbfp, pvfp;
|
LONGINT pbfp, pvfp;
|
||||||
struct FPrintStr__12 _s;
|
struct FPrintStr__13 _s;
|
||||||
_s.pbfp = &pbfp;
|
_s.pbfp = &pbfp;
|
||||||
_s.pvfp = &pvfp;
|
_s.pvfp = &pvfp;
|
||||||
_s.lnk = FPrintStr__12_s;
|
_s.lnk = FPrintStr__13_s;
|
||||||
FPrintStr__12_s = &_s;
|
FPrintStr__13_s = &_s;
|
||||||
if (!typ->fpdone) {
|
if (!typ->fpdone) {
|
||||||
OPT_IdFPrint(typ);
|
OPT_IdFPrint(typ);
|
||||||
pbfp = typ->idfp;
|
pbfp = typ->idfp;
|
||||||
|
|
@ -586,11 +588,11 @@ void OPT_FPrintStr (OPT_Struct typ)
|
||||||
OPM_FPrint(&pvfp, typ->align);
|
OPM_FPrint(&pvfp, typ->align);
|
||||||
OPM_FPrint(&pvfp, typ->n);
|
OPM_FPrint(&pvfp, typ->n);
|
||||||
OPT_nofhdfld = 0;
|
OPT_nofhdfld = 0;
|
||||||
FPrintFlds__13(typ->link, ((LONGINT)(0)), 1);
|
FPrintFlds__14(typ->link, ((LONGINT)(0)), 1);
|
||||||
if (OPT_nofhdfld > 2048) {
|
if (OPT_nofhdfld > 2048) {
|
||||||
OPM_Mark(225, typ->txtpos);
|
OPM_Mark(225, typ->txtpos);
|
||||||
}
|
}
|
||||||
FPrintTProcs__17(typ->link);
|
FPrintTProcs__18(typ->link);
|
||||||
OPM_FPrint(&pvfp, pbfp);
|
OPM_FPrint(&pvfp, pbfp);
|
||||||
strobj = typ->strobj;
|
strobj = typ->strobj;
|
||||||
if (strobj == NIL || strobj->name[0] == 0x00) {
|
if (strobj == NIL || strobj->name[0] == 0x00) {
|
||||||
|
|
@ -600,7 +602,7 @@ void OPT_FPrintStr (OPT_Struct typ)
|
||||||
typ->pbfp = pbfp;
|
typ->pbfp = pbfp;
|
||||||
typ->pvfp = pvfp;
|
typ->pvfp = pvfp;
|
||||||
}
|
}
|
||||||
FPrintStr__12_s = _s.lnk;
|
FPrintStr__13_s = _s.lnk;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OPT_FPrintObj (OPT_Object obj)
|
void OPT_FPrintObj (OPT_Object obj)
|
||||||
|
|
@ -1697,6 +1699,15 @@ static void OPT_EnterTyp (OPS_Name name, SHORTINT form, INTEGER size, OPT_Struct
|
||||||
*res = typ;
|
*res = typ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void OPT_EnterDerivedType (OPS_Name name, OPT_Struct typ, OPT_Object *obj)
|
||||||
|
{
|
||||||
|
OPS_Name name__copy;
|
||||||
|
__DUPARR(name, OPS_Name);
|
||||||
|
OPT_Insert(name, &*obj);
|
||||||
|
(*obj)->mode = 5;
|
||||||
|
(*obj)->typ = typ;
|
||||||
|
}
|
||||||
|
|
||||||
static void OPT_EnterProc (OPS_Name name, INTEGER num)
|
static void OPT_EnterProc (OPS_Name name, INTEGER num)
|
||||||
{
|
{
|
||||||
OPT_Object obj = NIL;
|
OPT_Object obj = NIL;
|
||||||
|
|
@ -1719,6 +1730,10 @@ static void EnumPtrs(void (*P)(void*))
|
||||||
P(OPT_inttyp);
|
P(OPT_inttyp);
|
||||||
P(OPT_linttyp);
|
P(OPT_linttyp);
|
||||||
P(OPT_ainttyp);
|
P(OPT_ainttyp);
|
||||||
|
P(OPT_int8typ);
|
||||||
|
P(OPT_int16typ);
|
||||||
|
P(OPT_int32typ);
|
||||||
|
P(OPT_int64typ);
|
||||||
P(OPT_realtyp);
|
P(OPT_realtyp);
|
||||||
P(OPT_lrltyp);
|
P(OPT_lrltyp);
|
||||||
P(OPT_settyp);
|
P(OPT_settyp);
|
||||||
|
|
@ -1726,6 +1741,7 @@ static void EnumPtrs(void (*P)(void*))
|
||||||
P(OPT_niltyp);
|
P(OPT_niltyp);
|
||||||
P(OPT_notyp);
|
P(OPT_notyp);
|
||||||
P(OPT_sysptrtyp);
|
P(OPT_sysptrtyp);
|
||||||
|
P(OPT_LIntObj);
|
||||||
__ENUMP(OPT_GlbMod, 64, P);
|
__ENUMP(OPT_GlbMod, 64, P);
|
||||||
P(OPT_universe);
|
P(OPT_universe);
|
||||||
P(OPT_syslink);
|
P(OPT_syslink);
|
||||||
|
|
@ -1789,13 +1805,17 @@ export void *OPT__init(void)
|
||||||
OPT_OpenScope(0, NIL);
|
OPT_OpenScope(0, NIL);
|
||||||
OPM_errpos = 0;
|
OPM_errpos = 0;
|
||||||
OPT_InitStruct(&OPT_undftyp, 0);
|
OPT_InitStruct(&OPT_undftyp, 0);
|
||||||
|
OPT_undftyp->BaseTyp = OPT_undftyp;
|
||||||
OPT_InitStruct(&OPT_notyp, 12);
|
OPT_InitStruct(&OPT_notyp, 12);
|
||||||
OPT_InitStruct(&OPT_stringtyp, 10);
|
OPT_InitStruct(&OPT_stringtyp, 10);
|
||||||
OPT_InitStruct(&OPT_niltyp, 11);
|
OPT_InitStruct(&OPT_niltyp, 11);
|
||||||
OPT_undftyp->BaseTyp = OPT_undftyp;
|
|
||||||
OPT_EnterTyp((CHAR*)"BYTE", 1, OPM_ByteSize, &OPT_bytetyp);
|
OPT_EnterTyp((CHAR*)"BYTE", 1, OPM_ByteSize, &OPT_bytetyp);
|
||||||
OPT_EnterTyp((CHAR*)"PTR", 13, OPM_PointerSize, &OPT_sysptrtyp);
|
OPT_EnterTyp((CHAR*)"PTR", 13, OPM_PointerSize, &OPT_sysptrtyp);
|
||||||
OPT_EnterTyp((CHAR*)"ADRINT", 5, OPM_LIntSize, &OPT_ainttyp);
|
OPT_EnterTyp((CHAR*)"ADRINT", 5, OPM_LIntSize, &OPT_ainttyp);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT8", 5, 1, &OPT_int8typ);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT16", 5, 2, &OPT_int16typ);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT32", 5, 4, &OPT_int32typ);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT64", 5, 8, &OPT_int64typ);
|
||||||
OPT_EnterProc((CHAR*)"ADR", 20);
|
OPT_EnterProc((CHAR*)"ADR", 20);
|
||||||
OPT_EnterProc((CHAR*)"CC", 21);
|
OPT_EnterProc((CHAR*)"CC", 21);
|
||||||
OPT_EnterProc((CHAR*)"LSH", 22);
|
OPT_EnterProc((CHAR*)"LSH", 22);
|
||||||
|
|
@ -1819,6 +1839,7 @@ export void *OPT__init(void)
|
||||||
OPT_EnterTyp((CHAR*)"LONGINT", 6, OPM_LIntSize, &OPT_linttyp);
|
OPT_EnterTyp((CHAR*)"LONGINT", 6, OPM_LIntSize, &OPT_linttyp);
|
||||||
OPT_EnterTyp((CHAR*)"LONGREAL", 8, OPM_LRealSize, &OPT_lrltyp);
|
OPT_EnterTyp((CHAR*)"LONGREAL", 8, OPM_LRealSize, &OPT_lrltyp);
|
||||||
OPT_EnterTyp((CHAR*)"SHORTINT", 4, OPM_SIntSize, &OPT_sinttyp);
|
OPT_EnterTyp((CHAR*)"SHORTINT", 4, OPM_SIntSize, &OPT_sinttyp);
|
||||||
|
OPT_EnterDerivedType((CHAR*)"LINT", OPT_int64typ, &OPT_LIntObj);
|
||||||
OPT_EnterBoolConst((CHAR*)"FALSE", ((LONGINT)(0)));
|
OPT_EnterBoolConst((CHAR*)"FALSE", ((LONGINT)(0)));
|
||||||
OPT_EnterBoolConst((CHAR*)"TRUE", ((LONGINT)(1)));
|
OPT_EnterBoolConst((CHAR*)"TRUE", ((LONGINT)(1)));
|
||||||
OPT_EnterProc((CHAR*)"HALT", 0);
|
OPT_EnterProc((CHAR*)"HALT", 0);
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ typedef
|
||||||
|
|
||||||
import void (*OPT_typSize)(OPT_Struct);
|
import void (*OPT_typSize)(OPT_Struct);
|
||||||
import OPT_Object OPT_topScope;
|
import OPT_Object OPT_topScope;
|
||||||
import OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
import OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_int8typ, OPT_int16typ, OPT_int32typ, OPT_int64typ, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
||||||
import SHORTINT OPT_nofGmod;
|
import SHORTINT OPT_nofGmod;
|
||||||
import OPT_Object OPT_GlbMod[64];
|
import OPT_Object OPT_GlbMod[64];
|
||||||
import OPS_Name OPT_SelfName;
|
import OPS_Name OPT_SelfName;
|
||||||
|
|
|
||||||
|
|
@ -285,6 +285,10 @@ void OPV_AdrAndSize (OPT_Object topScope)
|
||||||
OPT_inttyp->strobj->linkadr = 2;
|
OPT_inttyp->strobj->linkadr = 2;
|
||||||
OPT_linttyp->strobj->linkadr = 2;
|
OPT_linttyp->strobj->linkadr = 2;
|
||||||
OPT_ainttyp->strobj->linkadr = 2;
|
OPT_ainttyp->strobj->linkadr = 2;
|
||||||
|
OPT_int8typ->strobj->linkadr = 2;
|
||||||
|
OPT_int16typ->strobj->linkadr = 2;
|
||||||
|
OPT_int32typ->strobj->linkadr = 2;
|
||||||
|
OPT_int64typ->strobj->linkadr = 2;
|
||||||
OPT_lrltyp->strobj->linkadr = 2;
|
OPT_lrltyp->strobj->linkadr = 2;
|
||||||
OPT_sinttyp->strobj->linkadr = 2;
|
OPT_sinttyp->strobj->linkadr = 2;
|
||||||
OPT_booltyp->strobj->linkadr = 2;
|
OPT_booltyp->strobj->linkadr = 2;
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@ static void Vishap_PropagateElementaryTypeSizes (void)
|
||||||
OPT_realtyp->size = OPM_RealSize;
|
OPT_realtyp->size = OPM_RealSize;
|
||||||
OPT_inttyp->size = OPM_IntSize;
|
OPT_inttyp->size = OPM_IntSize;
|
||||||
OPT_linttyp->size = OPM_LIntSize;
|
OPT_linttyp->size = OPM_LIntSize;
|
||||||
OPT_ainttyp->size = OPM_LIntSize;
|
OPT_ainttyp->size = OPM_PointerSize;
|
||||||
OPT_lrltyp->size = OPM_LRealSize;
|
OPT_lrltyp->size = OPM_LRealSize;
|
||||||
OPT_sinttyp->size = OPM_SIntSize;
|
OPT_sinttyp->size = OPM_SIntSize;
|
||||||
OPT_booltyp->size = OPM_BoolSize;
|
OPT_booltyp->size = OPM_BoolSize;
|
||||||
|
|
|
||||||
|
|
@ -211,7 +211,7 @@ void OPC_Ident (OPT_Object obj)
|
||||||
OPM_WriteStringVar((void*)OPM_modName, ((LONGINT)(32)));
|
OPM_WriteStringVar((void*)OPM_modName, ((LONGINT)(32)));
|
||||||
}
|
}
|
||||||
OPM_Write('_');
|
OPM_Write('_');
|
||||||
} else if ((obj == OPT_sysptrtyp->strobj || obj == OPT_ainttyp->strobj) || obj == OPT_bytetyp->strobj) {
|
} else if ((((((obj == OPT_sysptrtyp->strobj || obj == OPT_ainttyp->strobj) || obj == OPT_int8typ->strobj) || obj == OPT_int16typ->strobj) || obj == OPT_int32typ->strobj) || obj == OPT_int64typ->strobj) || obj == OPT_bytetyp->strobj) {
|
||||||
OPM_WriteString((CHAR*)"SYSTEM_", (LONGINT)8);
|
OPM_WriteString((CHAR*)"SYSTEM_", (LONGINT)8);
|
||||||
}
|
}
|
||||||
OPM_WriteStringVar((void*)obj->name, ((LONGINT)(256)));
|
OPM_WriteStringVar((void*)obj->name, ((LONGINT)(256)));
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,8 @@ typedef
|
||||||
|
|
||||||
export void (*OPT_typSize)(OPT_Struct);
|
export void (*OPT_typSize)(OPT_Struct);
|
||||||
export OPT_Object OPT_topScope;
|
export OPT_Object OPT_topScope;
|
||||||
export OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
export OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_int8typ, OPT_int16typ, OPT_int32typ, OPT_int64typ, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
||||||
|
static OPT_Object OPT_LIntObj;
|
||||||
export SHORTINT OPT_nofGmod;
|
export SHORTINT OPT_nofGmod;
|
||||||
export OPT_Object OPT_GlbMod[64];
|
export OPT_Object OPT_GlbMod[64];
|
||||||
export OPS_Name OPT_SelfName;
|
export OPS_Name OPT_SelfName;
|
||||||
|
|
@ -105,6 +106,7 @@ export void OPT_Close (void);
|
||||||
export void OPT_CloseScope (void);
|
export void OPT_CloseScope (void);
|
||||||
static void OPT_DebugStruct (OPT_Struct btyp);
|
static void OPT_DebugStruct (OPT_Struct btyp);
|
||||||
static void OPT_EnterBoolConst (OPS_Name name, LONGINT value);
|
static void OPT_EnterBoolConst (OPS_Name name, LONGINT value);
|
||||||
|
static void OPT_EnterDerivedType (OPS_Name name, OPT_Struct typ, OPT_Object *obj);
|
||||||
static void OPT_EnterProc (OPS_Name name, INTEGER num);
|
static void OPT_EnterProc (OPS_Name name, INTEGER num);
|
||||||
static void OPT_EnterTyp (OPS_Name name, SHORTINT form, INTEGER size, OPT_Struct *res);
|
static void OPT_EnterTyp (OPS_Name name, SHORTINT form, INTEGER size, OPT_Struct *res);
|
||||||
export void OPT_Export (BOOLEAN *ext, BOOLEAN *new);
|
export void OPT_Export (BOOLEAN *ext, BOOLEAN *new);
|
||||||
|
|
@ -465,21 +467,21 @@ void OPT_IdFPrint (OPT_Struct typ)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct FPrintStr__12 {
|
static struct FPrintStr__13 {
|
||||||
LONGINT *pbfp, *pvfp;
|
LONGINT *pbfp, *pvfp;
|
||||||
struct FPrintStr__12 *lnk;
|
struct FPrintStr__13 *lnk;
|
||||||
} *FPrintStr__12_s;
|
} *FPrintStr__13_s;
|
||||||
|
|
||||||
static void FPrintFlds__13 (OPT_Object fld, LONGINT adr, BOOLEAN visible);
|
static void FPrintFlds__14 (OPT_Object fld, LONGINT adr, BOOLEAN visible);
|
||||||
static void FPrintHdFld__15 (OPT_Struct typ, OPT_Object fld, LONGINT adr);
|
static void FPrintHdFld__16 (OPT_Struct typ, OPT_Object fld, LONGINT adr);
|
||||||
static void FPrintTProcs__17 (OPT_Object obj);
|
static void FPrintTProcs__18 (OPT_Object obj);
|
||||||
|
|
||||||
static void FPrintHdFld__15 (OPT_Struct typ, OPT_Object fld, LONGINT adr)
|
static void FPrintHdFld__16 (OPT_Struct typ, OPT_Object fld, LONGINT adr)
|
||||||
{
|
{
|
||||||
LONGINT i, j, n;
|
LONGINT i, j, n;
|
||||||
OPT_Struct btyp = NIL;
|
OPT_Struct btyp = NIL;
|
||||||
if (typ->comp == 4) {
|
if (typ->comp == 4) {
|
||||||
FPrintFlds__13(typ->link, adr, 0);
|
FPrintFlds__14(typ->link, adr, 0);
|
||||||
} else if (typ->comp == 2) {
|
} else if (typ->comp == 2) {
|
||||||
btyp = typ->BaseTyp;
|
btyp = typ->BaseTyp;
|
||||||
n = typ->n;
|
n = typ->n;
|
||||||
|
|
@ -489,53 +491,53 @@ static void FPrintHdFld__15 (OPT_Struct typ, OPT_Object fld, LONGINT adr)
|
||||||
}
|
}
|
||||||
if (btyp->form == 13 || btyp->comp == 4) {
|
if (btyp->form == 13 || btyp->comp == 4) {
|
||||||
j = OPT_nofhdfld;
|
j = OPT_nofhdfld;
|
||||||
FPrintHdFld__15(btyp, fld, adr);
|
FPrintHdFld__16(btyp, fld, adr);
|
||||||
if (j != OPT_nofhdfld) {
|
if (j != OPT_nofhdfld) {
|
||||||
i = 1;
|
i = 1;
|
||||||
while ((i < n && OPT_nofhdfld <= 2048)) {
|
while ((i < n && OPT_nofhdfld <= 2048)) {
|
||||||
adr += btyp->size;
|
adr += btyp->size;
|
||||||
FPrintHdFld__15(btyp, fld, adr);
|
FPrintHdFld__16(btyp, fld, adr);
|
||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (typ->form == 13 || __STRCMP(fld->name, "@ptr") == 0) {
|
} else if (typ->form == 13 || __STRCMP(fld->name, "@ptr") == 0) {
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pvfp, ((LONGINT)(13)));
|
OPM_FPrint(&*FPrintStr__13_s->pvfp, ((LONGINT)(13)));
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pvfp, adr);
|
OPM_FPrint(&*FPrintStr__13_s->pvfp, adr);
|
||||||
OPT_nofhdfld += 1;
|
OPT_nofhdfld += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FPrintFlds__13 (OPT_Object fld, LONGINT adr, BOOLEAN visible)
|
static void FPrintFlds__14 (OPT_Object fld, LONGINT adr, BOOLEAN visible)
|
||||||
{
|
{
|
||||||
while ((fld != NIL && fld->mode == 4)) {
|
while ((fld != NIL && fld->mode == 4)) {
|
||||||
if ((fld->vis != 0 && visible)) {
|
if ((fld->vis != 0 && visible)) {
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, fld->vis);
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, fld->vis);
|
||||||
OPT_FPrintName(&*FPrintStr__12_s->pbfp, (void*)fld->name, ((LONGINT)(256)));
|
OPT_FPrintName(&*FPrintStr__13_s->pbfp, (void*)fld->name, ((LONGINT)(256)));
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, fld->adr);
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, fld->adr);
|
||||||
OPT_FPrintStr(fld->typ);
|
OPT_FPrintStr(fld->typ);
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, fld->typ->pbfp);
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, fld->typ->pbfp);
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pvfp, fld->typ->pvfp);
|
OPM_FPrint(&*FPrintStr__13_s->pvfp, fld->typ->pvfp);
|
||||||
} else {
|
} else {
|
||||||
FPrintHdFld__15(fld->typ, fld, fld->adr + adr);
|
FPrintHdFld__16(fld->typ, fld, fld->adr + adr);
|
||||||
}
|
}
|
||||||
fld = fld->link;
|
fld = fld->link;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FPrintTProcs__17 (OPT_Object obj)
|
static void FPrintTProcs__18 (OPT_Object obj)
|
||||||
{
|
{
|
||||||
if (obj != NIL) {
|
if (obj != NIL) {
|
||||||
FPrintTProcs__17(obj->left);
|
FPrintTProcs__18(obj->left);
|
||||||
if (obj->mode == 13) {
|
if (obj->mode == 13) {
|
||||||
if (obj->vis != 0) {
|
if (obj->vis != 0) {
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, ((LONGINT)(13)));
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, ((LONGINT)(13)));
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, __ASHR(obj->adr, 16));
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, __ASHR(obj->adr, 16));
|
||||||
OPT_FPrintSign(&*FPrintStr__12_s->pbfp, obj->typ, obj->link);
|
OPT_FPrintSign(&*FPrintStr__13_s->pbfp, obj->typ, obj->link);
|
||||||
OPT_FPrintName(&*FPrintStr__12_s->pbfp, (void*)obj->name, ((LONGINT)(256)));
|
OPT_FPrintName(&*FPrintStr__13_s->pbfp, (void*)obj->name, ((LONGINT)(256)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FPrintTProcs__17(obj->right);
|
FPrintTProcs__18(obj->right);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -545,11 +547,11 @@ void OPT_FPrintStr (OPT_Struct typ)
|
||||||
OPT_Struct btyp = NIL;
|
OPT_Struct btyp = NIL;
|
||||||
OPT_Object strobj = NIL, bstrobj = NIL;
|
OPT_Object strobj = NIL, bstrobj = NIL;
|
||||||
LONGINT pbfp, pvfp;
|
LONGINT pbfp, pvfp;
|
||||||
struct FPrintStr__12 _s;
|
struct FPrintStr__13 _s;
|
||||||
_s.pbfp = &pbfp;
|
_s.pbfp = &pbfp;
|
||||||
_s.pvfp = &pvfp;
|
_s.pvfp = &pvfp;
|
||||||
_s.lnk = FPrintStr__12_s;
|
_s.lnk = FPrintStr__13_s;
|
||||||
FPrintStr__12_s = &_s;
|
FPrintStr__13_s = &_s;
|
||||||
if (!typ->fpdone) {
|
if (!typ->fpdone) {
|
||||||
OPT_IdFPrint(typ);
|
OPT_IdFPrint(typ);
|
||||||
pbfp = typ->idfp;
|
pbfp = typ->idfp;
|
||||||
|
|
@ -586,11 +588,11 @@ void OPT_FPrintStr (OPT_Struct typ)
|
||||||
OPM_FPrint(&pvfp, typ->align);
|
OPM_FPrint(&pvfp, typ->align);
|
||||||
OPM_FPrint(&pvfp, typ->n);
|
OPM_FPrint(&pvfp, typ->n);
|
||||||
OPT_nofhdfld = 0;
|
OPT_nofhdfld = 0;
|
||||||
FPrintFlds__13(typ->link, ((LONGINT)(0)), 1);
|
FPrintFlds__14(typ->link, ((LONGINT)(0)), 1);
|
||||||
if (OPT_nofhdfld > 2048) {
|
if (OPT_nofhdfld > 2048) {
|
||||||
OPM_Mark(225, typ->txtpos);
|
OPM_Mark(225, typ->txtpos);
|
||||||
}
|
}
|
||||||
FPrintTProcs__17(typ->link);
|
FPrintTProcs__18(typ->link);
|
||||||
OPM_FPrint(&pvfp, pbfp);
|
OPM_FPrint(&pvfp, pbfp);
|
||||||
strobj = typ->strobj;
|
strobj = typ->strobj;
|
||||||
if (strobj == NIL || strobj->name[0] == 0x00) {
|
if (strobj == NIL || strobj->name[0] == 0x00) {
|
||||||
|
|
@ -600,7 +602,7 @@ void OPT_FPrintStr (OPT_Struct typ)
|
||||||
typ->pbfp = pbfp;
|
typ->pbfp = pbfp;
|
||||||
typ->pvfp = pvfp;
|
typ->pvfp = pvfp;
|
||||||
}
|
}
|
||||||
FPrintStr__12_s = _s.lnk;
|
FPrintStr__13_s = _s.lnk;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OPT_FPrintObj (OPT_Object obj)
|
void OPT_FPrintObj (OPT_Object obj)
|
||||||
|
|
@ -1697,6 +1699,15 @@ static void OPT_EnterTyp (OPS_Name name, SHORTINT form, INTEGER size, OPT_Struct
|
||||||
*res = typ;
|
*res = typ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void OPT_EnterDerivedType (OPS_Name name, OPT_Struct typ, OPT_Object *obj)
|
||||||
|
{
|
||||||
|
OPS_Name name__copy;
|
||||||
|
__DUPARR(name, OPS_Name);
|
||||||
|
OPT_Insert(name, &*obj);
|
||||||
|
(*obj)->mode = 5;
|
||||||
|
(*obj)->typ = typ;
|
||||||
|
}
|
||||||
|
|
||||||
static void OPT_EnterProc (OPS_Name name, INTEGER num)
|
static void OPT_EnterProc (OPS_Name name, INTEGER num)
|
||||||
{
|
{
|
||||||
OPT_Object obj = NIL;
|
OPT_Object obj = NIL;
|
||||||
|
|
@ -1719,6 +1730,10 @@ static void EnumPtrs(void (*P)(void*))
|
||||||
P(OPT_inttyp);
|
P(OPT_inttyp);
|
||||||
P(OPT_linttyp);
|
P(OPT_linttyp);
|
||||||
P(OPT_ainttyp);
|
P(OPT_ainttyp);
|
||||||
|
P(OPT_int8typ);
|
||||||
|
P(OPT_int16typ);
|
||||||
|
P(OPT_int32typ);
|
||||||
|
P(OPT_int64typ);
|
||||||
P(OPT_realtyp);
|
P(OPT_realtyp);
|
||||||
P(OPT_lrltyp);
|
P(OPT_lrltyp);
|
||||||
P(OPT_settyp);
|
P(OPT_settyp);
|
||||||
|
|
@ -1726,6 +1741,7 @@ static void EnumPtrs(void (*P)(void*))
|
||||||
P(OPT_niltyp);
|
P(OPT_niltyp);
|
||||||
P(OPT_notyp);
|
P(OPT_notyp);
|
||||||
P(OPT_sysptrtyp);
|
P(OPT_sysptrtyp);
|
||||||
|
P(OPT_LIntObj);
|
||||||
__ENUMP(OPT_GlbMod, 64, P);
|
__ENUMP(OPT_GlbMod, 64, P);
|
||||||
P(OPT_universe);
|
P(OPT_universe);
|
||||||
P(OPT_syslink);
|
P(OPT_syslink);
|
||||||
|
|
@ -1789,13 +1805,17 @@ export void *OPT__init(void)
|
||||||
OPT_OpenScope(0, NIL);
|
OPT_OpenScope(0, NIL);
|
||||||
OPM_errpos = 0;
|
OPM_errpos = 0;
|
||||||
OPT_InitStruct(&OPT_undftyp, 0);
|
OPT_InitStruct(&OPT_undftyp, 0);
|
||||||
|
OPT_undftyp->BaseTyp = OPT_undftyp;
|
||||||
OPT_InitStruct(&OPT_notyp, 12);
|
OPT_InitStruct(&OPT_notyp, 12);
|
||||||
OPT_InitStruct(&OPT_stringtyp, 10);
|
OPT_InitStruct(&OPT_stringtyp, 10);
|
||||||
OPT_InitStruct(&OPT_niltyp, 11);
|
OPT_InitStruct(&OPT_niltyp, 11);
|
||||||
OPT_undftyp->BaseTyp = OPT_undftyp;
|
|
||||||
OPT_EnterTyp((CHAR*)"BYTE", 1, OPM_ByteSize, &OPT_bytetyp);
|
OPT_EnterTyp((CHAR*)"BYTE", 1, OPM_ByteSize, &OPT_bytetyp);
|
||||||
OPT_EnterTyp((CHAR*)"PTR", 13, OPM_PointerSize, &OPT_sysptrtyp);
|
OPT_EnterTyp((CHAR*)"PTR", 13, OPM_PointerSize, &OPT_sysptrtyp);
|
||||||
OPT_EnterTyp((CHAR*)"ADRINT", 5, OPM_LIntSize, &OPT_ainttyp);
|
OPT_EnterTyp((CHAR*)"ADRINT", 5, OPM_LIntSize, &OPT_ainttyp);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT8", 5, 1, &OPT_int8typ);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT16", 5, 2, &OPT_int16typ);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT32", 5, 4, &OPT_int32typ);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT64", 5, 8, &OPT_int64typ);
|
||||||
OPT_EnterProc((CHAR*)"ADR", 20);
|
OPT_EnterProc((CHAR*)"ADR", 20);
|
||||||
OPT_EnterProc((CHAR*)"CC", 21);
|
OPT_EnterProc((CHAR*)"CC", 21);
|
||||||
OPT_EnterProc((CHAR*)"LSH", 22);
|
OPT_EnterProc((CHAR*)"LSH", 22);
|
||||||
|
|
@ -1819,6 +1839,7 @@ export void *OPT__init(void)
|
||||||
OPT_EnterTyp((CHAR*)"LONGINT", 6, OPM_LIntSize, &OPT_linttyp);
|
OPT_EnterTyp((CHAR*)"LONGINT", 6, OPM_LIntSize, &OPT_linttyp);
|
||||||
OPT_EnterTyp((CHAR*)"LONGREAL", 8, OPM_LRealSize, &OPT_lrltyp);
|
OPT_EnterTyp((CHAR*)"LONGREAL", 8, OPM_LRealSize, &OPT_lrltyp);
|
||||||
OPT_EnterTyp((CHAR*)"SHORTINT", 4, OPM_SIntSize, &OPT_sinttyp);
|
OPT_EnterTyp((CHAR*)"SHORTINT", 4, OPM_SIntSize, &OPT_sinttyp);
|
||||||
|
OPT_EnterDerivedType((CHAR*)"LINT", OPT_int64typ, &OPT_LIntObj);
|
||||||
OPT_EnterBoolConst((CHAR*)"FALSE", ((LONGINT)(0)));
|
OPT_EnterBoolConst((CHAR*)"FALSE", ((LONGINT)(0)));
|
||||||
OPT_EnterBoolConst((CHAR*)"TRUE", ((LONGINT)(1)));
|
OPT_EnterBoolConst((CHAR*)"TRUE", ((LONGINT)(1)));
|
||||||
OPT_EnterProc((CHAR*)"HALT", 0);
|
OPT_EnterProc((CHAR*)"HALT", 0);
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ typedef
|
||||||
|
|
||||||
import void (*OPT_typSize)(OPT_Struct);
|
import void (*OPT_typSize)(OPT_Struct);
|
||||||
import OPT_Object OPT_topScope;
|
import OPT_Object OPT_topScope;
|
||||||
import OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
import OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_int8typ, OPT_int16typ, OPT_int32typ, OPT_int64typ, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
||||||
import SHORTINT OPT_nofGmod;
|
import SHORTINT OPT_nofGmod;
|
||||||
import OPT_Object OPT_GlbMod[64];
|
import OPT_Object OPT_GlbMod[64];
|
||||||
import OPS_Name OPT_SelfName;
|
import OPS_Name OPT_SelfName;
|
||||||
|
|
|
||||||
|
|
@ -285,6 +285,10 @@ void OPV_AdrAndSize (OPT_Object topScope)
|
||||||
OPT_inttyp->strobj->linkadr = 2;
|
OPT_inttyp->strobj->linkadr = 2;
|
||||||
OPT_linttyp->strobj->linkadr = 2;
|
OPT_linttyp->strobj->linkadr = 2;
|
||||||
OPT_ainttyp->strobj->linkadr = 2;
|
OPT_ainttyp->strobj->linkadr = 2;
|
||||||
|
OPT_int8typ->strobj->linkadr = 2;
|
||||||
|
OPT_int16typ->strobj->linkadr = 2;
|
||||||
|
OPT_int32typ->strobj->linkadr = 2;
|
||||||
|
OPT_int64typ->strobj->linkadr = 2;
|
||||||
OPT_lrltyp->strobj->linkadr = 2;
|
OPT_lrltyp->strobj->linkadr = 2;
|
||||||
OPT_sinttyp->strobj->linkadr = 2;
|
OPT_sinttyp->strobj->linkadr = 2;
|
||||||
OPT_booltyp->strobj->linkadr = 2;
|
OPT_booltyp->strobj->linkadr = 2;
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@ static void Vishap_PropagateElementaryTypeSizes (void)
|
||||||
OPT_realtyp->size = OPM_RealSize;
|
OPT_realtyp->size = OPM_RealSize;
|
||||||
OPT_inttyp->size = OPM_IntSize;
|
OPT_inttyp->size = OPM_IntSize;
|
||||||
OPT_linttyp->size = OPM_LIntSize;
|
OPT_linttyp->size = OPM_LIntSize;
|
||||||
OPT_ainttyp->size = OPM_LIntSize;
|
OPT_ainttyp->size = OPM_PointerSize;
|
||||||
OPT_lrltyp->size = OPM_LRealSize;
|
OPT_lrltyp->size = OPM_LRealSize;
|
||||||
OPT_sinttyp->size = OPM_SIntSize;
|
OPT_sinttyp->size = OPM_SIntSize;
|
||||||
OPT_booltyp->size = OPM_BoolSize;
|
OPT_booltyp->size = OPM_BoolSize;
|
||||||
|
|
|
||||||
|
|
@ -212,7 +212,7 @@ void OPC_Ident (OPT_Object obj)
|
||||||
OPM_WriteStringVar((void*)OPM_modName, ((LONGINT)(32)));
|
OPM_WriteStringVar((void*)OPM_modName, ((LONGINT)(32)));
|
||||||
}
|
}
|
||||||
OPM_Write('_');
|
OPM_Write('_');
|
||||||
} else if ((obj == OPT_sysptrtyp->strobj || obj == OPT_ainttyp->strobj) || obj == OPT_bytetyp->strobj) {
|
} else if ((((((obj == OPT_sysptrtyp->strobj || obj == OPT_ainttyp->strobj) || obj == OPT_int8typ->strobj) || obj == OPT_int16typ->strobj) || obj == OPT_int32typ->strobj) || obj == OPT_int64typ->strobj) || obj == OPT_bytetyp->strobj) {
|
||||||
OPM_WriteString((CHAR*)"SYSTEM_", (LONGINT)8);
|
OPM_WriteString((CHAR*)"SYSTEM_", (LONGINT)8);
|
||||||
}
|
}
|
||||||
OPM_WriteStringVar((void*)obj->name, ((LONGINT)(256)));
|
OPM_WriteStringVar((void*)obj->name, ((LONGINT)(256)));
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,8 @@ typedef
|
||||||
|
|
||||||
export void (*OPT_typSize)(OPT_Struct);
|
export void (*OPT_typSize)(OPT_Struct);
|
||||||
export OPT_Object OPT_topScope;
|
export OPT_Object OPT_topScope;
|
||||||
export OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
export OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_int8typ, OPT_int16typ, OPT_int32typ, OPT_int64typ, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
||||||
|
static OPT_Object OPT_LIntObj;
|
||||||
export SHORTINT OPT_nofGmod;
|
export SHORTINT OPT_nofGmod;
|
||||||
export OPT_Object OPT_GlbMod[64];
|
export OPT_Object OPT_GlbMod[64];
|
||||||
export OPS_Name OPT_SelfName;
|
export OPS_Name OPT_SelfName;
|
||||||
|
|
@ -106,6 +107,7 @@ export void OPT_Close (void);
|
||||||
export void OPT_CloseScope (void);
|
export void OPT_CloseScope (void);
|
||||||
static void OPT_DebugStruct (OPT_Struct btyp);
|
static void OPT_DebugStruct (OPT_Struct btyp);
|
||||||
static void OPT_EnterBoolConst (OPS_Name name, LONGINT value);
|
static void OPT_EnterBoolConst (OPS_Name name, LONGINT value);
|
||||||
|
static void OPT_EnterDerivedType (OPS_Name name, OPT_Struct typ, OPT_Object *obj);
|
||||||
static void OPT_EnterProc (OPS_Name name, INTEGER num);
|
static void OPT_EnterProc (OPS_Name name, INTEGER num);
|
||||||
static void OPT_EnterTyp (OPS_Name name, SHORTINT form, INTEGER size, OPT_Struct *res);
|
static void OPT_EnterTyp (OPS_Name name, SHORTINT form, INTEGER size, OPT_Struct *res);
|
||||||
export void OPT_Export (BOOLEAN *ext, BOOLEAN *new);
|
export void OPT_Export (BOOLEAN *ext, BOOLEAN *new);
|
||||||
|
|
@ -466,21 +468,21 @@ void OPT_IdFPrint (OPT_Struct typ)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct FPrintStr__12 {
|
static struct FPrintStr__13 {
|
||||||
LONGINT *pbfp, *pvfp;
|
LONGINT *pbfp, *pvfp;
|
||||||
struct FPrintStr__12 *lnk;
|
struct FPrintStr__13 *lnk;
|
||||||
} *FPrintStr__12_s;
|
} *FPrintStr__13_s;
|
||||||
|
|
||||||
static void FPrintFlds__13 (OPT_Object fld, LONGINT adr, BOOLEAN visible);
|
static void FPrintFlds__14 (OPT_Object fld, LONGINT adr, BOOLEAN visible);
|
||||||
static void FPrintHdFld__15 (OPT_Struct typ, OPT_Object fld, LONGINT adr);
|
static void FPrintHdFld__16 (OPT_Struct typ, OPT_Object fld, LONGINT adr);
|
||||||
static void FPrintTProcs__17 (OPT_Object obj);
|
static void FPrintTProcs__18 (OPT_Object obj);
|
||||||
|
|
||||||
static void FPrintHdFld__15 (OPT_Struct typ, OPT_Object fld, LONGINT adr)
|
static void FPrintHdFld__16 (OPT_Struct typ, OPT_Object fld, LONGINT adr)
|
||||||
{
|
{
|
||||||
LONGINT i, j, n;
|
LONGINT i, j, n;
|
||||||
OPT_Struct btyp = NIL;
|
OPT_Struct btyp = NIL;
|
||||||
if (typ->comp == 4) {
|
if (typ->comp == 4) {
|
||||||
FPrintFlds__13(typ->link, adr, 0);
|
FPrintFlds__14(typ->link, adr, 0);
|
||||||
} else if (typ->comp == 2) {
|
} else if (typ->comp == 2) {
|
||||||
btyp = typ->BaseTyp;
|
btyp = typ->BaseTyp;
|
||||||
n = typ->n;
|
n = typ->n;
|
||||||
|
|
@ -490,53 +492,53 @@ static void FPrintHdFld__15 (OPT_Struct typ, OPT_Object fld, LONGINT adr)
|
||||||
}
|
}
|
||||||
if (btyp->form == 13 || btyp->comp == 4) {
|
if (btyp->form == 13 || btyp->comp == 4) {
|
||||||
j = OPT_nofhdfld;
|
j = OPT_nofhdfld;
|
||||||
FPrintHdFld__15(btyp, fld, adr);
|
FPrintHdFld__16(btyp, fld, adr);
|
||||||
if (j != OPT_nofhdfld) {
|
if (j != OPT_nofhdfld) {
|
||||||
i = 1;
|
i = 1;
|
||||||
while ((i < n && OPT_nofhdfld <= 2048)) {
|
while ((i < n && OPT_nofhdfld <= 2048)) {
|
||||||
adr += btyp->size;
|
adr += btyp->size;
|
||||||
FPrintHdFld__15(btyp, fld, adr);
|
FPrintHdFld__16(btyp, fld, adr);
|
||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (typ->form == 13 || __STRCMP(fld->name, "@ptr") == 0) {
|
} else if (typ->form == 13 || __STRCMP(fld->name, "@ptr") == 0) {
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pvfp, ((LONGINT)(13)));
|
OPM_FPrint(&*FPrintStr__13_s->pvfp, ((LONGINT)(13)));
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pvfp, adr);
|
OPM_FPrint(&*FPrintStr__13_s->pvfp, adr);
|
||||||
OPT_nofhdfld += 1;
|
OPT_nofhdfld += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FPrintFlds__13 (OPT_Object fld, LONGINT adr, BOOLEAN visible)
|
static void FPrintFlds__14 (OPT_Object fld, LONGINT adr, BOOLEAN visible)
|
||||||
{
|
{
|
||||||
while ((fld != NIL && fld->mode == 4)) {
|
while ((fld != NIL && fld->mode == 4)) {
|
||||||
if ((fld->vis != 0 && visible)) {
|
if ((fld->vis != 0 && visible)) {
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, fld->vis);
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, fld->vis);
|
||||||
OPT_FPrintName(&*FPrintStr__12_s->pbfp, (void*)fld->name, ((LONGINT)(256)));
|
OPT_FPrintName(&*FPrintStr__13_s->pbfp, (void*)fld->name, ((LONGINT)(256)));
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, fld->adr);
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, fld->adr);
|
||||||
OPT_FPrintStr(fld->typ);
|
OPT_FPrintStr(fld->typ);
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, fld->typ->pbfp);
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, fld->typ->pbfp);
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pvfp, fld->typ->pvfp);
|
OPM_FPrint(&*FPrintStr__13_s->pvfp, fld->typ->pvfp);
|
||||||
} else {
|
} else {
|
||||||
FPrintHdFld__15(fld->typ, fld, fld->adr + adr);
|
FPrintHdFld__16(fld->typ, fld, fld->adr + adr);
|
||||||
}
|
}
|
||||||
fld = fld->link;
|
fld = fld->link;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FPrintTProcs__17 (OPT_Object obj)
|
static void FPrintTProcs__18 (OPT_Object obj)
|
||||||
{
|
{
|
||||||
if (obj != NIL) {
|
if (obj != NIL) {
|
||||||
FPrintTProcs__17(obj->left);
|
FPrintTProcs__18(obj->left);
|
||||||
if (obj->mode == 13) {
|
if (obj->mode == 13) {
|
||||||
if (obj->vis != 0) {
|
if (obj->vis != 0) {
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, ((LONGINT)(13)));
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, ((LONGINT)(13)));
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, __ASHR(obj->adr, 16));
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, __ASHR(obj->adr, 16));
|
||||||
OPT_FPrintSign(&*FPrintStr__12_s->pbfp, obj->typ, obj->link);
|
OPT_FPrintSign(&*FPrintStr__13_s->pbfp, obj->typ, obj->link);
|
||||||
OPT_FPrintName(&*FPrintStr__12_s->pbfp, (void*)obj->name, ((LONGINT)(256)));
|
OPT_FPrintName(&*FPrintStr__13_s->pbfp, (void*)obj->name, ((LONGINT)(256)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FPrintTProcs__17(obj->right);
|
FPrintTProcs__18(obj->right);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -546,11 +548,11 @@ void OPT_FPrintStr (OPT_Struct typ)
|
||||||
OPT_Struct btyp = NIL;
|
OPT_Struct btyp = NIL;
|
||||||
OPT_Object strobj = NIL, bstrobj = NIL;
|
OPT_Object strobj = NIL, bstrobj = NIL;
|
||||||
LONGINT pbfp, pvfp;
|
LONGINT pbfp, pvfp;
|
||||||
struct FPrintStr__12 _s;
|
struct FPrintStr__13 _s;
|
||||||
_s.pbfp = &pbfp;
|
_s.pbfp = &pbfp;
|
||||||
_s.pvfp = &pvfp;
|
_s.pvfp = &pvfp;
|
||||||
_s.lnk = FPrintStr__12_s;
|
_s.lnk = FPrintStr__13_s;
|
||||||
FPrintStr__12_s = &_s;
|
FPrintStr__13_s = &_s;
|
||||||
if (!typ->fpdone) {
|
if (!typ->fpdone) {
|
||||||
OPT_IdFPrint(typ);
|
OPT_IdFPrint(typ);
|
||||||
pbfp = typ->idfp;
|
pbfp = typ->idfp;
|
||||||
|
|
@ -587,11 +589,11 @@ void OPT_FPrintStr (OPT_Struct typ)
|
||||||
OPM_FPrint(&pvfp, typ->align);
|
OPM_FPrint(&pvfp, typ->align);
|
||||||
OPM_FPrint(&pvfp, typ->n);
|
OPM_FPrint(&pvfp, typ->n);
|
||||||
OPT_nofhdfld = 0;
|
OPT_nofhdfld = 0;
|
||||||
FPrintFlds__13(typ->link, ((LONGINT)(0)), 1);
|
FPrintFlds__14(typ->link, ((LONGINT)(0)), 1);
|
||||||
if (OPT_nofhdfld > 2048) {
|
if (OPT_nofhdfld > 2048) {
|
||||||
OPM_Mark(225, typ->txtpos);
|
OPM_Mark(225, typ->txtpos);
|
||||||
}
|
}
|
||||||
FPrintTProcs__17(typ->link);
|
FPrintTProcs__18(typ->link);
|
||||||
OPM_FPrint(&pvfp, pbfp);
|
OPM_FPrint(&pvfp, pbfp);
|
||||||
strobj = typ->strobj;
|
strobj = typ->strobj;
|
||||||
if (strobj == NIL || strobj->name[0] == 0x00) {
|
if (strobj == NIL || strobj->name[0] == 0x00) {
|
||||||
|
|
@ -601,7 +603,7 @@ void OPT_FPrintStr (OPT_Struct typ)
|
||||||
typ->pbfp = pbfp;
|
typ->pbfp = pbfp;
|
||||||
typ->pvfp = pvfp;
|
typ->pvfp = pvfp;
|
||||||
}
|
}
|
||||||
FPrintStr__12_s = _s.lnk;
|
FPrintStr__13_s = _s.lnk;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OPT_FPrintObj (OPT_Object obj)
|
void OPT_FPrintObj (OPT_Object obj)
|
||||||
|
|
@ -1698,6 +1700,15 @@ static void OPT_EnterTyp (OPS_Name name, SHORTINT form, INTEGER size, OPT_Struct
|
||||||
*res = typ;
|
*res = typ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void OPT_EnterDerivedType (OPS_Name name, OPT_Struct typ, OPT_Object *obj)
|
||||||
|
{
|
||||||
|
OPS_Name name__copy;
|
||||||
|
__DUPARR(name, OPS_Name);
|
||||||
|
OPT_Insert(name, &*obj);
|
||||||
|
(*obj)->mode = 5;
|
||||||
|
(*obj)->typ = typ;
|
||||||
|
}
|
||||||
|
|
||||||
static void OPT_EnterProc (OPS_Name name, INTEGER num)
|
static void OPT_EnterProc (OPS_Name name, INTEGER num)
|
||||||
{
|
{
|
||||||
OPT_Object obj = NIL;
|
OPT_Object obj = NIL;
|
||||||
|
|
@ -1720,6 +1731,10 @@ static void EnumPtrs(void (*P)(void*))
|
||||||
P(OPT_inttyp);
|
P(OPT_inttyp);
|
||||||
P(OPT_linttyp);
|
P(OPT_linttyp);
|
||||||
P(OPT_ainttyp);
|
P(OPT_ainttyp);
|
||||||
|
P(OPT_int8typ);
|
||||||
|
P(OPT_int16typ);
|
||||||
|
P(OPT_int32typ);
|
||||||
|
P(OPT_int64typ);
|
||||||
P(OPT_realtyp);
|
P(OPT_realtyp);
|
||||||
P(OPT_lrltyp);
|
P(OPT_lrltyp);
|
||||||
P(OPT_settyp);
|
P(OPT_settyp);
|
||||||
|
|
@ -1727,6 +1742,7 @@ static void EnumPtrs(void (*P)(void*))
|
||||||
P(OPT_niltyp);
|
P(OPT_niltyp);
|
||||||
P(OPT_notyp);
|
P(OPT_notyp);
|
||||||
P(OPT_sysptrtyp);
|
P(OPT_sysptrtyp);
|
||||||
|
P(OPT_LIntObj);
|
||||||
__ENUMP(OPT_GlbMod, 64, P);
|
__ENUMP(OPT_GlbMod, 64, P);
|
||||||
P(OPT_universe);
|
P(OPT_universe);
|
||||||
P(OPT_syslink);
|
P(OPT_syslink);
|
||||||
|
|
@ -1790,13 +1806,17 @@ export void *OPT__init(void)
|
||||||
OPT_OpenScope(0, NIL);
|
OPT_OpenScope(0, NIL);
|
||||||
OPM_errpos = 0;
|
OPM_errpos = 0;
|
||||||
OPT_InitStruct(&OPT_undftyp, 0);
|
OPT_InitStruct(&OPT_undftyp, 0);
|
||||||
|
OPT_undftyp->BaseTyp = OPT_undftyp;
|
||||||
OPT_InitStruct(&OPT_notyp, 12);
|
OPT_InitStruct(&OPT_notyp, 12);
|
||||||
OPT_InitStruct(&OPT_stringtyp, 10);
|
OPT_InitStruct(&OPT_stringtyp, 10);
|
||||||
OPT_InitStruct(&OPT_niltyp, 11);
|
OPT_InitStruct(&OPT_niltyp, 11);
|
||||||
OPT_undftyp->BaseTyp = OPT_undftyp;
|
|
||||||
OPT_EnterTyp((CHAR*)"BYTE", 1, OPM_ByteSize, &OPT_bytetyp);
|
OPT_EnterTyp((CHAR*)"BYTE", 1, OPM_ByteSize, &OPT_bytetyp);
|
||||||
OPT_EnterTyp((CHAR*)"PTR", 13, OPM_PointerSize, &OPT_sysptrtyp);
|
OPT_EnterTyp((CHAR*)"PTR", 13, OPM_PointerSize, &OPT_sysptrtyp);
|
||||||
OPT_EnterTyp((CHAR*)"ADRINT", 5, OPM_LIntSize, &OPT_ainttyp);
|
OPT_EnterTyp((CHAR*)"ADRINT", 5, OPM_LIntSize, &OPT_ainttyp);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT8", 5, 1, &OPT_int8typ);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT16", 5, 2, &OPT_int16typ);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT32", 5, 4, &OPT_int32typ);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT64", 5, 8, &OPT_int64typ);
|
||||||
OPT_EnterProc((CHAR*)"ADR", 20);
|
OPT_EnterProc((CHAR*)"ADR", 20);
|
||||||
OPT_EnterProc((CHAR*)"CC", 21);
|
OPT_EnterProc((CHAR*)"CC", 21);
|
||||||
OPT_EnterProc((CHAR*)"LSH", 22);
|
OPT_EnterProc((CHAR*)"LSH", 22);
|
||||||
|
|
@ -1820,6 +1840,7 @@ export void *OPT__init(void)
|
||||||
OPT_EnterTyp((CHAR*)"LONGINT", 6, OPM_LIntSize, &OPT_linttyp);
|
OPT_EnterTyp((CHAR*)"LONGINT", 6, OPM_LIntSize, &OPT_linttyp);
|
||||||
OPT_EnterTyp((CHAR*)"LONGREAL", 8, OPM_LRealSize, &OPT_lrltyp);
|
OPT_EnterTyp((CHAR*)"LONGREAL", 8, OPM_LRealSize, &OPT_lrltyp);
|
||||||
OPT_EnterTyp((CHAR*)"SHORTINT", 4, OPM_SIntSize, &OPT_sinttyp);
|
OPT_EnterTyp((CHAR*)"SHORTINT", 4, OPM_SIntSize, &OPT_sinttyp);
|
||||||
|
OPT_EnterDerivedType((CHAR*)"LINT", OPT_int64typ, &OPT_LIntObj);
|
||||||
OPT_EnterBoolConst((CHAR*)"FALSE", ((LONGINT)(0)));
|
OPT_EnterBoolConst((CHAR*)"FALSE", ((LONGINT)(0)));
|
||||||
OPT_EnterBoolConst((CHAR*)"TRUE", ((LONGINT)(1)));
|
OPT_EnterBoolConst((CHAR*)"TRUE", ((LONGINT)(1)));
|
||||||
OPT_EnterProc((CHAR*)"HALT", 0);
|
OPT_EnterProc((CHAR*)"HALT", 0);
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ typedef
|
||||||
|
|
||||||
import void (*OPT_typSize)(OPT_Struct);
|
import void (*OPT_typSize)(OPT_Struct);
|
||||||
import OPT_Object OPT_topScope;
|
import OPT_Object OPT_topScope;
|
||||||
import OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
import OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_int8typ, OPT_int16typ, OPT_int32typ, OPT_int64typ, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
||||||
import SHORTINT OPT_nofGmod;
|
import SHORTINT OPT_nofGmod;
|
||||||
import OPT_Object OPT_GlbMod[64];
|
import OPT_Object OPT_GlbMod[64];
|
||||||
import OPS_Name OPT_SelfName;
|
import OPS_Name OPT_SelfName;
|
||||||
|
|
|
||||||
|
|
@ -286,6 +286,10 @@ void OPV_AdrAndSize (OPT_Object topScope)
|
||||||
OPT_inttyp->strobj->linkadr = 2;
|
OPT_inttyp->strobj->linkadr = 2;
|
||||||
OPT_linttyp->strobj->linkadr = 2;
|
OPT_linttyp->strobj->linkadr = 2;
|
||||||
OPT_ainttyp->strobj->linkadr = 2;
|
OPT_ainttyp->strobj->linkadr = 2;
|
||||||
|
OPT_int8typ->strobj->linkadr = 2;
|
||||||
|
OPT_int16typ->strobj->linkadr = 2;
|
||||||
|
OPT_int32typ->strobj->linkadr = 2;
|
||||||
|
OPT_int64typ->strobj->linkadr = 2;
|
||||||
OPT_lrltyp->strobj->linkadr = 2;
|
OPT_lrltyp->strobj->linkadr = 2;
|
||||||
OPT_sinttyp->strobj->linkadr = 2;
|
OPT_sinttyp->strobj->linkadr = 2;
|
||||||
OPT_booltyp->strobj->linkadr = 2;
|
OPT_booltyp->strobj->linkadr = 2;
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ static void Vishap_PropagateElementaryTypeSizes (void)
|
||||||
OPT_realtyp->size = OPM_RealSize;
|
OPT_realtyp->size = OPM_RealSize;
|
||||||
OPT_inttyp->size = OPM_IntSize;
|
OPT_inttyp->size = OPM_IntSize;
|
||||||
OPT_linttyp->size = OPM_LIntSize;
|
OPT_linttyp->size = OPM_LIntSize;
|
||||||
OPT_ainttyp->size = OPM_LIntSize;
|
OPT_ainttyp->size = OPM_PointerSize;
|
||||||
OPT_lrltyp->size = OPM_LRealSize;
|
OPT_lrltyp->size = OPM_LRealSize;
|
||||||
OPT_sinttyp->size = OPM_SIntSize;
|
OPT_sinttyp->size = OPM_SIntSize;
|
||||||
OPT_booltyp->size = OPM_BoolSize;
|
OPT_booltyp->size = OPM_BoolSize;
|
||||||
|
|
|
||||||
|
|
@ -211,7 +211,7 @@ void OPC_Ident (OPT_Object obj)
|
||||||
OPM_WriteStringVar((void*)OPM_modName, ((LONGINT)(32)));
|
OPM_WriteStringVar((void*)OPM_modName, ((LONGINT)(32)));
|
||||||
}
|
}
|
||||||
OPM_Write('_');
|
OPM_Write('_');
|
||||||
} else if ((obj == OPT_sysptrtyp->strobj || obj == OPT_ainttyp->strobj) || obj == OPT_bytetyp->strobj) {
|
} else if ((((((obj == OPT_sysptrtyp->strobj || obj == OPT_ainttyp->strobj) || obj == OPT_int8typ->strobj) || obj == OPT_int16typ->strobj) || obj == OPT_int32typ->strobj) || obj == OPT_int64typ->strobj) || obj == OPT_bytetyp->strobj) {
|
||||||
OPM_WriteString((CHAR*)"SYSTEM_", (LONGINT)8);
|
OPM_WriteString((CHAR*)"SYSTEM_", (LONGINT)8);
|
||||||
}
|
}
|
||||||
OPM_WriteStringVar((void*)obj->name, ((LONGINT)(256)));
|
OPM_WriteStringVar((void*)obj->name, ((LONGINT)(256)));
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,8 @@ typedef
|
||||||
|
|
||||||
export void (*OPT_typSize)(OPT_Struct);
|
export void (*OPT_typSize)(OPT_Struct);
|
||||||
export OPT_Object OPT_topScope;
|
export OPT_Object OPT_topScope;
|
||||||
export OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
export OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_int8typ, OPT_int16typ, OPT_int32typ, OPT_int64typ, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
||||||
|
static OPT_Object OPT_LIntObj;
|
||||||
export SHORTINT OPT_nofGmod;
|
export SHORTINT OPT_nofGmod;
|
||||||
export OPT_Object OPT_GlbMod[64];
|
export OPT_Object OPT_GlbMod[64];
|
||||||
export OPS_Name OPT_SelfName;
|
export OPS_Name OPT_SelfName;
|
||||||
|
|
@ -105,6 +106,7 @@ export void OPT_Close (void);
|
||||||
export void OPT_CloseScope (void);
|
export void OPT_CloseScope (void);
|
||||||
static void OPT_DebugStruct (OPT_Struct btyp);
|
static void OPT_DebugStruct (OPT_Struct btyp);
|
||||||
static void OPT_EnterBoolConst (OPS_Name name, LONGINT value);
|
static void OPT_EnterBoolConst (OPS_Name name, LONGINT value);
|
||||||
|
static void OPT_EnterDerivedType (OPS_Name name, OPT_Struct typ, OPT_Object *obj);
|
||||||
static void OPT_EnterProc (OPS_Name name, INTEGER num);
|
static void OPT_EnterProc (OPS_Name name, INTEGER num);
|
||||||
static void OPT_EnterTyp (OPS_Name name, SHORTINT form, INTEGER size, OPT_Struct *res);
|
static void OPT_EnterTyp (OPS_Name name, SHORTINT form, INTEGER size, OPT_Struct *res);
|
||||||
export void OPT_Export (BOOLEAN *ext, BOOLEAN *new);
|
export void OPT_Export (BOOLEAN *ext, BOOLEAN *new);
|
||||||
|
|
@ -465,21 +467,21 @@ void OPT_IdFPrint (OPT_Struct typ)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct FPrintStr__12 {
|
static struct FPrintStr__13 {
|
||||||
LONGINT *pbfp, *pvfp;
|
LONGINT *pbfp, *pvfp;
|
||||||
struct FPrintStr__12 *lnk;
|
struct FPrintStr__13 *lnk;
|
||||||
} *FPrintStr__12_s;
|
} *FPrintStr__13_s;
|
||||||
|
|
||||||
static void FPrintFlds__13 (OPT_Object fld, LONGINT adr, BOOLEAN visible);
|
static void FPrintFlds__14 (OPT_Object fld, LONGINT adr, BOOLEAN visible);
|
||||||
static void FPrintHdFld__15 (OPT_Struct typ, OPT_Object fld, LONGINT adr);
|
static void FPrintHdFld__16 (OPT_Struct typ, OPT_Object fld, LONGINT adr);
|
||||||
static void FPrintTProcs__17 (OPT_Object obj);
|
static void FPrintTProcs__18 (OPT_Object obj);
|
||||||
|
|
||||||
static void FPrintHdFld__15 (OPT_Struct typ, OPT_Object fld, LONGINT adr)
|
static void FPrintHdFld__16 (OPT_Struct typ, OPT_Object fld, LONGINT adr)
|
||||||
{
|
{
|
||||||
LONGINT i, j, n;
|
LONGINT i, j, n;
|
||||||
OPT_Struct btyp = NIL;
|
OPT_Struct btyp = NIL;
|
||||||
if (typ->comp == 4) {
|
if (typ->comp == 4) {
|
||||||
FPrintFlds__13(typ->link, adr, 0);
|
FPrintFlds__14(typ->link, adr, 0);
|
||||||
} else if (typ->comp == 2) {
|
} else if (typ->comp == 2) {
|
||||||
btyp = typ->BaseTyp;
|
btyp = typ->BaseTyp;
|
||||||
n = typ->n;
|
n = typ->n;
|
||||||
|
|
@ -489,53 +491,53 @@ static void FPrintHdFld__15 (OPT_Struct typ, OPT_Object fld, LONGINT adr)
|
||||||
}
|
}
|
||||||
if (btyp->form == 13 || btyp->comp == 4) {
|
if (btyp->form == 13 || btyp->comp == 4) {
|
||||||
j = OPT_nofhdfld;
|
j = OPT_nofhdfld;
|
||||||
FPrintHdFld__15(btyp, fld, adr);
|
FPrintHdFld__16(btyp, fld, adr);
|
||||||
if (j != OPT_nofhdfld) {
|
if (j != OPT_nofhdfld) {
|
||||||
i = 1;
|
i = 1;
|
||||||
while ((i < n && OPT_nofhdfld <= 2048)) {
|
while ((i < n && OPT_nofhdfld <= 2048)) {
|
||||||
adr += btyp->size;
|
adr += btyp->size;
|
||||||
FPrintHdFld__15(btyp, fld, adr);
|
FPrintHdFld__16(btyp, fld, adr);
|
||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (typ->form == 13 || __STRCMP(fld->name, "@ptr") == 0) {
|
} else if (typ->form == 13 || __STRCMP(fld->name, "@ptr") == 0) {
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pvfp, ((LONGINT)(13)));
|
OPM_FPrint(&*FPrintStr__13_s->pvfp, ((LONGINT)(13)));
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pvfp, adr);
|
OPM_FPrint(&*FPrintStr__13_s->pvfp, adr);
|
||||||
OPT_nofhdfld += 1;
|
OPT_nofhdfld += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FPrintFlds__13 (OPT_Object fld, LONGINT adr, BOOLEAN visible)
|
static void FPrintFlds__14 (OPT_Object fld, LONGINT adr, BOOLEAN visible)
|
||||||
{
|
{
|
||||||
while ((fld != NIL && fld->mode == 4)) {
|
while ((fld != NIL && fld->mode == 4)) {
|
||||||
if ((fld->vis != 0 && visible)) {
|
if ((fld->vis != 0 && visible)) {
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, fld->vis);
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, fld->vis);
|
||||||
OPT_FPrintName(&*FPrintStr__12_s->pbfp, (void*)fld->name, ((LONGINT)(256)));
|
OPT_FPrintName(&*FPrintStr__13_s->pbfp, (void*)fld->name, ((LONGINT)(256)));
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, fld->adr);
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, fld->adr);
|
||||||
OPT_FPrintStr(fld->typ);
|
OPT_FPrintStr(fld->typ);
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, fld->typ->pbfp);
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, fld->typ->pbfp);
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pvfp, fld->typ->pvfp);
|
OPM_FPrint(&*FPrintStr__13_s->pvfp, fld->typ->pvfp);
|
||||||
} else {
|
} else {
|
||||||
FPrintHdFld__15(fld->typ, fld, fld->adr + adr);
|
FPrintHdFld__16(fld->typ, fld, fld->adr + adr);
|
||||||
}
|
}
|
||||||
fld = fld->link;
|
fld = fld->link;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FPrintTProcs__17 (OPT_Object obj)
|
static void FPrintTProcs__18 (OPT_Object obj)
|
||||||
{
|
{
|
||||||
if (obj != NIL) {
|
if (obj != NIL) {
|
||||||
FPrintTProcs__17(obj->left);
|
FPrintTProcs__18(obj->left);
|
||||||
if (obj->mode == 13) {
|
if (obj->mode == 13) {
|
||||||
if (obj->vis != 0) {
|
if (obj->vis != 0) {
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, ((LONGINT)(13)));
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, ((LONGINT)(13)));
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, __ASHR(obj->adr, 16));
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, __ASHR(obj->adr, 16));
|
||||||
OPT_FPrintSign(&*FPrintStr__12_s->pbfp, obj->typ, obj->link);
|
OPT_FPrintSign(&*FPrintStr__13_s->pbfp, obj->typ, obj->link);
|
||||||
OPT_FPrintName(&*FPrintStr__12_s->pbfp, (void*)obj->name, ((LONGINT)(256)));
|
OPT_FPrintName(&*FPrintStr__13_s->pbfp, (void*)obj->name, ((LONGINT)(256)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FPrintTProcs__17(obj->right);
|
FPrintTProcs__18(obj->right);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -545,11 +547,11 @@ void OPT_FPrintStr (OPT_Struct typ)
|
||||||
OPT_Struct btyp = NIL;
|
OPT_Struct btyp = NIL;
|
||||||
OPT_Object strobj = NIL, bstrobj = NIL;
|
OPT_Object strobj = NIL, bstrobj = NIL;
|
||||||
LONGINT pbfp, pvfp;
|
LONGINT pbfp, pvfp;
|
||||||
struct FPrintStr__12 _s;
|
struct FPrintStr__13 _s;
|
||||||
_s.pbfp = &pbfp;
|
_s.pbfp = &pbfp;
|
||||||
_s.pvfp = &pvfp;
|
_s.pvfp = &pvfp;
|
||||||
_s.lnk = FPrintStr__12_s;
|
_s.lnk = FPrintStr__13_s;
|
||||||
FPrintStr__12_s = &_s;
|
FPrintStr__13_s = &_s;
|
||||||
if (!typ->fpdone) {
|
if (!typ->fpdone) {
|
||||||
OPT_IdFPrint(typ);
|
OPT_IdFPrint(typ);
|
||||||
pbfp = typ->idfp;
|
pbfp = typ->idfp;
|
||||||
|
|
@ -586,11 +588,11 @@ void OPT_FPrintStr (OPT_Struct typ)
|
||||||
OPM_FPrint(&pvfp, typ->align);
|
OPM_FPrint(&pvfp, typ->align);
|
||||||
OPM_FPrint(&pvfp, typ->n);
|
OPM_FPrint(&pvfp, typ->n);
|
||||||
OPT_nofhdfld = 0;
|
OPT_nofhdfld = 0;
|
||||||
FPrintFlds__13(typ->link, ((LONGINT)(0)), 1);
|
FPrintFlds__14(typ->link, ((LONGINT)(0)), 1);
|
||||||
if (OPT_nofhdfld > 2048) {
|
if (OPT_nofhdfld > 2048) {
|
||||||
OPM_Mark(225, typ->txtpos);
|
OPM_Mark(225, typ->txtpos);
|
||||||
}
|
}
|
||||||
FPrintTProcs__17(typ->link);
|
FPrintTProcs__18(typ->link);
|
||||||
OPM_FPrint(&pvfp, pbfp);
|
OPM_FPrint(&pvfp, pbfp);
|
||||||
strobj = typ->strobj;
|
strobj = typ->strobj;
|
||||||
if (strobj == NIL || strobj->name[0] == 0x00) {
|
if (strobj == NIL || strobj->name[0] == 0x00) {
|
||||||
|
|
@ -600,7 +602,7 @@ void OPT_FPrintStr (OPT_Struct typ)
|
||||||
typ->pbfp = pbfp;
|
typ->pbfp = pbfp;
|
||||||
typ->pvfp = pvfp;
|
typ->pvfp = pvfp;
|
||||||
}
|
}
|
||||||
FPrintStr__12_s = _s.lnk;
|
FPrintStr__13_s = _s.lnk;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OPT_FPrintObj (OPT_Object obj)
|
void OPT_FPrintObj (OPT_Object obj)
|
||||||
|
|
@ -1697,6 +1699,15 @@ static void OPT_EnterTyp (OPS_Name name, SHORTINT form, INTEGER size, OPT_Struct
|
||||||
*res = typ;
|
*res = typ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void OPT_EnterDerivedType (OPS_Name name, OPT_Struct typ, OPT_Object *obj)
|
||||||
|
{
|
||||||
|
OPS_Name name__copy;
|
||||||
|
__DUPARR(name, OPS_Name);
|
||||||
|
OPT_Insert(name, &*obj);
|
||||||
|
(*obj)->mode = 5;
|
||||||
|
(*obj)->typ = typ;
|
||||||
|
}
|
||||||
|
|
||||||
static void OPT_EnterProc (OPS_Name name, INTEGER num)
|
static void OPT_EnterProc (OPS_Name name, INTEGER num)
|
||||||
{
|
{
|
||||||
OPT_Object obj = NIL;
|
OPT_Object obj = NIL;
|
||||||
|
|
@ -1719,6 +1730,10 @@ static void EnumPtrs(void (*P)(void*))
|
||||||
P(OPT_inttyp);
|
P(OPT_inttyp);
|
||||||
P(OPT_linttyp);
|
P(OPT_linttyp);
|
||||||
P(OPT_ainttyp);
|
P(OPT_ainttyp);
|
||||||
|
P(OPT_int8typ);
|
||||||
|
P(OPT_int16typ);
|
||||||
|
P(OPT_int32typ);
|
||||||
|
P(OPT_int64typ);
|
||||||
P(OPT_realtyp);
|
P(OPT_realtyp);
|
||||||
P(OPT_lrltyp);
|
P(OPT_lrltyp);
|
||||||
P(OPT_settyp);
|
P(OPT_settyp);
|
||||||
|
|
@ -1726,6 +1741,7 @@ static void EnumPtrs(void (*P)(void*))
|
||||||
P(OPT_niltyp);
|
P(OPT_niltyp);
|
||||||
P(OPT_notyp);
|
P(OPT_notyp);
|
||||||
P(OPT_sysptrtyp);
|
P(OPT_sysptrtyp);
|
||||||
|
P(OPT_LIntObj);
|
||||||
__ENUMP(OPT_GlbMod, 64, P);
|
__ENUMP(OPT_GlbMod, 64, P);
|
||||||
P(OPT_universe);
|
P(OPT_universe);
|
||||||
P(OPT_syslink);
|
P(OPT_syslink);
|
||||||
|
|
@ -1789,13 +1805,17 @@ export void *OPT__init(void)
|
||||||
OPT_OpenScope(0, NIL);
|
OPT_OpenScope(0, NIL);
|
||||||
OPM_errpos = 0;
|
OPM_errpos = 0;
|
||||||
OPT_InitStruct(&OPT_undftyp, 0);
|
OPT_InitStruct(&OPT_undftyp, 0);
|
||||||
|
OPT_undftyp->BaseTyp = OPT_undftyp;
|
||||||
OPT_InitStruct(&OPT_notyp, 12);
|
OPT_InitStruct(&OPT_notyp, 12);
|
||||||
OPT_InitStruct(&OPT_stringtyp, 10);
|
OPT_InitStruct(&OPT_stringtyp, 10);
|
||||||
OPT_InitStruct(&OPT_niltyp, 11);
|
OPT_InitStruct(&OPT_niltyp, 11);
|
||||||
OPT_undftyp->BaseTyp = OPT_undftyp;
|
|
||||||
OPT_EnterTyp((CHAR*)"BYTE", 1, OPM_ByteSize, &OPT_bytetyp);
|
OPT_EnterTyp((CHAR*)"BYTE", 1, OPM_ByteSize, &OPT_bytetyp);
|
||||||
OPT_EnterTyp((CHAR*)"PTR", 13, OPM_PointerSize, &OPT_sysptrtyp);
|
OPT_EnterTyp((CHAR*)"PTR", 13, OPM_PointerSize, &OPT_sysptrtyp);
|
||||||
OPT_EnterTyp((CHAR*)"ADRINT", 5, OPM_LIntSize, &OPT_ainttyp);
|
OPT_EnterTyp((CHAR*)"ADRINT", 5, OPM_LIntSize, &OPT_ainttyp);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT8", 5, 1, &OPT_int8typ);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT16", 5, 2, &OPT_int16typ);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT32", 5, 4, &OPT_int32typ);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT64", 5, 8, &OPT_int64typ);
|
||||||
OPT_EnterProc((CHAR*)"ADR", 20);
|
OPT_EnterProc((CHAR*)"ADR", 20);
|
||||||
OPT_EnterProc((CHAR*)"CC", 21);
|
OPT_EnterProc((CHAR*)"CC", 21);
|
||||||
OPT_EnterProc((CHAR*)"LSH", 22);
|
OPT_EnterProc((CHAR*)"LSH", 22);
|
||||||
|
|
@ -1819,6 +1839,7 @@ export void *OPT__init(void)
|
||||||
OPT_EnterTyp((CHAR*)"LONGINT", 6, OPM_LIntSize, &OPT_linttyp);
|
OPT_EnterTyp((CHAR*)"LONGINT", 6, OPM_LIntSize, &OPT_linttyp);
|
||||||
OPT_EnterTyp((CHAR*)"LONGREAL", 8, OPM_LRealSize, &OPT_lrltyp);
|
OPT_EnterTyp((CHAR*)"LONGREAL", 8, OPM_LRealSize, &OPT_lrltyp);
|
||||||
OPT_EnterTyp((CHAR*)"SHORTINT", 4, OPM_SIntSize, &OPT_sinttyp);
|
OPT_EnterTyp((CHAR*)"SHORTINT", 4, OPM_SIntSize, &OPT_sinttyp);
|
||||||
|
OPT_EnterDerivedType((CHAR*)"LINT", OPT_int64typ, &OPT_LIntObj);
|
||||||
OPT_EnterBoolConst((CHAR*)"FALSE", ((LONGINT)(0)));
|
OPT_EnterBoolConst((CHAR*)"FALSE", ((LONGINT)(0)));
|
||||||
OPT_EnterBoolConst((CHAR*)"TRUE", ((LONGINT)(1)));
|
OPT_EnterBoolConst((CHAR*)"TRUE", ((LONGINT)(1)));
|
||||||
OPT_EnterProc((CHAR*)"HALT", 0);
|
OPT_EnterProc((CHAR*)"HALT", 0);
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ typedef
|
||||||
|
|
||||||
import void (*OPT_typSize)(OPT_Struct);
|
import void (*OPT_typSize)(OPT_Struct);
|
||||||
import OPT_Object OPT_topScope;
|
import OPT_Object OPT_topScope;
|
||||||
import OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
import OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_int8typ, OPT_int16typ, OPT_int32typ, OPT_int64typ, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
||||||
import SHORTINT OPT_nofGmod;
|
import SHORTINT OPT_nofGmod;
|
||||||
import OPT_Object OPT_GlbMod[64];
|
import OPT_Object OPT_GlbMod[64];
|
||||||
import OPS_Name OPT_SelfName;
|
import OPS_Name OPT_SelfName;
|
||||||
|
|
|
||||||
|
|
@ -285,6 +285,10 @@ void OPV_AdrAndSize (OPT_Object topScope)
|
||||||
OPT_inttyp->strobj->linkadr = 2;
|
OPT_inttyp->strobj->linkadr = 2;
|
||||||
OPT_linttyp->strobj->linkadr = 2;
|
OPT_linttyp->strobj->linkadr = 2;
|
||||||
OPT_ainttyp->strobj->linkadr = 2;
|
OPT_ainttyp->strobj->linkadr = 2;
|
||||||
|
OPT_int8typ->strobj->linkadr = 2;
|
||||||
|
OPT_int16typ->strobj->linkadr = 2;
|
||||||
|
OPT_int32typ->strobj->linkadr = 2;
|
||||||
|
OPT_int64typ->strobj->linkadr = 2;
|
||||||
OPT_lrltyp->strobj->linkadr = 2;
|
OPT_lrltyp->strobj->linkadr = 2;
|
||||||
OPT_sinttyp->strobj->linkadr = 2;
|
OPT_sinttyp->strobj->linkadr = 2;
|
||||||
OPT_booltyp->strobj->linkadr = 2;
|
OPT_booltyp->strobj->linkadr = 2;
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,7 @@ static void Vishap_PropagateElementaryTypeSizes (void)
|
||||||
OPT_realtyp->size = OPM_RealSize;
|
OPT_realtyp->size = OPM_RealSize;
|
||||||
OPT_inttyp->size = OPM_IntSize;
|
OPT_inttyp->size = OPM_IntSize;
|
||||||
OPT_linttyp->size = OPM_LIntSize;
|
OPT_linttyp->size = OPM_LIntSize;
|
||||||
OPT_ainttyp->size = OPM_LIntSize;
|
OPT_ainttyp->size = OPM_PointerSize;
|
||||||
OPT_lrltyp->size = OPM_LRealSize;
|
OPT_lrltyp->size = OPM_LRealSize;
|
||||||
OPT_sinttyp->size = OPM_SIntSize;
|
OPT_sinttyp->size = OPM_SIntSize;
|
||||||
OPT_booltyp->size = OPM_BoolSize;
|
OPT_booltyp->size = OPM_BoolSize;
|
||||||
|
|
|
||||||
|
|
@ -212,7 +212,7 @@ void OPC_Ident (OPT_Object obj)
|
||||||
OPM_WriteStringVar((void*)OPM_modName, ((LONGINT)(32)));
|
OPM_WriteStringVar((void*)OPM_modName, ((LONGINT)(32)));
|
||||||
}
|
}
|
||||||
OPM_Write('_');
|
OPM_Write('_');
|
||||||
} else if ((obj == OPT_sysptrtyp->strobj || obj == OPT_ainttyp->strobj) || obj == OPT_bytetyp->strobj) {
|
} else if ((((((obj == OPT_sysptrtyp->strobj || obj == OPT_ainttyp->strobj) || obj == OPT_int8typ->strobj) || obj == OPT_int16typ->strobj) || obj == OPT_int32typ->strobj) || obj == OPT_int64typ->strobj) || obj == OPT_bytetyp->strobj) {
|
||||||
OPM_WriteString((CHAR*)"SYSTEM_", (LONGINT)8);
|
OPM_WriteString((CHAR*)"SYSTEM_", (LONGINT)8);
|
||||||
}
|
}
|
||||||
OPM_WriteStringVar((void*)obj->name, ((LONGINT)(256)));
|
OPM_WriteStringVar((void*)obj->name, ((LONGINT)(256)));
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,8 @@ typedef
|
||||||
|
|
||||||
export void (*OPT_typSize)(OPT_Struct);
|
export void (*OPT_typSize)(OPT_Struct);
|
||||||
export OPT_Object OPT_topScope;
|
export OPT_Object OPT_topScope;
|
||||||
export OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
export OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_int8typ, OPT_int16typ, OPT_int32typ, OPT_int64typ, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
||||||
|
static OPT_Object OPT_LIntObj;
|
||||||
export SHORTINT OPT_nofGmod;
|
export SHORTINT OPT_nofGmod;
|
||||||
export OPT_Object OPT_GlbMod[64];
|
export OPT_Object OPT_GlbMod[64];
|
||||||
export OPS_Name OPT_SelfName;
|
export OPS_Name OPT_SelfName;
|
||||||
|
|
@ -106,6 +107,7 @@ export void OPT_Close (void);
|
||||||
export void OPT_CloseScope (void);
|
export void OPT_CloseScope (void);
|
||||||
static void OPT_DebugStruct (OPT_Struct btyp);
|
static void OPT_DebugStruct (OPT_Struct btyp);
|
||||||
static void OPT_EnterBoolConst (OPS_Name name, LONGINT value);
|
static void OPT_EnterBoolConst (OPS_Name name, LONGINT value);
|
||||||
|
static void OPT_EnterDerivedType (OPS_Name name, OPT_Struct typ, OPT_Object *obj);
|
||||||
static void OPT_EnterProc (OPS_Name name, INTEGER num);
|
static void OPT_EnterProc (OPS_Name name, INTEGER num);
|
||||||
static void OPT_EnterTyp (OPS_Name name, SHORTINT form, INTEGER size, OPT_Struct *res);
|
static void OPT_EnterTyp (OPS_Name name, SHORTINT form, INTEGER size, OPT_Struct *res);
|
||||||
export void OPT_Export (BOOLEAN *ext, BOOLEAN *new);
|
export void OPT_Export (BOOLEAN *ext, BOOLEAN *new);
|
||||||
|
|
@ -466,21 +468,21 @@ void OPT_IdFPrint (OPT_Struct typ)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct FPrintStr__12 {
|
static struct FPrintStr__13 {
|
||||||
LONGINT *pbfp, *pvfp;
|
LONGINT *pbfp, *pvfp;
|
||||||
struct FPrintStr__12 *lnk;
|
struct FPrintStr__13 *lnk;
|
||||||
} *FPrintStr__12_s;
|
} *FPrintStr__13_s;
|
||||||
|
|
||||||
static void FPrintFlds__13 (OPT_Object fld, LONGINT adr, BOOLEAN visible);
|
static void FPrintFlds__14 (OPT_Object fld, LONGINT adr, BOOLEAN visible);
|
||||||
static void FPrintHdFld__15 (OPT_Struct typ, OPT_Object fld, LONGINT adr);
|
static void FPrintHdFld__16 (OPT_Struct typ, OPT_Object fld, LONGINT adr);
|
||||||
static void FPrintTProcs__17 (OPT_Object obj);
|
static void FPrintTProcs__18 (OPT_Object obj);
|
||||||
|
|
||||||
static void FPrintHdFld__15 (OPT_Struct typ, OPT_Object fld, LONGINT adr)
|
static void FPrintHdFld__16 (OPT_Struct typ, OPT_Object fld, LONGINT adr)
|
||||||
{
|
{
|
||||||
LONGINT i, j, n;
|
LONGINT i, j, n;
|
||||||
OPT_Struct btyp = NIL;
|
OPT_Struct btyp = NIL;
|
||||||
if (typ->comp == 4) {
|
if (typ->comp == 4) {
|
||||||
FPrintFlds__13(typ->link, adr, 0);
|
FPrintFlds__14(typ->link, adr, 0);
|
||||||
} else if (typ->comp == 2) {
|
} else if (typ->comp == 2) {
|
||||||
btyp = typ->BaseTyp;
|
btyp = typ->BaseTyp;
|
||||||
n = typ->n;
|
n = typ->n;
|
||||||
|
|
@ -490,53 +492,53 @@ static void FPrintHdFld__15 (OPT_Struct typ, OPT_Object fld, LONGINT adr)
|
||||||
}
|
}
|
||||||
if (btyp->form == 13 || btyp->comp == 4) {
|
if (btyp->form == 13 || btyp->comp == 4) {
|
||||||
j = OPT_nofhdfld;
|
j = OPT_nofhdfld;
|
||||||
FPrintHdFld__15(btyp, fld, adr);
|
FPrintHdFld__16(btyp, fld, adr);
|
||||||
if (j != OPT_nofhdfld) {
|
if (j != OPT_nofhdfld) {
|
||||||
i = 1;
|
i = 1;
|
||||||
while ((i < n && OPT_nofhdfld <= 2048)) {
|
while ((i < n && OPT_nofhdfld <= 2048)) {
|
||||||
adr += btyp->size;
|
adr += btyp->size;
|
||||||
FPrintHdFld__15(btyp, fld, adr);
|
FPrintHdFld__16(btyp, fld, adr);
|
||||||
i += 1;
|
i += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (typ->form == 13 || __STRCMP(fld->name, "@ptr") == 0) {
|
} else if (typ->form == 13 || __STRCMP(fld->name, "@ptr") == 0) {
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pvfp, ((LONGINT)(13)));
|
OPM_FPrint(&*FPrintStr__13_s->pvfp, ((LONGINT)(13)));
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pvfp, adr);
|
OPM_FPrint(&*FPrintStr__13_s->pvfp, adr);
|
||||||
OPT_nofhdfld += 1;
|
OPT_nofhdfld += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FPrintFlds__13 (OPT_Object fld, LONGINT adr, BOOLEAN visible)
|
static void FPrintFlds__14 (OPT_Object fld, LONGINT adr, BOOLEAN visible)
|
||||||
{
|
{
|
||||||
while ((fld != NIL && fld->mode == 4)) {
|
while ((fld != NIL && fld->mode == 4)) {
|
||||||
if ((fld->vis != 0 && visible)) {
|
if ((fld->vis != 0 && visible)) {
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, fld->vis);
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, fld->vis);
|
||||||
OPT_FPrintName(&*FPrintStr__12_s->pbfp, (void*)fld->name, ((LONGINT)(256)));
|
OPT_FPrintName(&*FPrintStr__13_s->pbfp, (void*)fld->name, ((LONGINT)(256)));
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, fld->adr);
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, fld->adr);
|
||||||
OPT_FPrintStr(fld->typ);
|
OPT_FPrintStr(fld->typ);
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, fld->typ->pbfp);
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, fld->typ->pbfp);
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pvfp, fld->typ->pvfp);
|
OPM_FPrint(&*FPrintStr__13_s->pvfp, fld->typ->pvfp);
|
||||||
} else {
|
} else {
|
||||||
FPrintHdFld__15(fld->typ, fld, fld->adr + adr);
|
FPrintHdFld__16(fld->typ, fld, fld->adr + adr);
|
||||||
}
|
}
|
||||||
fld = fld->link;
|
fld = fld->link;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void FPrintTProcs__17 (OPT_Object obj)
|
static void FPrintTProcs__18 (OPT_Object obj)
|
||||||
{
|
{
|
||||||
if (obj != NIL) {
|
if (obj != NIL) {
|
||||||
FPrintTProcs__17(obj->left);
|
FPrintTProcs__18(obj->left);
|
||||||
if (obj->mode == 13) {
|
if (obj->mode == 13) {
|
||||||
if (obj->vis != 0) {
|
if (obj->vis != 0) {
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, ((LONGINT)(13)));
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, ((LONGINT)(13)));
|
||||||
OPM_FPrint(&*FPrintStr__12_s->pbfp, __ASHR(obj->adr, 16));
|
OPM_FPrint(&*FPrintStr__13_s->pbfp, __ASHR(obj->adr, 16));
|
||||||
OPT_FPrintSign(&*FPrintStr__12_s->pbfp, obj->typ, obj->link);
|
OPT_FPrintSign(&*FPrintStr__13_s->pbfp, obj->typ, obj->link);
|
||||||
OPT_FPrintName(&*FPrintStr__12_s->pbfp, (void*)obj->name, ((LONGINT)(256)));
|
OPT_FPrintName(&*FPrintStr__13_s->pbfp, (void*)obj->name, ((LONGINT)(256)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FPrintTProcs__17(obj->right);
|
FPrintTProcs__18(obj->right);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -546,11 +548,11 @@ void OPT_FPrintStr (OPT_Struct typ)
|
||||||
OPT_Struct btyp = NIL;
|
OPT_Struct btyp = NIL;
|
||||||
OPT_Object strobj = NIL, bstrobj = NIL;
|
OPT_Object strobj = NIL, bstrobj = NIL;
|
||||||
LONGINT pbfp, pvfp;
|
LONGINT pbfp, pvfp;
|
||||||
struct FPrintStr__12 _s;
|
struct FPrintStr__13 _s;
|
||||||
_s.pbfp = &pbfp;
|
_s.pbfp = &pbfp;
|
||||||
_s.pvfp = &pvfp;
|
_s.pvfp = &pvfp;
|
||||||
_s.lnk = FPrintStr__12_s;
|
_s.lnk = FPrintStr__13_s;
|
||||||
FPrintStr__12_s = &_s;
|
FPrintStr__13_s = &_s;
|
||||||
if (!typ->fpdone) {
|
if (!typ->fpdone) {
|
||||||
OPT_IdFPrint(typ);
|
OPT_IdFPrint(typ);
|
||||||
pbfp = typ->idfp;
|
pbfp = typ->idfp;
|
||||||
|
|
@ -587,11 +589,11 @@ void OPT_FPrintStr (OPT_Struct typ)
|
||||||
OPM_FPrint(&pvfp, typ->align);
|
OPM_FPrint(&pvfp, typ->align);
|
||||||
OPM_FPrint(&pvfp, typ->n);
|
OPM_FPrint(&pvfp, typ->n);
|
||||||
OPT_nofhdfld = 0;
|
OPT_nofhdfld = 0;
|
||||||
FPrintFlds__13(typ->link, ((LONGINT)(0)), 1);
|
FPrintFlds__14(typ->link, ((LONGINT)(0)), 1);
|
||||||
if (OPT_nofhdfld > 2048) {
|
if (OPT_nofhdfld > 2048) {
|
||||||
OPM_Mark(225, typ->txtpos);
|
OPM_Mark(225, typ->txtpos);
|
||||||
}
|
}
|
||||||
FPrintTProcs__17(typ->link);
|
FPrintTProcs__18(typ->link);
|
||||||
OPM_FPrint(&pvfp, pbfp);
|
OPM_FPrint(&pvfp, pbfp);
|
||||||
strobj = typ->strobj;
|
strobj = typ->strobj;
|
||||||
if (strobj == NIL || strobj->name[0] == 0x00) {
|
if (strobj == NIL || strobj->name[0] == 0x00) {
|
||||||
|
|
@ -601,7 +603,7 @@ void OPT_FPrintStr (OPT_Struct typ)
|
||||||
typ->pbfp = pbfp;
|
typ->pbfp = pbfp;
|
||||||
typ->pvfp = pvfp;
|
typ->pvfp = pvfp;
|
||||||
}
|
}
|
||||||
FPrintStr__12_s = _s.lnk;
|
FPrintStr__13_s = _s.lnk;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OPT_FPrintObj (OPT_Object obj)
|
void OPT_FPrintObj (OPT_Object obj)
|
||||||
|
|
@ -1698,6 +1700,15 @@ static void OPT_EnterTyp (OPS_Name name, SHORTINT form, INTEGER size, OPT_Struct
|
||||||
*res = typ;
|
*res = typ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void OPT_EnterDerivedType (OPS_Name name, OPT_Struct typ, OPT_Object *obj)
|
||||||
|
{
|
||||||
|
OPS_Name name__copy;
|
||||||
|
__DUPARR(name, OPS_Name);
|
||||||
|
OPT_Insert(name, &*obj);
|
||||||
|
(*obj)->mode = 5;
|
||||||
|
(*obj)->typ = typ;
|
||||||
|
}
|
||||||
|
|
||||||
static void OPT_EnterProc (OPS_Name name, INTEGER num)
|
static void OPT_EnterProc (OPS_Name name, INTEGER num)
|
||||||
{
|
{
|
||||||
OPT_Object obj = NIL;
|
OPT_Object obj = NIL;
|
||||||
|
|
@ -1720,6 +1731,10 @@ static void EnumPtrs(void (*P)(void*))
|
||||||
P(OPT_inttyp);
|
P(OPT_inttyp);
|
||||||
P(OPT_linttyp);
|
P(OPT_linttyp);
|
||||||
P(OPT_ainttyp);
|
P(OPT_ainttyp);
|
||||||
|
P(OPT_int8typ);
|
||||||
|
P(OPT_int16typ);
|
||||||
|
P(OPT_int32typ);
|
||||||
|
P(OPT_int64typ);
|
||||||
P(OPT_realtyp);
|
P(OPT_realtyp);
|
||||||
P(OPT_lrltyp);
|
P(OPT_lrltyp);
|
||||||
P(OPT_settyp);
|
P(OPT_settyp);
|
||||||
|
|
@ -1727,6 +1742,7 @@ static void EnumPtrs(void (*P)(void*))
|
||||||
P(OPT_niltyp);
|
P(OPT_niltyp);
|
||||||
P(OPT_notyp);
|
P(OPT_notyp);
|
||||||
P(OPT_sysptrtyp);
|
P(OPT_sysptrtyp);
|
||||||
|
P(OPT_LIntObj);
|
||||||
__ENUMP(OPT_GlbMod, 64, P);
|
__ENUMP(OPT_GlbMod, 64, P);
|
||||||
P(OPT_universe);
|
P(OPT_universe);
|
||||||
P(OPT_syslink);
|
P(OPT_syslink);
|
||||||
|
|
@ -1790,13 +1806,17 @@ export void *OPT__init(void)
|
||||||
OPT_OpenScope(0, NIL);
|
OPT_OpenScope(0, NIL);
|
||||||
OPM_errpos = 0;
|
OPM_errpos = 0;
|
||||||
OPT_InitStruct(&OPT_undftyp, 0);
|
OPT_InitStruct(&OPT_undftyp, 0);
|
||||||
|
OPT_undftyp->BaseTyp = OPT_undftyp;
|
||||||
OPT_InitStruct(&OPT_notyp, 12);
|
OPT_InitStruct(&OPT_notyp, 12);
|
||||||
OPT_InitStruct(&OPT_stringtyp, 10);
|
OPT_InitStruct(&OPT_stringtyp, 10);
|
||||||
OPT_InitStruct(&OPT_niltyp, 11);
|
OPT_InitStruct(&OPT_niltyp, 11);
|
||||||
OPT_undftyp->BaseTyp = OPT_undftyp;
|
|
||||||
OPT_EnterTyp((CHAR*)"BYTE", 1, OPM_ByteSize, &OPT_bytetyp);
|
OPT_EnterTyp((CHAR*)"BYTE", 1, OPM_ByteSize, &OPT_bytetyp);
|
||||||
OPT_EnterTyp((CHAR*)"PTR", 13, OPM_PointerSize, &OPT_sysptrtyp);
|
OPT_EnterTyp((CHAR*)"PTR", 13, OPM_PointerSize, &OPT_sysptrtyp);
|
||||||
OPT_EnterTyp((CHAR*)"ADRINT", 5, OPM_LIntSize, &OPT_ainttyp);
|
OPT_EnterTyp((CHAR*)"ADRINT", 5, OPM_LIntSize, &OPT_ainttyp);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT8", 5, 1, &OPT_int8typ);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT16", 5, 2, &OPT_int16typ);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT32", 5, 4, &OPT_int32typ);
|
||||||
|
OPT_EnterTyp((CHAR*)"INT64", 5, 8, &OPT_int64typ);
|
||||||
OPT_EnterProc((CHAR*)"ADR", 20);
|
OPT_EnterProc((CHAR*)"ADR", 20);
|
||||||
OPT_EnterProc((CHAR*)"CC", 21);
|
OPT_EnterProc((CHAR*)"CC", 21);
|
||||||
OPT_EnterProc((CHAR*)"LSH", 22);
|
OPT_EnterProc((CHAR*)"LSH", 22);
|
||||||
|
|
@ -1820,6 +1840,7 @@ export void *OPT__init(void)
|
||||||
OPT_EnterTyp((CHAR*)"LONGINT", 6, OPM_LIntSize, &OPT_linttyp);
|
OPT_EnterTyp((CHAR*)"LONGINT", 6, OPM_LIntSize, &OPT_linttyp);
|
||||||
OPT_EnterTyp((CHAR*)"LONGREAL", 8, OPM_LRealSize, &OPT_lrltyp);
|
OPT_EnterTyp((CHAR*)"LONGREAL", 8, OPM_LRealSize, &OPT_lrltyp);
|
||||||
OPT_EnterTyp((CHAR*)"SHORTINT", 4, OPM_SIntSize, &OPT_sinttyp);
|
OPT_EnterTyp((CHAR*)"SHORTINT", 4, OPM_SIntSize, &OPT_sinttyp);
|
||||||
|
OPT_EnterDerivedType((CHAR*)"LINT", OPT_int64typ, &OPT_LIntObj);
|
||||||
OPT_EnterBoolConst((CHAR*)"FALSE", ((LONGINT)(0)));
|
OPT_EnterBoolConst((CHAR*)"FALSE", ((LONGINT)(0)));
|
||||||
OPT_EnterBoolConst((CHAR*)"TRUE", ((LONGINT)(1)));
|
OPT_EnterBoolConst((CHAR*)"TRUE", ((LONGINT)(1)));
|
||||||
OPT_EnterProc((CHAR*)"HALT", 0);
|
OPT_EnterProc((CHAR*)"HALT", 0);
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ typedef
|
||||||
|
|
||||||
import void (*OPT_typSize)(OPT_Struct);
|
import void (*OPT_typSize)(OPT_Struct);
|
||||||
import OPT_Object OPT_topScope;
|
import OPT_Object OPT_topScope;
|
||||||
import OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
import OPT_Struct OPT_undftyp, OPT_bytetyp, OPT_booltyp, OPT_chartyp, OPT_sinttyp, OPT_inttyp, OPT_linttyp, OPT_ainttyp, OPT_int8typ, OPT_int16typ, OPT_int32typ, OPT_int64typ, OPT_realtyp, OPT_lrltyp, OPT_settyp, OPT_stringtyp, OPT_niltyp, OPT_notyp, OPT_sysptrtyp;
|
||||||
import SHORTINT OPT_nofGmod;
|
import SHORTINT OPT_nofGmod;
|
||||||
import OPT_Object OPT_GlbMod[64];
|
import OPT_Object OPT_GlbMod[64];
|
||||||
import OPS_Name OPT_SelfName;
|
import OPS_Name OPT_SelfName;
|
||||||
|
|
|
||||||
|
|
@ -286,6 +286,10 @@ void OPV_AdrAndSize (OPT_Object topScope)
|
||||||
OPT_inttyp->strobj->linkadr = 2;
|
OPT_inttyp->strobj->linkadr = 2;
|
||||||
OPT_linttyp->strobj->linkadr = 2;
|
OPT_linttyp->strobj->linkadr = 2;
|
||||||
OPT_ainttyp->strobj->linkadr = 2;
|
OPT_ainttyp->strobj->linkadr = 2;
|
||||||
|
OPT_int8typ->strobj->linkadr = 2;
|
||||||
|
OPT_int16typ->strobj->linkadr = 2;
|
||||||
|
OPT_int32typ->strobj->linkadr = 2;
|
||||||
|
OPT_int64typ->strobj->linkadr = 2;
|
||||||
OPT_lrltyp->strobj->linkadr = 2;
|
OPT_lrltyp->strobj->linkadr = 2;
|
||||||
OPT_sinttyp->strobj->linkadr = 2;
|
OPT_sinttyp->strobj->linkadr = 2;
|
||||||
OPT_booltyp->strobj->linkadr = 2;
|
OPT_booltyp->strobj->linkadr = 2;
|
||||||
|
|
|
||||||
|
|
@ -82,7 +82,7 @@ static void Vishap_PropagateElementaryTypeSizes (void)
|
||||||
OPT_realtyp->size = OPM_RealSize;
|
OPT_realtyp->size = OPM_RealSize;
|
||||||
OPT_inttyp->size = OPM_IntSize;
|
OPT_inttyp->size = OPM_IntSize;
|
||||||
OPT_linttyp->size = OPM_LIntSize;
|
OPT_linttyp->size = OPM_LIntSize;
|
||||||
OPT_ainttyp->size = OPM_LIntSize;
|
OPT_ainttyp->size = OPM_PointerSize;
|
||||||
OPT_lrltyp->size = OPM_LRealSize;
|
OPT_lrltyp->size = OPM_LRealSize;
|
||||||
OPT_sinttyp->size = OPM_SIntSize;
|
OPT_sinttyp->size = OPM_SIntSize;
|
||||||
OPT_booltyp->size = OPM_BoolSize;
|
OPT_booltyp->size = OPM_BoolSize;
|
||||||
|
|
|
||||||
|
|
@ -128,6 +128,10 @@ MODULE OPC; (* copyright (c) J. Templ 12.7.95 / 3.7.96 *)
|
||||||
OPM.Write('_')
|
OPM.Write('_')
|
||||||
ELSIF (obj = OPT.sysptrtyp^.strobj)
|
ELSIF (obj = OPT.sysptrtyp^.strobj)
|
||||||
OR (obj = OPT.ainttyp^.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
|
OR (obj = OPT.bytetyp^.strobj) THEN
|
||||||
OPM.WriteString("SYSTEM_")
|
OPM.WriteString("SYSTEM_")
|
||||||
END;
|
END;
|
||||||
|
|
|
||||||
|
|
@ -156,9 +156,12 @@ VAR
|
||||||
bytetyp*, booltyp*, chartyp*,
|
bytetyp*, booltyp*, chartyp*,
|
||||||
sinttyp*, inttyp*, linttyp*,
|
sinttyp*, inttyp*, linttyp*,
|
||||||
ainttyp*,
|
ainttyp*,
|
||||||
|
int8typ*, int16typ*, int32typ*, int64typ*,
|
||||||
realtyp*, lrltyp*, settyp*, stringtyp*,
|
realtyp*, lrltyp*, settyp*, stringtyp*,
|
||||||
niltyp*, notyp*, sysptrtyp*: Struct;
|
niltyp*, notyp*, sysptrtyp*: Struct;
|
||||||
|
|
||||||
|
LIntObj: Object;
|
||||||
|
|
||||||
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) *)
|
||||||
|
|
||||||
|
|
@ -1135,6 +1138,13 @@ END Import;
|
||||||
typ^.idfp := form; typ^.idfpdone := TRUE; res := typ
|
typ^.idfp := form; typ^.idfpdone := TRUE; res := typ
|
||||||
END EnterTyp;
|
END EnterTyp;
|
||||||
|
|
||||||
|
PROCEDURE EnterDerivedType(name: OPS.Name; typ: Struct; VAR obj: Object);
|
||||||
|
BEGIN
|
||||||
|
Insert(name, obj);
|
||||||
|
obj.mode := Typ;
|
||||||
|
obj.typ := typ;
|
||||||
|
END EnterDerivedType;
|
||||||
|
|
||||||
PROCEDURE EnterProc(name: OPS.Name; num: INTEGER);
|
PROCEDURE EnterProc(name: OPS.Name; num: INTEGER);
|
||||||
VAR obj: Object;
|
VAR obj: Object;
|
||||||
BEGIN Insert(name, obj);
|
BEGIN Insert(name, obj);
|
||||||
|
|
@ -1142,14 +1152,19 @@ END Import;
|
||||||
END EnterProc;
|
END EnterProc;
|
||||||
|
|
||||||
BEGIN topScope := NIL; OpenScope(0, NIL); OPM.errpos := 0;
|
BEGIN topScope := NIL; OpenScope(0, NIL); OPM.errpos := 0;
|
||||||
InitStruct(undftyp, Undef); InitStruct(notyp, NoTyp);
|
InitStruct(undftyp, Undef); undftyp^.BaseTyp := undftyp;
|
||||||
InitStruct(stringtyp, String); InitStruct(niltyp, NilTyp);
|
InitStruct(notyp, NoTyp);
|
||||||
undftyp^.BaseTyp := undftyp;
|
InitStruct(stringtyp, String);
|
||||||
|
InitStruct(niltyp, NilTyp);
|
||||||
|
|
||||||
(*initialization of module SYSTEM*)
|
(*initialization of module SYSTEM*)
|
||||||
EnterTyp("BYTE", Byte, OPM.ByteSize, bytetyp);
|
EnterTyp("BYTE", Byte, OPM.ByteSize, bytetyp);
|
||||||
EnterTyp("PTR", Pointer, OPM.PointerSize, sysptrtyp);
|
EnterTyp("PTR", Pointer, OPM.PointerSize, sysptrtyp);
|
||||||
EnterTyp("ADRINT", Int, OPM.LIntSize, ainttyp);
|
EnterTyp("ADRINT", Int, OPM.LIntSize, ainttyp);
|
||||||
|
EnterTyp("INT8", Int, 1, int8typ);
|
||||||
|
EnterTyp("INT16", Int, 2, int16typ);
|
||||||
|
EnterTyp("INT32", Int, 4, int32typ);
|
||||||
|
EnterTyp("INT64", Int, 8, int64typ);
|
||||||
EnterProc("ADR", adrfn);
|
EnterProc("ADR", adrfn);
|
||||||
EnterProc("CC", ccfn);
|
EnterProc("CC", ccfn);
|
||||||
EnterProc("LSH", lshfn);
|
EnterProc("LSH", lshfn);
|
||||||
|
|
@ -1174,6 +1189,10 @@ BEGIN topScope := NIL; OpenScope(0, NIL); OPM.errpos := 0;
|
||||||
EnterTyp("LONGREAL", LReal, OPM.LRealSize, lrltyp);
|
EnterTyp("LONGREAL", LReal, OPM.LRealSize, lrltyp);
|
||||||
EnterTyp("SHORTINT", SInt, OPM.SIntSize, sinttyp);
|
EnterTyp("SHORTINT", SInt, OPM.SIntSize, sinttyp);
|
||||||
|
|
||||||
|
(* Create LINT type as TYPE LINT = SYSTEM.INT64 *)
|
||||||
|
EnterDerivedType("LINT", int64typ, LIntObj);
|
||||||
|
|
||||||
|
|
||||||
EnterBoolConst("FALSE", 0); (* 0 and 1 are compiler internal representation only *)
|
EnterBoolConst("FALSE", 0); (* 0 and 1 are compiler internal representation only *)
|
||||||
EnterBoolConst("TRUE", 1);
|
EnterBoolConst("TRUE", 1);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -206,6 +206,10 @@ MODULE OPV; (* J. Templ 16.2.95 / 3.7.96
|
||||||
OPT.inttyp^.strobj^.linkadr := PredefinedType;
|
OPT.inttyp^.strobj^.linkadr := PredefinedType;
|
||||||
OPT.linttyp^.strobj^.linkadr := PredefinedType;
|
OPT.linttyp^.strobj^.linkadr := PredefinedType;
|
||||||
OPT.ainttyp^.strobj^.linkadr := PredefinedType;
|
OPT.ainttyp^.strobj^.linkadr := PredefinedType;
|
||||||
|
OPT.int8typ^.strobj^.linkadr := PredefinedType;
|
||||||
|
OPT.int16typ^.strobj^.linkadr := PredefinedType;
|
||||||
|
OPT.int32typ^.strobj^.linkadr := PredefinedType;
|
||||||
|
OPT.int64typ^.strobj^.linkadr := PredefinedType;
|
||||||
OPT.lrltyp^.strobj^.linkadr := PredefinedType;
|
OPT.lrltyp^.strobj^.linkadr := PredefinedType;
|
||||||
OPT.sinttyp^.strobj^.linkadr := PredefinedType;
|
OPT.sinttyp^.strobj^.linkadr := PredefinedType;
|
||||||
OPT.booltyp^.strobj^.linkadr := PredefinedType;
|
OPT.booltyp^.strobj^.linkadr := PredefinedType;
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ MODULE Vishap; (* J. Templ 3.2.95 *)
|
||||||
OPT.realtyp.size := OPM.RealSize;
|
OPT.realtyp.size := OPM.RealSize;
|
||||||
OPT.inttyp.size := OPM.IntSize;
|
OPT.inttyp.size := OPM.IntSize;
|
||||||
OPT.linttyp.size := OPM.LIntSize;
|
OPT.linttyp.size := OPM.LIntSize;
|
||||||
OPT.ainttyp.size := OPM.LIntSize;
|
OPT.ainttyp.size := OPM.PointerSize;
|
||||||
OPT.lrltyp.size := OPM.LRealSize;
|
OPT.lrltyp.size := OPM.LRealSize;
|
||||||
OPT.sinttyp.size := OPM.SIntSize;
|
OPT.sinttyp.size := OPM.SIntSize;
|
||||||
OPT.booltyp.size := OPM.BoolSize;
|
OPT.booltyp.size := OPM.BoolSize;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue