ソースを参照

* i8086 compiler fixed, resolves #34552

git-svn-id: trunk@40316 -
florian 6 年 前
コミット
6a6ea6729f
1 ファイル変更9 行追加5 行削除
  1. 9 5
      compiler/x86/cgx86.pas

+ 9 - 5
compiler/x86/cgx86.pas

@@ -2773,7 +2773,7 @@ unit cgx86;
 
 
     type  copymode=(copy_move,copy_mmx,copy_string,copy_mm,copy_avx);
     type  copymode=(copy_move,copy_mmx,copy_string,copy_mm,copy_avx);
 
 
-    var srcref,dstref:Treference;
+    var srcref,dstref,tmpref:Treference;
         r,r0,r1,r2,r3:Tregister;
         r,r0,r1,r2,r3:Tregister;
         helpsize:tcgint;
         helpsize:tcgint;
         copysize:byte;
         copysize:byte;
@@ -3049,8 +3049,10 @@ unit cgx86;
               end
               end
             else
             else
               begin
               begin
-                dstref.segment:=NR_NO;
-                a_loadaddr_ref_reg(list,dstref,REGDI);
+                { load offset of dest. reference }
+                tmpref:=dstref;
+                tmpref.segment:=NR_NO;
+                a_loadaddr_ref_reg(list,tmpref,REGDI);
 {$ifdef volatile_es}
 {$ifdef volatile_es}
                 saved_es:=false;
                 saved_es:=false;
 {$else volatile_es}
 {$else volatile_es}
@@ -3086,8 +3088,10 @@ unit cgx86;
               end
               end
             else
             else
               begin
               begin
-                srcref.segment:=NR_NO;
-                a_loadaddr_ref_reg(list,srcref,REGSI);
+                { load offset of source reference }
+                tmpref:=srcref;
+                tmpref.segment:=NR_NO;
+                a_loadaddr_ref_reg(list,tmpref,REGSI);
                 list.concat(taicpu.op_reg(A_PUSH,push_segment_size,NR_DS));
                 list.concat(taicpu.op_reg(A_PUSH,push_segment_size,NR_DS));
                 saved_ds:=true;
                 saved_ds:=true;
                 if srcref.segment<>NR_NO then
                 if srcref.segment<>NR_NO then