mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 13:22:26 +00:00
Support 64 bit integer literals on all builds, and fix 64 bit Console.hex display.
This commit is contained in:
parent
7fad168e40
commit
dc699db9f5
199 changed files with 478 additions and 477 deletions
|
|
@ -1,4 +1,4 @@
|
|||
/* voc 1.95 [2016/09/14] for gcc LP64 on cygwin tspkaSfF */
|
||||
/* voc 1.95 [2016/09/15] for gcc LP64 on cygwin tspkaSfF */
|
||||
|
||||
#define INTEGER int16
|
||||
#define LONGINT int32
|
||||
|
|
@ -17,7 +17,7 @@ typedef
|
|||
export OPS_Name OPS_name;
|
||||
export OPS_String OPS_str;
|
||||
export int16 OPS_numtyp;
|
||||
export int32 OPS_intval;
|
||||
export int64 OPS_intval;
|
||||
export REAL OPS_realval;
|
||||
export LONGREAL OPS_lrlval;
|
||||
static CHAR OPS_ch;
|
||||
|
|
@ -132,7 +132,7 @@ static int16 Ord__7 (CHAR ch, BOOLEAN hex)
|
|||
|
||||
static void OPS_Number (void)
|
||||
{
|
||||
int16 i, m, n, d, e, maxHdig;
|
||||
int16 i, m, n, d, e;
|
||||
CHAR dig[24];
|
||||
LONGREAL f;
|
||||
CHAR expCh;
|
||||
|
|
@ -178,7 +178,7 @@ static void OPS_Number (void)
|
|||
OPS_numtyp = 1;
|
||||
if (n <= 2) {
|
||||
while (i < n) {
|
||||
OPS_intval = __ASHL(OPS_intval, 4) + Ord__7(dig[i], 1);
|
||||
OPS_intval = __ASHL(OPS_intval, 4) + (int64)Ord__7(dig[i], 1);
|
||||
i += 1;
|
||||
}
|
||||
} else {
|
||||
|
|
@ -187,13 +187,12 @@ static void OPS_Number (void)
|
|||
} else if (OPS_ch == 'H') {
|
||||
OPM_Get(&OPS_ch);
|
||||
OPS_numtyp = 2;
|
||||
maxHdig = 8;
|
||||
if (n <= maxHdig) {
|
||||
if ((n == maxHdig && dig[0] > '7')) {
|
||||
if (n <= 16) {
|
||||
if ((n == 16 && dig[0] > '7')) {
|
||||
OPS_intval = -1;
|
||||
}
|
||||
while (i < n) {
|
||||
OPS_intval = __ASHL(OPS_intval, 4) + Ord__7(dig[i], 1);
|
||||
OPS_intval = __ASHL(OPS_intval, 4) + (int64)Ord__7(dig[i], 1);
|
||||
i += 1;
|
||||
}
|
||||
} else {
|
||||
|
|
@ -204,8 +203,8 @@ static void OPS_Number (void)
|
|||
while (i < n) {
|
||||
d = Ord__7(dig[i], 0);
|
||||
i += 1;
|
||||
if (OPS_intval <= __DIV(2147483647 - d, 10)) {
|
||||
OPS_intval = OPS_intval * 10 + d;
|
||||
if (OPS_intval <= (int64)__DIV(9223372036854775807 - d, 10)) {
|
||||
OPS_intval = OPS_intval * 10 + (int64)d;
|
||||
} else {
|
||||
OPS_err(203);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue