我最近在linux上玩x86 64位汇编,在编译了一个看似简单的程序之后,我一直在摸不着头脑:P
虽然我编译和链接它不会抛出任何错误并产生一个Linux ELF
当我尝试运行它时,我得到:
.:[ h4unt3r@sp3ctr4l-h0st asm ]:.
#(0)> ./hello
bash: ./hello: No such file or directory
我假设它生成一个无效的ELF文件,这就是为什么它报告你好,即使它是IS.不知道为什么 – 我可能会继续玩它,只是好奇这是否可以通过简单的方法解决^ _ ^
这是我的编译/链接命令行:
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