Răsfoiți Sursa

* better register de-allocation after CWD/CWB

git-svn-id: trunk@39413 -
florian 7 ani în urmă
părinte
comite
d4c65cdac4
1 a modificat fișierele cu 8 adăugiri și 8 ștergeri
  1. 8 8
      compiler/i8086/cgcpu.pas

+ 8 - 8
compiler/i8086/cgcpu.pas

@@ -1778,8 +1778,8 @@ unit cgcpu;
                       getcpuregister(list, NR_AX);
                       list.concat(taicpu.op_ref_reg(A_MOV, S_B, tmpref, NR_AL));
                       list.concat(taicpu.op_none(A_CBW));
-                      add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_AX, reg));
                       ungetcpuregister(list, NR_AX);
+                      add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_AX, reg));
                     end;
                 end;
               OS_16,OS_S16:
@@ -1810,10 +1810,10 @@ unit cgcpu;
                   getcpuregister(list, NR_DX);
                   list.concat(taicpu.op_none(A_CBW));
                   list.concat(taicpu.op_none(A_CWD));
-                  add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_AX, reg));
                   ungetcpuregister(list, NR_AX);
-                  add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_DX, GetNextReg(reg)));
+                  add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_AX, reg));
                   ungetcpuregister(list, NR_DX);
+                  add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_DX, GetNextReg(reg)));
                 end;
               OS_16:
                 begin
@@ -1905,8 +1905,8 @@ unit cgcpu;
                           getcpuregister(list, NR_AX);
                           add_mov(taicpu.op_reg_reg(A_MOV, S_B, reg1, NR_AL));
                           list.concat(taicpu.op_none(A_CBW));
-                          add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_AX, reg2));
                           ungetcpuregister(list, NR_AX);
+                          add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_AX, reg2));
                         end;
                     end;
                   OS_16,OS_S16:
@@ -1941,10 +1941,10 @@ unit cgcpu;
                       getcpuregister(list, NR_DX);
                       list.concat(taicpu.op_none(A_CBW));
                       list.concat(taicpu.op_none(A_CWD));
-                      add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_AX, reg2));
                       ungetcpuregister(list, NR_AX);
-                      add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_DX, GetNextReg(reg2)));
+                      add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_AX, reg2));
                       ungetcpuregister(list, NR_DX);
+                      add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_DX, GetNextReg(reg2)));
                     end;
                   OS_16:
                     begin
@@ -1958,11 +1958,11 @@ unit cgcpu;
                       add_mov(taicpu.op_reg_reg(A_MOV, S_W, reg1, NR_AX));
                       getcpuregister(list, NR_DX);
                       list.concat(taicpu.op_none(A_CWD));
+                      ungetcpuregister(list, NR_AX);
                       if reg1<>reg2 then
                         add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_AX, reg2));
-                      ungetcpuregister(list, NR_AX);
-                      add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_DX, GetNextReg(reg2)));
                       ungetcpuregister(list, NR_DX);
+                      add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_DX, GetNextReg(reg2)));
                     end;
                   OS_32,OS_S32:
                     begin