]> git.gag.com Git - fw/sdcc/commitdiff
added peephole 186.e for char indexed integer array access in code space
authorfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Fri, 28 Nov 2003 21:52:37 +0000 (21:52 +0000)
committerfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Fri, 28 Nov 2003 21:52:37 +0000 (21:52 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3034 4a8a32a2-be11-0410-ad9d-d568d2c75423

src/mcs51/peeph.def

index f3b8f704c9f75bbfc9def38d0e7804d4af4db6b7..f0609f93d4ef41871a3d4ce71d2da13596ca7597 100644 (file)
@@ -1228,6 +1228,7 @@ replace {
         inc     dptr
 }
 
+// char indexed access to: char code table[] = {4,3,2,1}; 
 replace {
         add     a,#%1
         mov     dpl,a
@@ -1242,6 +1243,34 @@ replace {
         movc    a,@a+dptr
 }
 
+// char indexed access to: int code table[] = {4,3,2,1}; 
+replace {
+        mov     b,#0x02
+        mul     ab
+        add     a,#%2
+        mov     dpl,a
+        mov     a,b
+        addc    a,#(%2 >> 8)
+        mov     dph,a
+        clr     a
+        movc    a,@a+dptr
+        mov     %3,a
+        mov     a,#0x01
+        movc    a,@a+dptr
+} by {
+        ;       Peephole 186.e  optimized movc sequence (b, dptr differ)
+       add     a,acc
+        mov     b,a
+        mov    dptr,#%2
+       jnc     .+3
+       inc     dph
+        movc    a,@a+dptr
+        mov     %3,a
+        mov     a,b
+       inc     a
+        movc    a,@a+dptr
+}
+
 replace {
         mov     r%1,%2
         anl     ar%1,#%3