|
@@ -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? }
|