فهرست منبع

* generate better code in tcgz80.a_loadaddr_ref_reg

git-svn-id: branches/z80@45125 -
nickysn 5 سال پیش
والد
کامیت
3338603bb8
1فایلهای تغییر یافته به همراه7 افزوده شده و 5 حذف شده
  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
             if (ref.index<>NR_NO) then
               a_op_reg_reg(list,OP_ADD,OS_16,ref.index,r);
               a_op_reg_reg(list,OP_ADD,OS_16,ref.index,r);
           end
           end
-        else
+        else if ref.base<>NR_NO then
           begin
           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
             if (ref.index<>NR_NO) then
               a_op_reg_reg(list,OP_ADD,OS_16,ref.index,r);
               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;
       end;