最近我一直在玩 x86 64位汇编语言,运行一个看似简单的程序后,我却感到困惑 :P
尽管我已经编译和链接了它,也没有报错并生成了一个Linux ELF文件,但当我尝试运行它时,却出现了以下错误:
.:[ h4unt3r@sp3ctr4l-h0st asm ]:.
#(0)> ./hello
bash: ./hello: No such file or directory
我猜测这是因为生成了一个无效的ELF文件,所以它报告hello不存在,尽管它确实存在。不确定原因 - 我可能会继续尝试解决它,只是好奇是否可以用简单的方法解决 ^_^
这是我的编译/链接命令行:
nasm -f elf64 hello.s -g
ld -o hello hello.o -lc
代码如下:
section .data
msg: db "Hello, world!",0xa,0
section .text
extern printf
global main
main:
push rbp
mov rbp, rsp
mov rdi, msg
xor rax, rax
call printf
xor rax, rax
pop rbp
ret
编辑--我不想使用gcc :)
我不想使用gcc。