* src/mcs51/gen.c (aopPut): use direct name for pushing registers
authorMaartenBrock <MaartenBrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 7 Feb 2007 17:10:27 +0000 (17:10 +0000)
committerMaartenBrock <MaartenBrock@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Wed, 7 Feb 2007 17:10:27 +0000 (17:10 +0000)
* src/SDCCmain.c (parseCmdLine): dbuf_s path must be initialised

git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4624 4a8a32a2-be11-0410-ad9d-d568d2c75423

ChangeLog
src/SDCCmain.c
src/mcs51/gen.c

index 9cfd23d41fce29ac19c9d5787f30e03060fa89ce..80c171bd314c94670e7150c9a97f979629d3e662 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-02-07 Maarten Brock <sourceforge.brock AT dse.nl>
+
+       * src/mcs51/gen.c (aopPut): use direct name for pushing registers
+       * src/SDCCmain.c (parseCmdLine): dbuf_s path must be initialised
+
 2007-02-07 Raphael Neider <rneider AT web.de>
 
        * src/pic16/devices.inc,
index 76a12b73d6ea7fa086a7052c3e1783085e0406c9..6e626c8bb3fa6fb52c2dd8211f5b142a2c96a726 100644 (file)
@@ -1403,8 +1403,9 @@ parseCmdLine (int argc, char **argv)
         {
           struct dbuf_s path;
 
-          if (*dstPath != '\0')
+                 if (*dstPath != '\0')
             {
+              dbuf_init(&path, 128);
               dbuf_makePath (&path, dstPath, moduleNameBase);
               dbuf_c_str (&path);
               dstFileName = dbuf_detach (&path);
index a2841f70701081452a7f27e7ba5da925a466433a..8ad42509cd77e7129640bef62df50e0e93b1a52c 100644 (file)
@@ -1642,12 +1642,29 @@ aopPut (operand * result, const char *s, int offset)
 
     case AOP_STK:
       if (strcmp (s, "a") == 0)
-        emitcode ("push", "acc");
-      else
-        if (*s=='@') {
+        {
+          emitcode ("push", "acc");
+        }
+      else if (*s=='@')
+        {
           MOVA(s);
           emitcode ("push", "acc");
-        } else {
+        }
+      else if (strcmp (s, "r0") == 0 ||
+               strcmp (s, "r1") == 0 ||
+               strcmp (s, "r2") == 0 ||
+               strcmp (s, "r3") == 0 ||
+               strcmp (s, "r4") == 0 ||
+               strcmp (s, "r5") == 0 ||
+               strcmp (s, "r6") == 0 ||
+               strcmp (s, "r7") == 0)
+        {
+          char buffer[10];
+          SNPRINTF (buffer, sizeof(buffer), "a%s", s);
+          emitcode ("push", buffer);
+        }
+      else
+        {
           emitcode ("push", s);
         }