在 x86_x64 架构上汇编 x86 汇编源代码

Assembling x86 assembly source code on x86_x64 architecture

我正在阅读一本关于如何为 x86 编写程序集的书 Linux。

我想 assemble 在我的 x86_x64 Linux OS:

上 assemble 以下汇编源代码 (exit.s)
.section .data

.section .text
.globl _start
_start:
    mov1 , %eax
    mov1 [=11=], %ebx
    int [=11=]x80

通过调用此命令:as exit.s -o exit.o

但是,assembler 退出并出现以下错误:

exit.s: Assembler messages:
exit.s: Warning: end of file not at end of a line; newline inserted
exit.s:6: Error: no such instruction: `mov1 ,%eax'
exit.s:7: Error: no such instruction: `mov1 [=12=],%ebx'

据我所知,x86_x64 Linux 的指令集与 x86 不同,因此出现错误。通过将 mov1 替换为 mov,assembler 编译成功。然而,鉴于本书的其余部分是为 x86 编写的,我希望能够 assemble x86 汇编用于我的 OS.

我在某处读到可以通过指定选项 --32 来做到这一点,就像这样:as --32 exit.s -o exit.o,但是这样做,我收到了与以前相同的错误。

如何在 x86_x64 架构上 assemble x86 源代码?

这段代码有两个问题:

 mov1 [=10=], %ebx

应该是movl,(看1和[=13=的区别,有些字体是一样的)

另一个,次要的是缺少换行符,只需在文件末尾插入一个即可。

到assemble文件使用as --32 exit.s -o exit.o(假设是64位assembler)