Rev 9847 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 9847 | Rev 9893 | ||
---|---|---|---|
Line 1... | Line 1... | ||
1 | (* |
1 | (* |
2 | BSD 2-Clause License |
2 | BSD 2-Clause License |
Line 3... | Line 3... | ||
3 | 3 | ||
4 | Copyright (c) 2018-2022, Anton Krotov |
4 | Copyright (c) 2018-2023, Anton Krotov |
5 | All rights reserved. |
5 | All rights reserved. |
Line 6... | Line 6... | ||
6 | *) |
6 | *) |
Line 39... | Line 39... | ||
39 | sysMOVE* = 27; stLENGTH* = 28; stMIN* = 29; stMAX* = 30; |
39 | sysMOVE* = 27; stLENGTH* = 28; stMIN* = 29; stMAX* = 30; |
40 | sysSADR* = 31; sysTYPEID* = 32; sysCOPY* = 33; sysINF* = 34; |
40 | sysSADR* = 31; sysTYPEID* = 32; sysCOPY* = 33; sysINF* = 34; |
41 | sysPUT8* = 35; sysPUT16* = 36; stCOPY* = 37; stWCHR* = 38; |
41 | sysPUT8* = 35; sysPUT16* = 36; stCOPY* = 37; stWCHR* = 38; |
42 | sysWSADR* = 39; sysPUT32* = 40; (*sysNOP* = 41; sysEINT* = 42; |
42 | sysWSADR* = 39; sysPUT32* = 40; (*sysNOP* = 41; sysEINT* = 42; |
43 | sysDINT* = 43;*)sysGET8* = 44; sysGET16* = 45; sysGET32* = 46; |
43 | sysDINT* = 43;*)sysGET8* = 44; sysGET16* = 45; sysGET32* = 46; |
- | 44 | sysVAL* = 47; |
|
Line 44... | Line 45... | ||
44 | 45 | ||
45 | default32* = 2; _default32* = default32 + 1; |
46 | default32* = 2; _default32* = default32 + 1; |
46 | stdcall* = 4; _stdcall* = stdcall + 1; |
47 | stdcall* = 4; _stdcall* = stdcall + 1; |
47 | cdecl* = 6; _cdecl* = cdecl + 1; |
48 | cdecl* = 6; _cdecl* = cdecl + 1; |
Line 237... | Line 238... | ||
237 | END NewIdent; |
238 | END NewIdent; |
Line 238... | Line 239... | ||
238 | 239 | ||
239 | 240 | ||
240 | PROCEDURE getOffset* (varIdent: IDENT): INTEGER; |
241 | PROCEDURE getOffset* (varIdent: IDENT): INTEGER; |
Line 241... | Line 242... | ||
241 | VAR |
242 | VAR |
242 | size: INTEGER; |
243 | size, glob_align: INTEGER; |
243 | 244 | ||
244 | BEGIN |
245 | BEGIN |
- | 246 | IF varIdent.offset = -1 THEN |
|
- | 247 | size := varIdent._type.size; |
|
- | 248 | IF varIdent.global THEN |
|
- | 249 | IF TARGETS.WinLin THEN |
|
- | 250 | glob_align := 16 |
|
245 | IF varIdent.offset = -1 THEN |
251 | ELSE |
246 | size := varIdent._type.size; |
252 | glob_align := varIdent._type.align |
247 | IF varIdent.global THEN |
253 | END; |
248 | IF UTILS.Align(program.bss, varIdent._type.align) THEN |
254 | IF UTILS.Align(program.bss, glob_align) THEN |
249 | IF UTILS.maxint - program.bss >= size THEN |
255 | IF UTILS.maxint - program.bss >= size THEN |
250 | varIdent.offset := program.bss; |
256 | varIdent.offset := program.bss; |
Line 1107... | Line 1113... | ||
1107 | EnterProc(unit, "get8", idSYSPROC, sysGET8); |
1113 | EnterProc(unit, "get8", idSYSPROC, sysGET8); |
1108 | EnterProc(unit, "put", idSYSPROC, sysPUT); |
1114 | EnterProc(unit, "put", idSYSPROC, sysPUT); |
1109 | EnterProc(unit, "put8", idSYSPROC, sysPUT8); |
1115 | EnterProc(unit, "put8", idSYSPROC, sysPUT8); |
1110 | EnterProc(unit, "code", idSYSPROC, sysCODE); |
1116 | EnterProc(unit, "code", idSYSPROC, sysCODE); |
1111 | EnterProc(unit, "move", idSYSPROC, sysMOVE); |
1117 | EnterProc(unit, "move", idSYSPROC, sysMOVE); |
- | 1118 | EnterProc(unit, "val", idSYSPROC, sysVAL); |
|
1112 | (* |
1119 | (* |
1113 | IF program.target.sys = mConst.Target_iMSP430 THEN |
1120 | IF program.target.sys = mConst.Target_iMSP430 THEN |
1114 | EnterProc(unit, "nop", idSYSPROC, sysNOP); |
1121 | EnterProc(unit, "nop", idSYSPROC, sysNOP); |
1115 | EnterProc(unit, "eint", idSYSPROC, sysEINT); |
1122 | EnterProc(unit, "eint", idSYSPROC, sysEINT); |
1116 | EnterProc(unit, "dint", idSYSPROC, sysDINT) |
1123 | EnterProc(unit, "dint", idSYSPROC, sysDINT) |
Line 1254... | Line 1261... | ||
1254 | program.stTypes.tCARD32.align := 4 |
1261 | program.stTypes.tCARD32.align := 4 |
1255 | END; |
1262 | END; |
Line 1256... | Line 1263... | ||
1256 | 1263 | ||
1257 | IF TARGETS.RealSize # 0 THEN |
1264 | IF TARGETS.RealSize # 0 THEN |
- | 1265 | program.stTypes.tREAL := enterType(tREAL, TARGETS.RealSize, 0, NIL); |
|
- | 1266 | IF TARGETS.OS = TARGETS.osLINUX32 THEN |
|
- | 1267 | program.stTypes.tREAL.align := 4 |
|
1258 | program.stTypes.tREAL := enterType(tREAL, TARGETS.RealSize, 0, NIL); |
1268 | ELSE |
- | 1269 | program.stTypes.tREAL.align := TARGETS.RealSize |
|
1259 | program.stTypes.tREAL.align := TARGETS.RealSize |
1270 | END |
Line 1260... | Line 1271... | ||
1260 | END; |
1271 | END; |
1261 | 1272 | ||
1262 | program.stTypes.tSTRING := enterType(tSTRING, TARGETS.WordSize, 0, NIL); |
1273 | program.stTypes.tSTRING := enterType(tSTRING, TARGETS.WordSize, 0, NIL); |