From: MaartenBrock Date: Sat, 19 Jan 2008 13:06:10 +0000 (+0000) Subject: * as/mcs51/asx8051.dsp: removed define SDK X-Git-Url: https://git.gag.com/?p=fw%2Fsdcc;a=commitdiff_plain;h=d0f536c5ffff1b7e8ea5a5b0b65b94f3773fdcd9 * as/mcs51/asx8051.dsp: removed define SDK * as/mcs51/i51mch.c (machine): fixed bug 1865114 git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4994 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/ChangeLog b/ChangeLog index 0cf9255a..089faa18 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-01-19 Maarten Brock + + * as/mcs51/asx8051.dsp: removed define SDK + * as/mcs51/i51mch.c (machine): fixed bug 1865114 + 2008-01-13 Borut Razem * support/scripts/sdcc.nsi: added Uninstall/reinstall page, ... diff --git a/as/mcs51/asx8051.dsp b/as/mcs51/asx8051.dsp index fdd57547..f6698da8 100644 --- a/as/mcs51/asx8051.dsp +++ b/as/mcs51/asx8051.dsp @@ -41,8 +41,8 @@ RSC=rc.exe # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "INDEXLIB" /D "MLH_MAP" /D "SDK" /FR /FD /GZ /c -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "." /I "../../support/Util" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "INDEXLIB" /D "MLH_MAP" /D "SDK" /FR /FD /GZ /c +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "INDEXLIB" /D "MLH_MAP" /FR /FD /GZ /c +# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "." /I "../../support/Util" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "INDEXLIB" /D "MLH_MAP" /FR /FD /GZ /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe @@ -66,8 +66,8 @@ LINK32=link.exe # PROP Intermediate_Dir "Release" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" -# ADD BASE CPP /nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "INDEXLIB" /D "MLH_MAP" /D "SDK" /FD /c -# ADD CPP /nologo /ML /W3 /GX /O2 /I "." /I "../../support/Util" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "INDEXLIB" /D "MLH_MAP" /D "SDK" /FD /c +# ADD BASE CPP /nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "INDEXLIB" /D "MLH_MAP" /FD /c +# ADD CPP /nologo /ML /W3 /GX /O2 /I "." /I "../../support/Util" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "INDEXLIB" /D "MLH_MAP" /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe diff --git a/as/mcs51/i51mch.c b/as/mcs51/i51mch.c index f4f42155..9e7b2900 100644 --- a/as/mcs51/i51mch.c +++ b/as/mcs51/i51mch.c @@ -25,10 +25,11 @@ machine(struct mne *mp) { register unsigned op; register int t, t1, v1; - struct expr e, e1; + struct expr e, e1, e2; clrexpr(&e); clrexpr(&e1); + clrexpr(&e2); op = mp->m_valu; switch (mp->m_type) { @@ -57,7 +58,7 @@ machine(struct mne *mp) break; case S_JMP16: - /* LCALl or LJMP. In Flat24 mode, this is a 24 bit + /* LCALL or LJMP. In Flat24 mode, this is a 24 bit * destination; in 8051 mode, this is a 16 bit * destination. */ @@ -413,16 +414,12 @@ machine(struct mne *mp) t = addr(&e); if ((t != S_DIR) && (t != S_EXT)) aerr(); - outab(op); - outrb(&e, R_PAG0); - comma(); expr(&e1, 0); + outab(op); + outrb(&e, R_PAG0); if (e1.e_base.e_ap == NULL || e1.e_base.e_ap == dot.s_area) { - if ( e1.e_addr == dot.s_addr) - v1 = -3; - else - v1 = e1.e_addr - dot.s_addr - 1; + v1 = e1.e_addr - dot.s_addr - 1; if (pass==2 && ((v1 < -128) || (v1 > 127))) aerr(); outab(v1); @@ -435,13 +432,10 @@ machine(struct mne *mp) case S_BR: /* Relative branch */ - outab(op); expr(&e1, 0); + outab(op); if (e1.e_base.e_ap == NULL || e1.e_base.e_ap == dot.s_area) { - if ( e1.e_addr == dot.s_addr) - v1 = -2; - else - v1 = e1.e_addr - dot.s_addr - 1; + v1 = e1.e_addr - dot.s_addr - 1; if (pass == 2 && ((v1 < -128) || (v1 > 127))) aerr(); outab(v1); @@ -457,6 +451,8 @@ machine(struct mne *mp) t = addr(&e); comma(); t1 = addr(&e1); + comma(); + expr(&e2, 0); switch (t) { case S_A: if (t1 == S_IMMED) { @@ -490,51 +486,42 @@ machine(struct mne *mp) } /* branch destination */ - comma(); - expr(&e1, 0); - if (e1.e_base.e_ap == NULL || e1.e_base.e_ap == dot.s_area) { - if ( e1.e_addr == dot.s_addr) - v1 = -3; - else - v1 = e1.e_addr - dot.s_addr - 1; + if (e2.e_base.e_ap == NULL || e2.e_base.e_ap == dot.s_area) { + v1 = e2.e_addr - dot.s_addr - 1; if (pass == 2 && ((v1 < -128) || (v1 > 127))) aerr(); outab(v1); } else { - outrb(&e1, R_PCR); + outrb(&e2, R_PCR); } - if (e1.e_mode != S_USER) + if (e2.e_mode != S_USER) rerr(); break; case S_DJNZ: /* Dir,dest; Reg,dest */ t = addr(&e); + comma(); + expr(&e1, 0); switch (t) { case S_DIR: case S_EXT: outab(op + 5); outrb(&e, R_PAG0); - v1 = -3; break; case S_REG: outab(op + 8 + e.e_addr); - v1 = -2; break; default: aerr(); - v1 = 0; } /* branch destination */ - comma(); - expr(&e1, 0); if (e1.e_base.e_ap == NULL || e1.e_base.e_ap == dot.s_area) { - if ( e1.e_addr != dot.s_addr) - v1 = e1.e_addr - dot.s_addr - 1; + v1 = e1.e_addr - dot.s_addr - 1; if (pass == 2 && ((v1 < -128) || (v1 > 127))) aerr(); outab(v1);