+// char indexed access to: long code table[] = {4,3,2,1};
+replace restart {
+ add a,#%1
+ mov dpl,a
+ clr a
+ addc a,#(%1 >> 8)
+ mov dph,a
+ clr a
+ addc a,#(%1 >> 16)
+ mov dpx,a
+ clr a
+ movc a,@a+dptr
+ inc dptr
+ mov %2,a
+ clr a
+ movc a,@a+dptr
+ inc dptr
+ mov %3,a
+ clr a
+ movc a,@a+dptr
+ inc dptr
+ mov %4,a
+ clr a
+ movc a,@a+dptr
+} by {
+ ; Peephole 227.a movc optimize
+ mov b,a
+ mov dptr,#%1
+ movc a,@a+dptr
+ inc dptr
+ mov %2,a
+ mov a,b
+ movc a,@a+dptr
+ inc dptr
+ mov %3,a
+ mov a,b
+ movc a,@a+dptr
+ inc dptr
+ mov %4,a
+ mov a,b
+ movc a,@a+dptr
+}
+
+// char indexed access to: void* code table[] = {4,3,2,1};
+replace restart {
+ add a,#%1
+ mov dpl,a
+ clr a
+ addc a,#(%1 >> 8)
+ mov dph,a
+ clr a
+ addc a,#(%1 >> 16)
+ mov dpx,a
+ clr a
+ movc a,@a+dptr
+ inc dptr
+ mov %2,a
+ clr a
+ movc a,@a+dptr
+ inc dptr
+ mov %3,a
+ clr a
+ movc a,@a+dptr
+} by {
+ ; Peephole 227.b movc optimize
+ mov b,a
+ mov dptr,#%1
+ movc a,@a+dptr
+ inc dptr
+ mov %2,a
+ mov a,b
+ movc a,@a+dptr
+ inc dptr
+ mov %3,a
+ mov a,b
+ movc a,@a+dptr
+}
+
+// char indexed access to: int code table[] = {4,3,2,1};
+replace restart {
+ add a,#%1
+ mov dpl,a
+ clr a
+ addc a,#(%1 >> 8)
+ mov dph,a
+ clr a
+ addc a,#(%1 >> 16)
+ mov dpx,a
+ clr a
+ movc a,@a+dptr
+ inc dptr
+ mov %2,a
+ clr a
+ movc a,@a+dptr
+} by {
+ ; Peephole 227.c movc optimize
+ mov %2,a
+ mov dptr,#%1
+ movc a,@a+dptr
+ inc dptr
+ xch a,%2
+ 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
+ addc a,#(%1 >> 16)
+ mov dpx,a
+ clr a
+ movc a,@a+dptr
+} by {
+ ; Peephole 227.d movc optimize
+ mov dptr,#%1
+ movc a,@a+dptr
+}