Started to add a new .BANK instruction that allows access to a memory area
attribute named "bank". Some error checks and a lot of testing is required. Don't use for now. git-svn-id: svn://svn.cc65.org/cc65/trunk@5375 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
@@ -1095,6 +1095,33 @@ static void StudyBoolNot (ExprNode* Expr, ExprDesc* D)
|
||||
|
||||
|
||||
|
||||
static void StudyBank (ExprNode* Expr, ExprDesc* D)
|
||||
/* Study an EXPR_BANK expression node */
|
||||
{
|
||||
/* Get the section reference */
|
||||
ED_SecRef* SecRef = ED_GetSecRef (D, Expr->V.SecNum);
|
||||
|
||||
/* Update the data and the address size */
|
||||
++SecRef->Count;
|
||||
|
||||
/* The expression is always linker evaluated, so invalidate it */
|
||||
ED_Invalidate (D);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void StudyBankRaw (ExprNode* Expr, ExprDesc* D)
|
||||
/* Study an EXPR_BANKRAW expression node */
|
||||
{
|
||||
/* Study the expression extracting section references */
|
||||
StudyExprInternal (Expr->Left, D);
|
||||
|
||||
/* The expression is always linker evaluated, so invalidate it */
|
||||
ED_Invalidate (D);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void StudyByte0 (ExprNode* Expr, ExprDesc* D)
|
||||
/* Study an EXPR_BYTE0 expression node */
|
||||
{
|
||||
@@ -1231,6 +1258,10 @@ static void StudyExprInternal (ExprNode* Expr, ExprDesc* D)
|
||||
StudyULabel (Expr, D);
|
||||
break;
|
||||
|
||||
case EXPR_BANK:
|
||||
StudyBank (Expr, D);
|
||||
break;
|
||||
|
||||
case EXPR_PLUS:
|
||||
StudyPlus (Expr, D);
|
||||
break;
|
||||
@@ -1331,6 +1362,10 @@ static void StudyExprInternal (ExprNode* Expr, ExprDesc* D)
|
||||
StudyBoolNot (Expr, D);
|
||||
break;
|
||||
|
||||
case EXPR_BANKRAW:
|
||||
StudyBankRaw (Expr, D);
|
||||
break;
|
||||
|
||||
case EXPR_BYTE0:
|
||||
StudyByte0 (Expr, D);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user