+2008-01-19 Maarten Brock <sourceforge.brock AT dse.nl>
+
+ * as/mcs51/asx8051.dsp: removed define SDK
+ * as/mcs51/i51mch.c (machine): fixed bug 1865114
+
2008-01-13 Borut Razem <borut.razem AT siol.net>
* support/scripts/sdcc.nsi: added Uninstall/reinstall page, ...
# PROP Intermediate_Dir "Debug"\r
# PROP Ignore_Export_Lib 0\r
# PROP Target_Dir ""\r
-# 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\r
-# 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\r
+# 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\r
+# 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\r
# ADD BASE RSC /l 0x409 /d "_DEBUG"\r
# ADD RSC /l 0x409 /d "_DEBUG"\r
BSC32=bscmake.exe\r
# PROP Intermediate_Dir "Release"\r
# PROP Ignore_Export_Lib 0\r
# PROP Target_Dir ""\r
-# 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\r
-# 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\r
+# ADD BASE CPP /nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "INDEXLIB" /D "MLH_MAP" /FD /c\r
+# 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\r
# ADD BASE RSC /l 0x409 /d "NDEBUG"\r
# ADD RSC /l 0x409 /d "NDEBUG"\r
BSC32=bscmake.exe\r
{
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) {
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.
*/
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);
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);
t = addr(&e);
comma();
t1 = addr(&e1);
+ comma();
+ expr(&e2, 0);
switch (t) {
case S_A:
if (t1 == S_IMMED) {
}
/* 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);