Ошибка о 32-битном адресе в 64-битном режиме для глобальных данных

Я пытаюсь написать простую программу сборки x64 на Mac, используя nasm. Вот моя программа:

global start

section .text
start:
    mov r10, 3; Store 3 to r10
    mov r9, 4; Store 4 to r9
    mov rax, r10; Move 3 to rax because multiply needs an arg in rax
    mul r9; Multiply 3*4. Result in rax.
    mov r9, rax; Move result back to r9.
    mov [myVar], r9; Store result to global
    mov r11, [myVar]; Load global result into r11
    mov rdi, r11; Move result into rax, the argument for syscall
    mov rax, 0x02000001; Select exit system call
    syscall

section .bss
myVar:
    resq 1

Я собираюсь с помощью этой команды:

nasm -fmacho64 test.s

Я получаю эту ошибку:

test.s:10: error: Mach-O 64-bit format does not support 32-bit absolute addresses
test.s:11: error: Mach-O 64-bit format does not support 32-bit absolute addresses

Что мне не хватает? Я просто хочу 64-битную глобальную переменную, в которую я могу читать и писать.

0 ответов

Другие вопросы по тегам