Ver Fonte

* generate better code in tcgz80.a_loadaddr_ref_reg

git-svn-id: branches/z80@45125 -
nickysn há 5 anos atrás
pai
commit
3338603bb8
1 ficheiros alterados com 7 adições e 5 exclusões
  1. 7 5
      compiler/z80/cgcpu.pas

+ 7 - 5
compiler/z80/cgcpu.pas

@@ -2287,14 +2287,16 @@ unit cgcpu;
             if (ref.index<>NR_NO) then
               a_op_reg_reg(list,OP_ADD,OS_16,ref.index,r);
           end
-        else
+        else if ref.base<>NR_NO then
           begin
-            a_load_const_reg(list,OS_16,ref.offset,r);
-            if (ref.base<>NR_NO) then
-              a_op_reg_reg(list,OP_ADD,OS_16,ref.base,r);
+            a_op_const_reg_reg(list,OP_ADD,OS_16,ref.offset,ref.base,r);
             if (ref.index<>NR_NO) then
               a_op_reg_reg(list,OP_ADD,OS_16,ref.index,r);
-          end;
+          end
+        else if ref.index<>NR_NO then
+          a_op_const_reg_reg(list,OP_ADD,OS_16,ref.offset,ref.index,r)
+        else
+          a_load_const_reg(list,OS_16,ref.offset,r);
       end;