mirror of
https://github.com/cc65/cc65.git
synced 2025-04-08 03:37:13 +00:00
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:
parent
75b83260c6
commit
772d51aa5e
@ -408,6 +408,12 @@ long GetExprVal (ExprNode* Expr)
|
||||
|
||||
case EXPR_WORD1:
|
||||
return (GetExprVal (Expr->Left) >> 16) & 0xFFFF;
|
||||
|
||||
case EXPR_FARADDR:
|
||||
return GetExprVal (Expr->Left) & 0xFFFFFF;
|
||||
|
||||
case EXPR_DWORD:
|
||||
return GetExprVal (Expr->Left) & 0xFFFFFFFF;
|
||||
|
||||
default:
|
||||
Internal ("Unknown expression Op type: %u", Expr->Op);
|
||||
|
@ -6,7 +6,7 @@
|
||||
/* */
|
||||
/* */
|
||||
/* */
|
||||
/* (C) 1999-2011, Ullrich von Bassewitz */
|
||||
/* (C) 1999-2012, Ullrich von Bassewitz */
|
||||
/* Roemerstrasse 52 */
|
||||
/* D-70794 Filderstadt */
|
||||
/* EMail: uz@cc65.org */
|
||||
@ -629,9 +629,10 @@ static unsigned O65WriteExpr (ExprNode* E, int Signed, unsigned Size,
|
||||
|
||||
/* Determine the expression to relocate */
|
||||
Expr = E;
|
||||
if (E->Op == EXPR_BYTE0 || E->Op == EXPR_BYTE1 ||
|
||||
E->Op == EXPR_BYTE2 || E->Op == EXPR_BYTE3 ||
|
||||
E->Op == EXPR_WORD0 || E->Op == EXPR_WORD1) {
|
||||
if (E->Op == EXPR_BYTE0 || E->Op == EXPR_BYTE1 ||
|
||||
E->Op == EXPR_BYTE2 || E->Op == EXPR_BYTE3 ||
|
||||
E->Op == EXPR_WORD0 || E->Op == EXPR_WORD1 ||
|
||||
E->Op == EXPR_FARADDR || E->Op == EXPR_DWORD) {
|
||||
/* Use the real expression */
|
||||
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_WORD0: BinVal &= 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);
|
||||
|
||||
@ -846,7 +849,7 @@ static void O65WriteBssSeg (O65Desc* D)
|
||||
/* Initialize variables */
|
||||
D->CurReloc = 0;
|
||||
|
||||
/* Dump all bss segments */
|
||||
/* Dump all bss segments */
|
||||
O65WriteSeg (D, D->BssSeg, D->BssCount, 0);
|
||||
|
||||
/* Set the size of the segment */
|
||||
|
Loading…
x
Reference in New Issue
Block a user