* better register de-allocation after CWD/CWB

git-svn-id: trunk@39413 -
This commit is contained in:
florian 2018-07-07 21:38:42 +00:00
parent 6bf3fd6475
commit d4c65cdac4

View File

@ -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