Mach-O 64-bit format does not support 32-bitのエラー
アセンブラの独習の際にエラーが出ましたが解決策がわかりません。英語ソースだと同じような質問が多いのですが知識がないせいか読み解けません、よろしくお願いします。以下のコード.asmを
$ nasm -f macho64 ninestars.asm
で実行した際
section .text
global main ; must be declared for linker (gcc)
main: ; tell linker entry point
mov edx,len ; message length
mov ecx,msg ; message to write
mov ebx,1 ; file descriptor (stdout)
mov eax,4 ; system call number (sys_write)
int 0x80 ; call kernel
mov edx,9 ; message length
mov ecx,s2 ; message to write
mov ebx,1 ; file descriptor (stdout)
mov eax,4 ; system call number (sys_write)
int 0x80 ; call kernel
mov eax,1 ; system call number (sys_exit)
int 0x80 ; call kernel
section .data
msg: db 'Displaying 9 stars',0xa ; a message
len: equ $ - msg ; length of message
s2: times 9 db '*'
次のエラーが出ました。
ninestars.asm:5: error: Mach-O 64-bit format does not support 32-bit absolute addresses
ninestars.asm:11: error: Mach-O 64-bit format does not support 32-bit absolute addresses
おそらくecx
というレジスタがダメなようです