Почему возникают проблемы с абсолютной адресацией?

Я новичок в сборке (NASM). У меня вопрос. Этот код не работает, когда я использую macho64. Проблема с 32-битной абсолютной адресацией в mov qword[example], 'hello world' . почему тут проблема?

section .data
example: db 0

section .text
global main
main:
    mov qword[example], 'hello world'
    mov rax, 0x2000004
    mov rsi, example
    mov rdi, 1
    mov rdx, 11
    syscall
    mov rax, 0x2000001
    xor rdi, rdi
    syscall

Что такое default rel и что в нем указано? Спасибо


person Дени стрельцов    schedule 20.06.2021    source источник
comment
Это может быть актуально: cs.lmu.edu/~ray/notes/nasmtutorial   -  person shree.pat18    schedule 20.06.2021
comment
Я читал о rel по умолчанию в этой ссылке, но нет объяснения, что это такое   -  person Дени стрельцов    schedule 20.06.2021
comment
Читали ли вы руководство по этой теме?   -  person fuz    schedule 20.06.2021
comment
почти дубликат, не фокусируется на том, что такое относительная адресация RIP, но охватывает другие части, почему: 64-битный формат Mach-O не поддерживает 32-битные абсолютные адреса. NASM Accessing Array. изменить: найден хороший дубликат, см. список дубликатов вверху.   -  person Peter Cordes    schedule 20.06.2021
comment
Также обратите внимание, что 'hello world' составляет 11 байтов, а mov qword [mem], sign_extended_imm32 имеет место только для 4. И что вы сохраняете 8 байтов в том месте, где вы сделали db 0, чтобы зарезервировать 1 байт.   -  person Peter Cordes    schedule 20.06.2021