64-bitlik 32-bit ikkilikni 64-bitli Linux-da yig'ish uchun Gas ('as') dan qanday foydalanishim mumkin?

64 bitlik Linux-da 32 bitli ikkilikni yig'ish uchun Gas ('as') dan qanday foydalanishim mumkin?

Bu 32-bitlik o'quv qo'llanmalarni ta'qib qilish maqsadida, barcha ko'rsatkichlar va ko'rsatmalarning ko'pini to'rt so'zga o'zgartirish majburiyatini olmagan.

Rahmat,

Chris.

P.S. Buni osongina Cda qila olaman ...

[email protected]:~$ cat test.c
#include "stdio.h"

int main() {
    printf("hello world");
    return 0;
}

[email protected]:~$ gcc test.c -o test64
[email protected]:~$ gcc -m32 test.c -o test32
[email protected]:~$ 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
[email protected]:~$ 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
3
- 32 yoki gcc bilan -m32 dan foydalaning
qo'shib qo'ydi muallif user786653, manba

2 javoblar

ni sifatida ishlatib, "-32" ni tanlang

sifatida --32 source.s -o objectfile

Yoki faqat gcc ni assemler manba faylini biriktirish va bog'lash uchun ishlatishingiz mumkin. gcc buni oxirigacha biladi.

gcc -m32 source.s -o executable

4
qo'shib qo'ydi
Rahmat, men ko'rayotganimda ko'rdim - bu odam sahifasida ... Maqsad i386 variantlari: [-32 | --64] [-n] [-march = CPU [+ EXTENSION ...]] [-mtune = MARKAZIY PROTSESSOR]
qo'shib qo'ydi muallif fadedbee, manba

Turli maqsadli arxitekturalar uchun emulyatsiya o'rnatish uchun -m havolasini foydalanib, fayllarni ulashingiz kerak bo'lishi mumkin. ld --help , mumkin emülasyon qiymatlari ro'yxatini beradi.

ld -m elf_i386 -o file file.o file2.o ...etc
1
qo'shib qo'ydi