在 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)
我正在阅读一本关于如何为 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)