有 x86-64 Linux 汇编器吗?

有 x86-64 Linux 汇编器吗?

我想开始学习汇编语言,但所有的谷歌搜索都没有任何意义。我得到了一些Exec format error甚至使用了wine这不利于理解。所以我想知道是否有人可以告诉我们命令行汇编程序将在x86-64架构上做什么,也许还有一些 Linux 的 hello world 示例?

答案1

有很多可用的汇编器,包括:

  • gas(GCC 的一部分binutils,并受 GCC 支持)——这在任何地方都可用,并且使用 AT&T 风格;
  • NASM(在您的发行版中查找nasm软件包)——这支持英特尔风格的助记符;
  • 亚斯姆这是 NASM 的重写(寻找包yasm);
  • 法斯姆,平面汇编器。

这是一个“Hello world” gas

    .global _start

    .text
_start:
    mov     $1, %rax
    mov     $1, %rdi
    mov     $hello, %rsi
    mov     $13, %rdx
    syscall

    mov     $60, %rax
    xor     %rdi, %rdi
    syscall

hello:
    .ascii  "Hello, world\n"

将其保存到hello.S并使用 构建它gcc -c hello.S && ld -o hello hello.o

NASM 的等效项是:

    section .text
    global  _start

_start:
    mov     rax, 1
    mov     rdi, 1
    mov     rsi, hello
    mov     rdx, len
    syscall

    mov     rax, 60
    xor     rdi, rdi
    syscall

    hello   db "Hello, world",0x0A
    len     equ $ - hello

将其另存为hello.asm,并使用 构建它nasm -felf64 hello.asm && ld -o hello hello.o

答案2

NASM 是一个适用于 Linux/Unix 的优秀汇编器。您可以从 google 找到大量有关 NASM 64 位代码的示例。

对于 Centos,您可以使用以下命令安装 NASM:

yum install nasm -y

对于 debian/ubuntu 可能是:

apt-get install nasm

答案3

SASM

编辑文件。

$ apt-get install sasm

NASM

来编译文件。

$ apt-get install nasm

相关内容