Browse Source

* handle complexer references in tcg8086.a_loadaddr_ref_cgpara properly

florian 1 year ago
parent
commit
eff10ee9b7
1 changed files with 7 additions and 2 deletions
  1. 7 2
      compiler/i8086/cgcpu.pas

+ 7 - 2
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