Преглед на файлове

* reduce register pressure by allocating/deallocating registers as late/early as possible

git-svn-id: trunk@24581 -
florian преди 12 години
родител
ревизия
c1a1325a72
променени са 1 файла, в които са добавени 4 реда и са изтрити 4 реда
  1. 4 4
      compiler/i8086/cgcpu.pas

+ 4 - 4
compiler/i8086/cgcpu.pas

@@ -997,13 +997,13 @@ unit cgcpu;
                   OS_S8:
                   OS_S8:
                     begin
                     begin
                       getcpuregister(list, NR_AX);
                       getcpuregister(list, NR_AX);
-                      getcpuregister(list, NR_DX);
                       add_mov(taicpu.op_reg_reg(A_MOV, S_B, reg1, NR_AL));
                       add_mov(taicpu.op_reg_reg(A_MOV, S_B, reg1, NR_AL));
+                      getcpuregister(list, NR_DX);
                       list.concat(taicpu.op_none(A_CBW));
                       list.concat(taicpu.op_none(A_CBW));
                       list.concat(taicpu.op_none(A_CWD));
                       list.concat(taicpu.op_none(A_CWD));
                       add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_AX, reg2));
                       add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_AX, reg2));
-                      add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_DX, GetNextReg(reg2)));
                       ungetcpuregister(list, NR_AX);
                       ungetcpuregister(list, NR_AX);
+                      add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_DX, GetNextReg(reg2)));
                       ungetcpuregister(list, NR_DX);
                       ungetcpuregister(list, NR_DX);
                     end;
                     end;
                   OS_16:
                   OS_16:
@@ -1014,12 +1014,12 @@ unit cgcpu;
                   OS_S16:
                   OS_S16:
                     begin
                     begin
                       getcpuregister(list, NR_AX);
                       getcpuregister(list, NR_AX);
-                      getcpuregister(list, NR_DX);
                       add_mov(taicpu.op_reg_reg(A_MOV, S_W, reg1, NR_AX));
                       add_mov(taicpu.op_reg_reg(A_MOV, S_W, reg1, NR_AX));
+                      getcpuregister(list, NR_DX);
                       list.concat(taicpu.op_none(A_CWD));
                       list.concat(taicpu.op_none(A_CWD));
                       add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_AX, reg2));
                       add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_AX, reg2));
-                      add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_DX, GetNextReg(reg2)));
                       ungetcpuregister(list, NR_AX);
                       ungetcpuregister(list, NR_AX);
+                      add_mov(taicpu.op_reg_reg(A_MOV, S_W, NR_DX, GetNextReg(reg2)));
                       ungetcpuregister(list, NR_DX);
                       ungetcpuregister(list, NR_DX);
                     end;
                     end;
                   OS_32,OS_S32:
                   OS_32,OS_S32: