ソースを参照

* fixed absolute on sparc

florian 21 年 前
コミット
5b2a1d9fdf
2 ファイル変更12 行追加5 行削除
  1. 7 3
      compiler/sparc/cgcpu.pas
  2. 5 2
      compiler/sparc/ncpucnv.pas

+ 7 - 3
compiler/sparc/cgcpu.pas

@@ -610,9 +610,10 @@ implementation
         else
         { Only base }
           if ref.base<>NR_NO then
-            a_load_reg_reg(list,OS_INT,OS_INT,ref.base,r)
+            a_load_reg_reg(list,OS_ADDR,OS_ADDR,ref.base,r)
         else
-          internalerror(200306172);
+          { only offset, can be generated by absolute }
+          a_load_const_reg(list,OS_ADDR,ref.offset,r);
       end;
 
 
@@ -1108,7 +1109,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.85  2004-08-24 21:02:32  florian
+  Revision 1.86  2004-08-25 20:40:04  florian
+    * fixed absolute on sparc
+
+  Revision 1.85  2004/08/24 21:02:32  florian
     * fixed longbool(<int64>) on sparc
 
   Revision 1.84  2004/06/20 08:55:32  florian

+ 5 - 2
compiler/sparc/ncpucnv.pas

@@ -199,7 +199,7 @@ implementation
                 begin
                   cg.ungetregister(exprasmlist,hreg2);
                   hreg1:=cg.getintregister(exprasmlist,OS_32);
-                  cg.a_op_reg_reg_reg(exprasmlist,OP_OR,OS_32,hreg2,succ(hreg2),hreg1);
+                  cg.a_op_reg_reg_reg(exprasmlist,OP_OR,OS_32,hreg2,tregister(succ(longint(hreg2))),hreg1);
                   hreg2:=hreg1;
                   opsize:=OS_32;
                 end;
@@ -244,7 +244,10 @@ begin
 end.
 {
   $Log$
-  Revision 1.30  2004-08-24 21:02:33  florian
+  Revision 1.31  2004-08-25 20:40:04  florian
+    * fixed absolute on sparc
+
+  Revision 1.30  2004/08/24 21:02:33  florian
     * fixed longbool(<int64>) on sparc
 
   Revision 1.29  2004/08/23 20:45:52  florian