Я недавно обновил свою ОС, теперь я нахожусь под Mojave 10.14.1.Я также обновил свой Xcode, который успешно удалил мое предупреждение во время соединения.Но я до сих пор не могу понять, почему простая программа printf с NASM x86_64 теперь всегда вызывает ошибку в конце своего выполнения ... Вот мой код:
section .data
str db "Hello World", 10
section .text
global start
global _main
extern _printf
start:
call _main
ret
_main:
push rbp
sub rsp, rbp
sub rsp, 16
lea rdi, [rel str]
call _printf
xor rax, rax
leave
ret
Сообщение Hello World всегда печатается настандартный вывод, как и ожидалось, но потом он дает мне ошибку ... Вот мои строки компиляций
nasm -fmacho64 hello.s -o hello.o
ld hello.o -macosx_version_min 10.12 -lSystem
С lldb я не могу понять проблему, но я получил это:
thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x18)
frame #0: 0x0000000000001fdc a.out`main + 47
a.out`main:
-> 0x1fdc <+47>: leave
0x1fdd <+48>: retq
a.out`printf:
0x1fde <+0>: jmpq *0x2c(%rip) ; (void *)0x00007fff750f48ec: printf
0x1fe4: leaq 0x1d(%rip), %r11 ; (void *)0x0000000000087e80: initialPoolContent + 624
Target 1: (a.out) stopped.
если кто-нибудь знает, как решить эту проблему, это было бы очень полезно!Спасибо!