瀏覽代碼

+ added *_unaligned counterparts to taiconst.create_[int|nil]_[code|data]ptr

git-svn-id: trunk@34836 -
nickysn 8 年之前
父節點
當前提交
594290a16e
共有 1 個文件被更改,包括 54 次插入0 次删除
  1. 54 0
      compiler/aasmtai.pas

+ 54 - 0
compiler/aasmtai.pas

@@ -637,9 +637,13 @@ interface
           constructor Create_type_name(_typ:taiconst_type;const name:string;ofs:asizeint);
           constructor Create_type_name(_typ:taiconst_type;const name:string;_symtyp:Tasmsymtype;ofs:asizeint);
           constructor Create_nil_codeptr;
+          constructor Create_nil_codeptr_unaligned;
           constructor Create_nil_dataptr;
+          constructor Create_nil_dataptr_unaligned;
           constructor Create_int_codeptr(_value: int64);
+          constructor Create_int_codeptr_unaligned(_value: int64);
           constructor Create_int_dataptr(_value: int64);
+          constructor Create_int_dataptr_unaligned(_value: int64);
 {$ifdef i8086}
           constructor Create_seg_name(const name:string);
           constructor Create_dgroup;
@@ -1755,12 +1759,24 @@ implementation
       end;
 
 
+    constructor tai_const.Create_nil_codeptr_unaligned;
+      begin
+        self.Create_int_codeptr_unaligned(0);
+      end;
+
+
     constructor tai_const.Create_nil_dataptr;
       begin
         self.Create_int_dataptr(0);
       end;
 
 
+    constructor tai_const.Create_nil_dataptr_unaligned;
+      begin
+        self.Create_int_dataptr_unaligned(0);
+      end;
+
+
     constructor tai_const.Create_int_codeptr(_value: int64);
       begin
         inherited Create;
@@ -1782,6 +1798,27 @@ implementation
       end;
 
 
+    constructor tai_const.Create_int_codeptr_unaligned(_value: int64);
+      begin
+        inherited Create;
+        typ:=ait_const;
+{$ifdef i8086}
+        if current_settings.x86memorymodel in x86_far_code_models then
+          consttype:=aitconst_farptr
+        else
+{$endif i8086}
+{$ifdef avr}
+          consttype:=aitconst_gs;
+{$else avr}
+          consttype:=aitconst_ptr_unaligned;
+{$endif avr}
+        sym:=nil;
+        endsym:=nil;
+        symofs:=0;
+        value:=_value;
+      end;
+
+
     constructor tai_const.Create_int_dataptr(_value: int64);
       begin
         inherited Create;
@@ -1799,6 +1836,23 @@ implementation
       end;
 
 
+    constructor tai_const.Create_int_dataptr_unaligned(_value: int64);
+      begin
+        inherited Create;
+        typ:=ait_const;
+{$ifdef i8086}
+        if current_settings.x86memorymodel in x86_far_data_models then
+          consttype:=aitconst_farptr
+        else
+{$endif i8086}
+          consttype:=aitconst_ptr_unaligned;
+        sym:=nil;
+        endsym:=nil;
+        symofs:=0;
+        value:=_value;
+      end;
+
+
 {$ifdef i8086}
     constructor tai_const.Create_seg_name(const name:string);
       begin