我想开始学习汇编语言,但所有的谷歌搜索都没有任何意义。我得到了一些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