瀏覽代碼

+ added trefaddr.addr_far for emitting far calls

git-svn-id: trunk@24826 -
nickysn 12 年之前
父節點
當前提交
2279e51a95
共有 2 個文件被更改,包括 5 次插入1 次删除
  1. 1 0
      compiler/cgbase.pas
  2. 4 1
      compiler/x86/agx86nsm.pas

+ 1 - 0
compiler/cgbase.pas

@@ -99,6 +99,7 @@ interface
          {$ENDIF}
          {$ENDIF}
          {$IFDEF i8086}
          {$IFDEF i8086}
          ,addr_dgroup      // the data segment group
          ,addr_dgroup      // the data segment group
+         ,addr_far         // used for emitting 'call far' or 'jmp far' instructions
          {$ENDIF}
          {$ENDIF}
          );
          );
 
 

+ 4 - 1
compiler/x86/agx86nsm.pas

@@ -382,7 +382,10 @@ interface
                   asmwrite('dword ');
                   asmwrite('dword ');
 {$endif i386}
 {$endif i386}
 {$ifdef i8086}
 {$ifdef i8086}
-                  asmwrite('word ');
+                  if o.ref^.refaddr=addr_far then
+                    asmwrite('far ')
+                  else
+                    asmwrite('word ');
 {$endif i8086}
 {$endif i8086}
                   if assigned(o.ref^.symbol) then
                   if assigned(o.ref^.symbol) then
                    begin
                    begin