mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 02:59:33 +02:00
* reduce register pressure by allocating/deallocating registers as late/early as possible
git-svn-id: trunk@24581 -
This commit is contained in:
parent
b734c17c4f
commit
c1a1325a72
@ -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:
|
||||||
|
Loading…
Reference in New Issue
Block a user