From: MaartenBrock Date: Wed, 7 Feb 2007 17:10:27 +0000 (+0000) Subject: * src/mcs51/gen.c (aopPut): use direct name for pushing registers X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=6ddfcdd55896c6949b5b70c8bd01c3ebeead91e0;p=fw%2Fsdcc * src/mcs51/gen.c (aopPut): use direct name for pushing registers * 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 --- diff --git a/ChangeLog b/ChangeLog index 9cfd23d4..80c171bd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-02-07 Maarten Brock + + * 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 * src/pic16/devices.inc, diff --git a/src/SDCCmain.c b/src/SDCCmain.c index 76a12b73..6e626c8b 100644 --- a/src/SDCCmain.c +++ b/src/SDCCmain.c @@ -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); diff --git a/src/mcs51/gen.c b/src/mcs51/gen.c index a2841f70..8ad42509 100644 --- a/src/mcs51/gen.c +++ b/src/mcs51/gen.c @@ -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); }