ソースを参照

Add unaligned 16,32 and 64 bit tai_const, needed for dwarf

git-svn-id: trunk@22514 -
pierre 13 年 前
コミット
b041b3ad4a
1 ファイル変更42 行追加1 行削除
  1. 42 1
      compiler/aasmtai.pas

+ 42 - 1
compiler/aasmtai.pas

@@ -129,14 +129,20 @@ interface
           aitconst_darwin_dwarf_delta64,
           aitconst_darwin_dwarf_delta32,
           { ARM Thumb-2 only }
-          aitconst_half16bit { used for table jumps. The actual value is the 16bit value shifted left once }
+          aitconst_half16bit, { used for table jumps. The actual value is the 16bit value shifted left once }
+          { for use by dwarf debugger information }
+          aitconst_16bit_unaligned,
+          aitconst_32bit_unaligned,
+          aitconst_64bit_unaligned
         );
 
     const
 {$ifdef cpu64bitaddr}
        aitconst_ptr = aitconst_64bit;
+       aitconst_ptr_unaligned = aitconst_64bit_unaligned;
 {$else cpu64bitaddr}
        aitconst_ptr = aitconst_32bit;
+       aitconst_ptr_unaligned = aitconst_32bit_unaligned;
 {$endif cpu64bitaddr}
 
 {$ifdef cpu64bitalu}
@@ -520,6 +526,9 @@ interface
           constructor Create_64bit(_value : int64);
           constructor Create_32bit(_value : longint);
           constructor Create_16bit(_value : word);
+          constructor Create_64bit_unaligned(_value : int64);
+          constructor Create_32bit_unaligned(_value : longint);
+          constructor Create_16bit_unaligned(_value : word);
           constructor Create_8bit(_value : byte);
           constructor Create_char(size: integer; _value: dword);
           constructor Create_sleb128bit(_value : int64);
@@ -1367,6 +1376,38 @@ implementation
          endsym:=nil;
       end;
 
+    constructor tai_const.Create_64bit_unaligned(_value : int64);
+      begin
+         inherited Create;
+         typ:=ait_const;
+         consttype:=aitconst_64bit_unaligned;
+         value:=_value;
+         sym:=nil;
+         endsym:=nil;
+      end;
+
+
+    constructor tai_const.Create_32bit_unaligned(_value : longint);
+      begin
+         inherited Create;
+         typ:=ait_const;
+         consttype:=aitconst_32bit_unaligned;
+         value:=_value;
+         sym:=nil;
+         endsym:=nil;
+      end;
+
+
+    constructor tai_const.Create_16bit_unaligned(_value : word);
+      begin
+         inherited Create;
+         typ:=ait_const;
+         consttype:=aitconst_16bit_unaligned;
+         value:=_value;
+         sym:=nil;
+         endsym:=nil;
+      end;
+
 
     constructor tai_const.Create_8bit(_value : byte);
       begin