]> git.sur5r.net Git - cc65/commitdiff
Fixed wrong code generation in g_leasp.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 4 Sep 2009 20:57:23 +0000 (20:57 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Fri, 4 Sep 2009 20:57:23 +0000 (20:57 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@4118 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/codegen.c

index 2f67a07fcce5bc338c8f05f6032543268a3ca470..76077ab30655f1bd9367dfdddf6547fd7a063b0f 100644 (file)
@@ -929,13 +929,15 @@ void g_getind (unsigned Flags, unsigned Offs)
 void g_leasp (int Offs)
 /* Fetch the address of the specified symbol into the primary register */
 {
-    /* Get low and high byte */
-    unsigned char Lo = (unsigned char) Offs;
-    unsigned char Hi = (unsigned char) (Offs >> 8);
+    unsigned char Lo, Hi;              
 
     /* Calculate the offset relative to sp */
     Offs -= StackPtr;
 
+    /* Get low and high byte */
+    Lo = (unsigned char) Offs;
+    Hi = (unsigned char) (Offs >> 8);
+
     /* Generate code */
     if (Lo == 0) {
         if (Hi <= 3) {
@@ -977,10 +979,10 @@ void g_leasp (int Offs)
         /* Full 16 bit offset inlined */
         AddCodeLine ("lda sp");
         AddCodeLine ("clc");
-        AddCodeLine ("adc #$%02X", (unsigned char) Offs);
+        AddCodeLine ("adc #$%02X", Lo);
         AddCodeLine ("pha");
         AddCodeLine ("lda sp+1");
-        AddCodeLine ("adc #$%02X", (unsigned char) (Offs >> 8));
+        AddCodeLine ("adc #$%02X", Hi);
         AddCodeLine ("tax");
         AddCodeLine ("pla");
     }