+2006-05-18 Maarten Brock <sourceforge.brock AT dse.nl>
+
+ * src/mcs51/gen.c (genCodePointerGet): inc dptr instead of loading acc
+ with offset
+ * src/mcs51/peeph.def (186.x): updated and reenabled to fix bugs
+ 1489016, 1434401 and 1490124
+
2006-05-17 Borut Razem <borut.razem AT siol.net>
* support/Util/dbuf.c: fixed bug #1489008 fix dbuf_c_str(),
while (size--)
{
- if (pi)
- {
- emitcode ("clr", "a");
- emitcode ("movc", "a,@a+dptr");
- if (!ifx)
- aopPut (result, "a", offset++, isOperandVolatile (result, FALSE));
- emitcode ("inc", "dptr");
- }
- else
- {
- emitcode ("mov", "a,#0x%02x", offset);
- emitcode ("movc", "a,@a+dptr");
- if (!ifx)
- aopPut (result, "a", offset++, isOperandVolatile (result, FALSE));
- }
+ emitcode ("clr", "a");
+ emitcode ("movc", "a,@a+dptr");
+ if (!ifx)
+ aopPut (result, "a", offset++, isOperandVolatile (result, FALSE));
+ if (size || pi)
+ emitcode ("inc", "dptr");
}
}
mov %1,a
} if notVolatile %1
-replace {
+// char indexed access to: long code table[] = {4,3,2,1};
+replace restart {
add a,#%1
mov dpl,a
clr a
mov %4,a
inc dptr
clr a
+ movc a,@a+dptr
} by {
; Peephole 186.a optimized movc sequence
+ mov b,a
mov dptr,#%1
- mov b,acc
movc a,@a+dptr
mov %2,a
- mov acc,b
inc dptr
+ mov a,b
movc a,@a+dptr
mov %3,a
- mov acc,b
inc dptr
+ mov a,b
movc a,@a+dptr
mov %4,a
- mov acc,b
inc dptr
+ mov a,b
+ movc a,@a+dptr
}
-replace {
+// char indexed access to: void* code table[] = {4,3,2,1};
+replace restart {
add a,#%1
mov dpl,a
clr a
mov %3,a
inc dptr
clr a
+ movc a,@a+dptr
} by {
; Peephole 186.b optimized movc sequence
+ mov b,a
mov dptr,#%1
- mov b,acc
movc a,@a+dptr
mov %2,a
- mov acc,b
inc dptr
+ mov a,b
movc a,@a+dptr
mov %3,a
- mov acc,b
inc dptr
+ mov a,b
+ movc a,@a+dptr
}
-replace {
+// char indexed access to: int code table[] = {4,3,2,1};
+replace restart {
add a,#%1
mov dpl,a
clr a
mov %2,a
inc dptr
clr a
+ movc a,@a+dptr
} by {
; Peephole 186.c optimized movc sequence
+ mov %2,a
mov dptr,#%1
- mov b,acc
movc a,@a+dptr
- mov %2,a
- mov acc,b
+ xch a,%2
inc dptr
+ movc a,@a+dptr
}
-// disabled due to bug #1434401
-//// char indexed access to: char code table[] = {4,3,2,1};
-//replace {
-// add a,#%1
-// mov dpl,a
-// clr a
-// addc a,#(%1 >> 8)
-// mov dph,a
-// clr a
-// movc a,@a+dptr
-//} by {
-// ; Peephole 186.d optimized movc sequence
-// mov dptr,#%1
-// movc a,@a+dptr
-//}
+// char indexed access to: char code table[] = {4,3,2,1};
+replace {
+ add a,#%1
+ mov dpl,a
+ clr a
+ addc a,#(%1 >> 8)
+ mov dph,a
+ clr a
+ movc a,@a+dptr
+} by {
+ ; Peephole 186.d optimized movc sequence
+ mov dptr,#%1
+ movc a,@a+dptr
+}
// char indexed access to: int code table[] = {4,3,2,1};
replace {