【发布时间】:2014-11-13 01:21:54
【问题描述】:
我正在使用 NASM 学习 x64 ASM。我收到操作码和操作数错误。我找不到任何真正好的文档。很难找到任何解释它的文档。
; nasm/nasm -f macho64 -o asmtest.o asmtest.asm && ld -macosx_version_min 10.7.0 asmtest.o -o asmtest && ./asmtest
;
; External
;
; none
; Define
;
%define SYSCALL_WRITE 0x2000004
%define SYSCALL_EXIT 0x2000001
; Data
;
section .data
text db "Hi.", 0xA
textlen equ $ - text
section .bss
tmp resb 1
; Code
;
section .text
global start
start:
mov rax, 1
mov tmp, rax
call write
write:
mov rax, SYSCALL_WRITE
mov rdi, 1
mov rsi, text
mov rdx, textlen
syscall
call exit
exit:
mov rax, SYSCALL_EXIT
mov rdi, 1
syscall
我收到的错误是
asmtest.asm:32: error: invalid combination of opcode and operands
【问题讨论】:
-
第 32 行是哪一行?
-
对不起!它是 'mov tmp, rax'
标签: macos assembly 64-bit nasm x86-64