NASM 2 lines of db (initialized data) seemingly not working

前端 未结 1 967
忘掉有多难
忘掉有多难 2021-01-24 21:48

I have the following x86-64 code, which I can run on OSX Yosemite:

global _main
extern _exit
extern _puts

DEFAULT REL

section .data

putsmsg:    db      \'Puts         


        
1条回答
  •  走了就别回头了
    2021-01-24 21:48

    Works for me on GNU/Linux, with yasm. (After removing the _ prefix from function names.)

    $ yasm -felf64 puts.asm
    $ gcc -o put puts.o
    $ ./puts
    Puts message...
    

    That's with the 2nd db line still present:

    another:    db      0
    

    There was another question about almost exactly this problem (a message not printing when there was more data following the string) on OS X, within the past couple weeks. The OP of that question found that yasm on OS X worked for him. Maybe there's a bug in nasm for OS X?

    I eventually found the post I was talking about: Position Independent Code pointing to wrong address. See the discussion in comments on my answer. The OP found his code worked with yasm, but wasn't able to tell if there was a bug in nasm or if he was just using it wrong.

    0 讨论(0)
提交回复
热议问题