developer.apple.com/library/content/documentation/...

я изучаю сборку носа x86_64 на моем Mac для удовольствия. После Hello World и некоторой базовой арифметики я попытался скопировать немного более продвинутую программу Hello World изэтот сайт и изменив его для 64-битной Intel, но я не могу избавиться от этого сообщения об ошибке:hello.s:53: error: Mach-O 64-bit format does not support 32-bit absolute addresses, Вот команда, которую я использую для сборки и ссылки:nasm -f macho64 hello.s && ld -macosx_version_min 10.6 hello.o, И вот соответствующая строка:

cmp rsi, name+8

rsi - это регистр, который я использую для своего индекса в цикле, а name - это четверное слово, зарезервированное для пользовательского ввода, которое является именем, которое к этому моменту уже было записано.

Вот часть кода (чтобы увидеть остальное, нажмите на ссылку и перейдите вниз, единственное отличие состоит в том, что я использую 64-битные регистры):

loopAgain:
mov al, [rsi]           ; al is a 1 byte register
cmp al, 0x0a            ; if al holds an ascii newline...
je exitLoop             ; then jump to label exitLoop

; If al does not hold an ascii newline...
mov rax, 0x2000004      ; System call write = 4
mov rdi, 1              ; Write to stdout = 1
mov rdx, 1              ; Size to write
syscall

inc rsi

cmp rsi, name+8         ; LINE THAT CAUSES ERROR
jl loopAgain