浏览代码

+ added trefaddr.addr_seg for referencing the segment of a symbol

git-svn-id: trunk@24859 -
nickysn 12 年之前
父节点
当前提交
9dbbffba61
共有 2 个文件被更改,包括 3 次插入0 次删除
  1. 1 0
      compiler/cgbase.pas
  2. 2 0
      compiler/x86/agx86nsm.pas

+ 1 - 0
compiler/cgbase.pas

@@ -101,6 +101,7 @@ interface
          ,addr_dgroup      // the data segment group
          ,addr_dgroup      // the data segment group
          ,addr_far         // used for emitting 'call/jmp far label' instructions
          ,addr_far         // used for emitting 'call/jmp far label' instructions
          ,addr_far_ref     // used for emitting 'call far [reference]' instructions
          ,addr_far_ref     // used for emitting 'call far [reference]' instructions
+         ,addr_seg         // used for getting the segment of an object, e.g. 'mov ax, SEG symbol'
          {$ENDIF}
          {$ENDIF}
          );
          );
 
 

+ 2 - 0
compiler/x86/agx86nsm.pas

@@ -398,6 +398,8 @@ interface
 {$ifdef i8086}
 {$ifdef i8086}
                   if o.ref^.refaddr=addr_far then
                   if o.ref^.refaddr=addr_far then
                     asmwrite('far ')
                     asmwrite('far ')
+                  else if o.ref^.refaddr=addr_seg then
+                    asmwrite('SEG ')
                   else
                   else
                     asmwrite('word ');
                     asmwrite('word ');
 {$endif i8086}
 {$endif i8086}