dan*_*pen 5 macos assembly x86-64 nasm
当我使用时nasm -f macho64 asm1.asm,出现以下错误:
asm1.asm:14: 错误:Mach-O 64 位格式不支持 32 位绝对地址
这是 asm1.asm
SECTION .data ;initialized data
msg: db "Hello world, this is assembly", 10, 0
SECTION .text ;asm code
extern printf
global _main
_main:
push rbp
mov rbp, rsp
push msg
call printf
mov rsp, rbp
pop rbp
ret
Run Code Online (Sandbox Code Playgroud)
我对汇编真的很陌生,几乎不知道这些命令的作用。知道这里有什么问题吗?
Mac OS X 与其他 UNIX/POSIX 系统一样,对 64 位代码使用不同的调用约定。相反,推动所有参数堆栈,它使用RDI,RSI,RDX,RCX,R8,和R9前6个论点。因此push msg,您需要使用类似mov RDI, msg.
| 归档时间: |
|
| 查看次数: |
6794 次 |
| 最近记录: |