From eff10ee9b7bb254c1a82c3e838eee6a20edcf3e8 Mon Sep 17 00:00:00 2001 From: florian Date: Sat, 18 May 2024 23:38:33 +0200 Subject: [PATCH] * handle complexer references in tcg8086.a_loadaddr_ref_cgpara properly --- compiler/i8086/cgcpu.pas | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/compiler/i8086/cgcpu.pas b/compiler/i8086/cgcpu.pas index 20a23a2471..6271394472 100644 --- a/compiler/i8086/cgcpu.pas +++ b/compiler/i8086/cgcpu.pas @@ -1569,7 +1569,7 @@ unit cgcpu; a_loadaddr_ref_reg(list,r,tmpreg); list.concat(taicpu.op_reg(A_PUSH,S_W,tmpreg)); end - else if base=NR_BP then + else if (base=NR_BP) or (base=NR_SP) then begin list.concat(Taicpu.op_reg(A_PUSH,S_W,NR_SS)); tmpreg:=getaddressregister(list); @@ -1577,7 +1577,12 @@ unit cgcpu; list.concat(taicpu.op_reg(A_PUSH,S_W,tmpreg)); end else - internalerror(2014032403); + begin + list.concat(Taicpu.op_reg(A_PUSH,S_W,NR_DS)); + tmpreg:=getaddressregister(list); + a_loadaddr_ref_reg(list,r,tmpreg); + list.concat(taicpu.op_reg(A_PUSH,S_W,tmpreg)); + end; end; end else