我最近在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

标签: linux, assembly, 64bit, x86-64, nasm

相关文章推荐

添加新评论,含*的栏目为必填