I cannot figure out how to call fputs
from x86 in macOS and direct it to stdout
, I think the problem is how to reference stdout
as a file pointer to pass to fputs
. However, I am able to get fputs
to work when I call it from Linux.
Here is the x86 code which works for Linux:
extern fputs
extern stdout
section .data
text: db `hello, world
`, 0
section .text
global main
main:
lea rdi, QWORD [rel text]
mov rsi, [stdout]
call fputs
ret
For macos/Macho64, my first attempt was:
extern _fputs
extern _stdout
section .data
text: db `hello, world
`, 0
section .text
global main
main:
lea rdi, QWORD [rel text]
mov rsi, [_stdout]
call _fputs
ret
But when linking, I am told that there is no symbol for _stdout
nor is there a symbol for stdout
. And I cannot find any reference online explaining the proper way to call fputs
from x86 on macOS and print to stdout
I have found explanations for how to call fprintf
but for printing to a file not stdout
. I tried simply passing 1
as the value for stdout
, but that failed to work.
question from:
https://stackoverflow.com/questions/65921509/how-to-direct-fputs-to-stdout-in-x86-on-macos 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…