瀏覽代碼

+ generic a_op64_reg_ref implementation

Jonas Maebe 22 年之前
父節點
當前提交
5c5b86b650
共有 1 個文件被更改,包括 19 次插入1 次删除
  1. 19 1
      compiler/cg64f32.pas

+ 19 - 1
compiler/cg64f32.pas

@@ -66,6 +66,7 @@ unit cg64f32;
         procedure a_load64low_loc_reg(list : taasmoutput;const l : tlocation;reg : tregister);override;
 
         procedure a_op64_ref_reg(list : taasmoutput;op:TOpCG;const ref : treference;reg : tregister64);override;
+        procedure a_op64_reg_ref(list : taasmoutput;op:TOpCG;reg : tregister64; const ref: treference);override;
         procedure a_op64_const_loc(list : taasmoutput;op:TOpCG;value : qword;const l: tlocation);override;
         procedure a_op64_reg_loc(list : taasmoutput;op:TOpCG;reg : tregister64;const l : tlocation);override;
         procedure a_op64_loc_reg(list : taasmoutput;op:TOpCG;const l : tlocation;reg : tregister64);override;
@@ -407,6 +408,20 @@ unit cg64f32;
       end;
 
 
+    procedure tcg64f32.a_op64_reg_ref(list : taasmoutput;op:TOpCG;reg : tregister64; const ref: treference);override;
+      var
+        tempreg: tregister64;
+      begin
+        tempreg.reghi := cg.get_scratch_reg_int(list,OS_INT);
+        tempreg.reglo := cg.get_scratch_reg_int(list,OS_INT);
+        a_load64_ref_reg(list,ref,tempreg);
+        a_op64_reg_reg(list,op,reg,tempreg);
+        a_load64_reg_ref(list,tempreg,ref);
+        cg.free_scratch_reg(list,tempreg.reglo);
+        cg.free_scratch_reg(list,tempreg.reghi);
+      end;
+
+
     procedure tcg64f32.a_op64_const_ref(list : taasmoutput;op:TOpCG;value : qword;const ref : treference);
       var
         tempreg: tregister64;
@@ -751,7 +766,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.36  2003-03-28 19:16:56  peter
+  Revision 1.37  2003-04-07 08:45:09  jonas
+    + generic a_op64_reg_ref implementation
+
+  Revision 1.36  2003/03/28 19:16:56  peter
     * generic constructor working for i386
     * remove fixed self register
     * esi added as address register for i386