소스 검색

* 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
         else
         { Only base }
         { Only base }
           if ref.base<>NR_NO then
           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
         else
-          internalerror(200306172);
+          { only offset, can be generated by absolute }
+          a_load_const_reg(list,OS_ADDR,ref.offset,r);
       end;
       end;
 
 
 
 
@@ -1108,7 +1109,10 @@ begin
 end.
 end.
 {
 {
   $Log$
   $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
     * fixed longbool(<int64>) on sparc
 
 
   Revision 1.84  2004/06/20 08:55:32  florian
   Revision 1.84  2004/06/20 08:55:32  florian

+ 5 - 2
compiler/sparc/ncpucnv.pas

@@ -199,7 +199,7 @@ implementation
                 begin
                 begin
                   cg.ungetregister(exprasmlist,hreg2);
                   cg.ungetregister(exprasmlist,hreg2);
                   hreg1:=cg.getintregister(exprasmlist,OS_32);
                   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;
                   hreg2:=hreg1;
                   opsize:=OS_32;
                   opsize:=OS_32;
                 end;
                 end;
@@ -244,7 +244,10 @@ begin
 end.
 end.
 {
 {
   $Log$
   $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
     * fixed longbool(<int64>) on sparc
 
 
   Revision 1.29  2004/08/23 20:45:52  florian
   Revision 1.29  2004/08/23 20:45:52  florian