5 Stimmen

Wie kann ich Gas ('as') verwenden, um eine 32-Bit-Binärdatei auf einem 64-Bit-Linux zu assemblieren?

Wie kann ich Gas ('as') verwenden, um den Quellcode zu einer 32-Bit-Binärdatei unter 64-Bit-Linux zu assemblieren?

Dies dient dem Zweck, 32-Bit-Tutorials zu folgen, ohne dass man alle Zeiger und viele Anweisungen in Quad-Words ändern muss.

Danke,

Chris.

P.S. Ich kann das leicht in C machen...

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

6voto

Gunther Piez Punkte 28746

Utilice as mit der Option "--32", wie

as --32 source.s -o objectfile

Oder Sie können einfach gcc verwenden, um eine Assembler-Quelldatei zu assemblieren und zu linken. gcc erkennt sie an der Endung.

gcc -m32 source.s -o executable

2voto

jim Punkte 196

Möglicherweise müssen Sie auch Dateien mit dem Linker verknüpfen -m Option, um die Emulation für verschiedene Zielarchitekturen einzustellen. ld --help enthält eine Liste der möglichen Emulationswerte.

ld -m elf_i386 -o file file.o file2.o ...etc

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X