浏览代码

* moved the i8086 specific code from tpointerconstnode.create to the i8086
descendant class

git-svn-id: trunk@27285 -

nickysn 11 年之前
父节点
当前提交
22acb2e44b
共有 2 个文件被更改,包括 13 次插入7 次删除
  1. 13 2
      compiler/i8086/n8086con.pas
  2. 0 5
      compiler/ncon.pas

+ 13 - 2
compiler/i8086/n8086con.pas

@@ -26,20 +26,21 @@ unit n8086con;
 interface
 
     uses
-       node,ncon,ncgcon,nx86con;
+       globtype,symtype,ncon,ncgcon,nx86con;
 
     type
 
       { tcgpointerconstnode }
 
       ti8086pointerconstnode = class(tcgpointerconstnode)
+        constructor create(v : TConstPtrUInt;def:tdef);override;
         procedure pass_generate_code;override;
       end;
 
 implementation
 
     uses
-      systems,globals,globtype,
+      systems,globals,
       symconst,symdef,
       defutil,
       cpubase,
@@ -49,6 +50,16 @@ implementation
                                T8086POINTERCONSTNODE
     *****************************************************************************}
 
+
+    constructor ti8086pointerconstnode.create(v: TConstPtrUInt; def: tdef);
+      begin
+        { truncate near pointers }
+        if (def.typ<>pointerdef) or not (tpointerdef(def).x86pointertyp in [x86pt_far,x86pt_huge]) then
+          v := Word(v);
+        inherited create(v, def);
+      end;
+
+
     procedure ti8086pointerconstnode.pass_generate_code;
       begin
         { far pointer? }

+ 0 - 5
compiler/ncon.pas

@@ -738,11 +738,6 @@ implementation
 
       begin
          inherited create(pointerconstn);
-{$ifdef i8086}
-         { truncate near pointers }
-         if (def.typ<>pointerdef) or not (tpointerdef(def).x86pointertyp in [x86pt_far,x86pt_huge]) then
-           v := Word(v);
-{$endif i8086}
          value:=v;
          typedef:=def;
       end;