Added handling of new expression opcodes.
git-svn-id: svn://svn.cc65.org/cc65/trunk@5411 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -409,6 +409,12 @@ long GetExprVal (ExprNode* Expr)
|
|||||||
case EXPR_WORD1:
|
case EXPR_WORD1:
|
||||||
return (GetExprVal (Expr->Left) >> 16) & 0xFFFF;
|
return (GetExprVal (Expr->Left) >> 16) & 0xFFFF;
|
||||||
|
|
||||||
|
case EXPR_FARADDR:
|
||||||
|
return GetExprVal (Expr->Left) & 0xFFFFFF;
|
||||||
|
|
||||||
|
case EXPR_DWORD:
|
||||||
|
return GetExprVal (Expr->Left) & 0xFFFFFFFF;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Internal ("Unknown expression Op type: %u", Expr->Op);
|
Internal ("Unknown expression Op type: %u", Expr->Op);
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* (C) 1999-2011, Ullrich von Bassewitz */
|
/* (C) 1999-2012, Ullrich von Bassewitz */
|
||||||
/* Roemerstrasse 52 */
|
/* Roemerstrasse 52 */
|
||||||
/* D-70794 Filderstadt */
|
/* D-70794 Filderstadt */
|
||||||
/* EMail: uz@cc65.org */
|
/* EMail: uz@cc65.org */
|
||||||
@@ -629,9 +629,10 @@ static unsigned O65WriteExpr (ExprNode* E, int Signed, unsigned Size,
|
|||||||
|
|
||||||
/* Determine the expression to relocate */
|
/* Determine the expression to relocate */
|
||||||
Expr = E;
|
Expr = E;
|
||||||
if (E->Op == EXPR_BYTE0 || E->Op == EXPR_BYTE1 ||
|
if (E->Op == EXPR_BYTE0 || E->Op == EXPR_BYTE1 ||
|
||||||
E->Op == EXPR_BYTE2 || E->Op == EXPR_BYTE3 ||
|
E->Op == EXPR_BYTE2 || E->Op == EXPR_BYTE3 ||
|
||||||
E->Op == EXPR_WORD0 || E->Op == EXPR_WORD1) {
|
E->Op == EXPR_WORD0 || E->Op == EXPR_WORD1 ||
|
||||||
|
E->Op == EXPR_FARADDR || E->Op == EXPR_DWORD) {
|
||||||
/* Use the real expression */
|
/* Use the real expression */
|
||||||
Expr = E->Left;
|
Expr = E->Left;
|
||||||
}
|
}
|
||||||
@@ -674,6 +675,8 @@ static unsigned O65WriteExpr (ExprNode* E, int Signed, unsigned Size,
|
|||||||
case EXPR_BYTE3: BinVal = (BinVal >> 24) & 0xFF; break;
|
case EXPR_BYTE3: BinVal = (BinVal >> 24) & 0xFF; break;
|
||||||
case EXPR_WORD0: BinVal &= 0xFFFF; break;
|
case EXPR_WORD0: BinVal &= 0xFFFF; break;
|
||||||
case EXPR_WORD1: BinVal = (BinVal >> 16) & 0xFFFF; break;
|
case EXPR_WORD1: BinVal = (BinVal >> 16) & 0xFFFF; break;
|
||||||
|
case EXPR_FARADDR: BinVal &= 0xFFFFFFUL; break;
|
||||||
|
case EXPR_DWORD: BinVal &= 0xFFFFFFFFUL; break;
|
||||||
}
|
}
|
||||||
WriteVal (D->F, BinVal, Size);
|
WriteVal (D->F, BinVal, Size);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user