int am0; // Addressing mode
int a0reg; // Register
TOKEN a0expr[EXPRSIZE]; // Expression
-uint32_t a0exval; // Expression's value
+uint64_t a0exval; // Expression's value
WORD a0exattr; // Expression's attribute
int a0ixreg; // Index register
int a0ixsiz; // Index register size (and scale)
TOKEN a0oexpr[EXPRSIZE]; // Outer displacement expression
-uint32_t a0oexval; // Outer displacement value
+uint64_t a0oexval; // Outer displacement value
WORD a0oexattr; // Outer displacement attribute
SYM * a0esym; // External symbol involved in expr
TOKEN a0bexpr[EXPRSIZE]; // Base displacement expression
-uint32_t a0bexval; // Base displacement value
+uint64_t a0bexval; // Base displacement value
WORD a0bexattr; // Base displacement attribute
WORD a0bsize; // Base displacement size
WORD a0extension; // 020+ extension address word
int am1; // Addressing mode
int a1reg; // Register
TOKEN a1expr[EXPRSIZE]; // Expression
-uint32_t a1exval; // Expression's value
+uint64_t a1exval; // Expression's value
WORD a1exattr; // Expression's attribute
int a1ixreg; // Index register
int a1ixsiz; // Index register size (and scale)
TOKEN a1oexpr[EXPRSIZE]; // Outer displacement expression
-uint32_t a1oexval; // Outer displacement value
+uint64_t a1oexval; // Outer displacement value
WORD a1oexattr; // Outer displacement attribute
SYM * a1esym; // External symbol involved in expr
TOKEN a1bexpr[EXPRSIZE]; // Base displacement expression
-uint32_t a1bexval; // Base displacement value
+uint64_t a1bexval; // Base displacement value
WORD a1bexattr; // Base displacement attribute
WORD a1bsize; // Base displacement size
WORD a1extension; // 020+ extension address word
int bfval1; //bfxxx / fmove value 1
int bfval2; //bfxxx / fmove value 2
TOKEN bf0expr[EXPRSIZE]; // Expression
-uint32_t bf0exval; // Expression's value
+uint64_t bf0exval; // Expression's value
WORD bf0exattr; // Expression's attribute
SYM * bf0esym; // External symbol involved in expr
a0exattr = a0oexattr = a1exattr = a1oexattr = 0;
a0esym = a1esym = NULL;
a0bexpr[0] = a1bexpr[0] = ENDEXPR;
- a0bexval = a0bsize = a0extension = a1bexval = a1bsize = a1extension = 0;
+ a0bexval = a1bexval = 0;
+ a0bsize = a0extension = a1bsize = a1extension = 0;
am0_030 = am1_030 = 0;
bfparam1 = bfparam2 = 0;
bf0expr[0] = ENDEXPR;
if (*tok == CONST)
{
tok++;
- bfval1 = *(int *)tok;
+ bfval1 = (int)*(uint64_t *)tok;
// Do=0, offset=immediate - shift it to place
bfparam1 = (0 << 11);
tok++;
+ tok++;
}
else if (*tok == SYMBOL)
{
if (!(bf0exattr & DEFINED))
return error("bfxxx offset: immediate value must evaluate");
- bfval1 = bf0exval;
+ bfval1 = (int)bf0exval;
// Do=0, offset=immediate - shift it to place
bfparam1 = (0 << 11);
if (*tok == CONST)
{
tok++;
- bfval2 = *(int *)tok;
+ bfval2 = (int)*(uint64_t *)tok;
// Do=0, offset=immediate - shift it to place
bfparam2 = (0 << 5);
tok++;
+ tok++;
}
else if (*tok == SYMBOL)
{
if (expr(bf0expr, &bf0exval, &bf0exattr, &bf0esym) != OK)
return ERROR;
- bfval2 = bf0exval;
+ bfval2 = (int)bf0exval;
if (!(bf0exattr & DEFINED))
return error("bfxxx width: immediate value must evaluate");