]> git.sur5r.net Git - cc65/commitdiff
New function GenAddExpr
authorcuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 14 Nov 2003 08:44:12 +0000 (08:44 +0000)
committercuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 14 Nov 2003 08:44:12 +0000 (08:44 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@2664 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/ca65/expr.c
src/ca65/expr.h

index 9d44261912e783da92fd41e2cd0c572703c3ea45..b0eb0503c9ad351238be66bad8319d9312f72351 100644 (file)
@@ -1641,6 +1641,17 @@ static ExprNode* GenSectionExpr (unsigned SegNum)
 
 
 
+ExprNode* GenAddExpr (ExprNode* Left, ExprNode* Right)
+/* Generate an addition from the two operands */
+{
+    ExprNode* Root = NewExprNode (EXPR_PLUS);
+    Root->Left = Left;
+    Root->Right = Right;
+    return Root;
+}
+
+
+
 ExprNode* GenCurrentPC (void)
 /* Return the current program counter as expression */
 {
@@ -1648,9 +1659,8 @@ ExprNode* GenCurrentPC (void)
 
     if (RelocMode) {
        /* Create SegmentBase + Offset */
-       Root = NewExprNode (EXPR_PLUS);
-       Root->Left  = GenSectionExpr (GetCurrentSegNum ());
-       Root->Right = GenLiteralExpr (GetPC ());
+               Root = GenAddExpr (GenSectionExpr (GetCurrentSegNum ()),
+                           GenLiteralExpr (GetPC ()));
     } else {
        /* Absolute mode, just return PC value */
        Root = GenLiteralExpr (GetPC ());
index 2edff0e1d117a4b1a1f24ee497e11bea53b7ab53..91ccbadb57edd8eaa6593be86707be307cbd7fa3 100644 (file)
@@ -69,6 +69,9 @@ ExprNode* GenLiteralExpr (long Val);
 ExprNode* GenSymExpr (struct SymEntry* Sym);
 /* Return an expression node that encodes the given symbol */
 
+ExprNode* GenAddExpr (ExprNode* Left, ExprNode* Right);
+/* Generate an addition from the two operands */
+
 ExprNode* GenCurrentPC (void);
 /* Return the current program counter as expression */