在ubuntu上使用nasm的64种汇编语言

时间:2014-01-05 15:37:51

标签: ubuntu assembly 64-bit nasm

我正在尝试用64位汇编编写一个简单的hello world程序,并在Ubuntu 64位上运行。该计划如下:

global _start           ; entry point export for ld section .text   
_start:     ; system call to write message to stdout
    mov rax, 1      ; sys_write
    mov rdi, 1      ; stdout
    mov rsi, mes    ; message address
    mov rdx, len    ; message length
    syscall     ; exit sys call
    mov rax, 60     ; exit call id
    mov rdi, 0      ; return success
    syscall
section .data
    mes: db 'Hello, world!',0x0A    ; message
    len :   equ $-mes   

我使用nasm -f elf64 hello64.asm组装了它 并尝试使用ld -o hello64 hello64.o链接它 它给了我以下错误 -

  

ld:i386:输入文件“hello64.o”的x86-64架构不兼容   使用i386输出

即使使用标志--oformat elf64-x86-64或elf64-little或elf64-big,我也会收到同样的错误。

有人可以帮帮忙吗?

2 个答案:

答案 0 :(得分:2)

以下适用于我的系统:

nasm -f elf64 hello64.asm
ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o hello64 hello64.o

答案 1 :(得分:0)

您可以考虑再次运行apt-get update。我在更新版本15.04上运行它并且它正在为我工​​作。