如何使用 Gas (as) 在 64 位 Linux 上汇编 32 位二进制文件?
如何在 64 位 Linux 上使用 Gas ('as') 将源代码汇编为 32 位二进制文件?
这是为了遵循 32 位教程,而无需将所有指针和大量指令更改为四字。
谢谢,
克里斯。
PS我可以用C轻松做到这一点...
chris@chris-linux-desktop:~$ cat test.c
#include "stdio.h"
int main() {
printf("hello world");
return 0;
}
chris@chris-linux-desktop:~$ gcc test.c -o test64
chris@chris-linux-desktop:~$ gcc -m32 test.c -o test32
chris@chris-linux-desktop:~$ file test32
test32: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
chris@chris-linux-desktop:~$ file test64
test64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
How can I use Gas ('as') to assemble source to a 32 bit binary on 64 bit Linux?
This is for the purpose of following 32 bit tutorials without the hassle of having to change all the pointers and lots of instructions to quad words.
Thanks,
Chris.
P.S. I can easily do this in C...
chris@chris-linux-desktop:~$ cat test.c
#include "stdio.h"
int main() {
printf("hello world");
return 0;
}
chris@chris-linux-desktop:~$ gcc test.c -o test64
chris@chris-linux-desktop:~$ gcc -m32 test.c -o test32
chris@chris-linux-desktop:~$ file test32
test32: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
chris@chris-linux-desktop:~$ file test64
test64: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将
as
与选项“--32”一起使用,例如as --32 source.s -o objectfile
或者您可以仅使用 gcc 来汇编和链接汇编器源文件。 gcc 通过结尾来识别它。
gcc -m32 source.s -o 可执行文件
Use
as
with the option "--32", likeas --32 source.s -o objectfile
Or you can just use gcc to assemble and link an assemler source file. gcc recognizes it by the ending.
gcc -m32 source.s -o executable
您可能还需要使用链接器
-m
选项来链接文件,以便为不同的目标体系结构设置模拟。ld --help
给出可能的模拟值列表。You might also need to link files using the linker
-m
option to set emulation for different target architectures.ld --help
gives list of possible emulation values.