[Help!] Use two different assembly symbol in D, but they are same address.

lili akozhao at tencent.com
Sat Aug 24 11:53:01 UTC 2019


Hi:
   definition _vga_x and _vga_y symbol in asm, compile use nasm -f 
elf64 -o boot.o boot.asm
   [section .bss]
     ...

   [global _vga_x]
   _vga_x:
           resb 8
   [global _vga_y]
   _vga_y:
           resb 8


   and nm boot.o show below
     ...
    00107000 B _vga_x
    00107008 B _vga_y

  and In another D file use this two symbol

extern(C) {
  extern __gshared int _vga_x; //definition in boot.asm
  extern __gshared int _vga_y; //definition in boot.asm
}

  void tt()
  {
     if (_vga_x == _vga_y)
       //where is true, why?
  }

  but when a run tt so strange things happend that the test is 
true.
  Is where has a coding mistake.
  src  https://github.com/lilijreey/OS-D





More information about the Digitalmars-d-learn mailing list