Sfoglia il codice sorgente

* fixed symbol type writing for arm-linux
* fixed assembler generation for abs

florian 21 anni fa
parent
commit
1779c5dd8c
4 ha cambiato i file con 40 aggiunte e 8 eliminazioni
  1. 17 3
      compiler/aggas.pas
  2. 6 2
      compiler/arm/aasmcpu.pas
  3. 6 2
      compiler/arm/narminl.pas
  4. 11 1
      compiler/arm/raarmgas.pas

+ 17 - 3
compiler/aggas.pas

@@ -651,9 +651,19 @@ var
                       (tai(hp.next).typ in [ait_const_symbol,ait_const_rva,
                          ait_const_32bit,ait_const_16bit,ait_const_8bit,ait_datablock,
                          ait_real_32bit,ait_real_64bit,ait_real_80bit,ait_comp_64bit]) then
-                    AsmWriteLn(',@object')
+                     begin
+                       if target_info.system = system_arm_linux then
+                         AsmWriteLn(',#object')
+                       else
+                         AsmWriteLn(',@object')
+                     end
                    else
-                    AsmWriteLn(',@function');
+                     begin
+                       if target_info.system = system_arm_linux then
+                         AsmWriteLn(',#function')
+                       else
+                         AsmWriteLn(',@function');
+                     end;
                    if tai_symbol(hp).sym.size>0 then
                     begin
                       AsmWrite(#9'.size'#9);
@@ -839,7 +849,11 @@ var
 end.
 {
   $Log$
-  Revision 1.43  2004-01-12 16:39:40  peter
+  Revision 1.44  2004-01-20 21:02:54  florian
+    * fixed symbol type writing for arm-linux
+    * fixed assembler generation for abs
+
+  Revision 1.43  2004/01/12 16:39:40  peter
     * sparc updates, mostly float related
 
   Revision 1.42  2004/01/07 17:40:06  jonas

+ 6 - 2
compiler/arm/aasmcpu.pas

@@ -290,7 +290,7 @@ implementation
 
     function taicpu.is_reg_move:boolean;
       begin
-        result:=(opcode=A_MOV) and
+        result:=((opcode=A_MOV) or (opcode=A_MVF)) and
                 (condition=C_None) and
                 (ops=2) and
                 (oper[0]^.typ=top_reg) and
@@ -344,7 +344,11 @@ implementation
 end.
 {
   $Log$
-  Revision 1.20  2003-12-28 16:20:09  jonas
+  Revision 1.21  2004-01-20 21:02:55  florian
+    * fixed symbol type writing for arm-linux
+    * fixed assembler generation for abs
+
+  Revision 1.20  2003/12/28 16:20:09  jonas
     - removed unused methods from old generic spilling code
 
   Revision 1.19  2003/12/26 14:02:30  peter

+ 6 - 2
compiler/arm/narminl.pas

@@ -101,7 +101,7 @@ implementation
     procedure tarminlinenode.second_abs_real;
       begin
         load_fpu_location;
-        exprasmlist.concat(taicpu.op_reg(A_ABS,location.register));
+        exprasmlist.concat(setoppostfix(taicpu.op_reg_reg(A_ABS,location.register,location.register),PF_E));
       end;
 
 
@@ -123,7 +123,11 @@ begin
 end.
 {
   $Log$
-  Revision 1.2  2003-11-02 14:30:03  florian
+  Revision 1.3  2004-01-20 21:02:56  florian
+    * fixed symbol type writing for arm-linux
+    * fixed assembler generation for abs
+
+  Revision 1.2  2003/11/02 14:30:03  florian
     * fixed ARM for new reg. allocation scheme
 
   Revision 1.1  2003/08/28 00:05:29  florian

+ 11 - 1
compiler/arm/raarmgas.pas

@@ -176,7 +176,13 @@ Unit raarmgas;
             Begin
               oper.opr.ref.index:=actasmregister;
               Consume(AS_REGISTER);
+            end
+          else if actasmtoken=AS_HASH then
+            begin
+              Consume(AS_HASH);
+              inc(oper.opr.ref.offset,BuildConstExpression(false,true));
             end;
+          Consume_RBracket;
         end;
 
 
@@ -742,7 +748,11 @@ initialization
 end.
 {
   $Log$
-  Revision 1.6  2003-12-18 17:06:21  florian
+  Revision 1.7  2004-01-20 21:02:56  florian
+    * fixed symbol type writing for arm-linux
+    * fixed assembler generation for abs
+
+  Revision 1.6  2003/12/18 17:06:21  florian
     * arm compiler compilation fixed
 
   Revision 1.5  2003/12/08 17:43:57  florian