6 votes

La manière la plus pure d'assembler/compiler un fichier sans aucun autre bloque ELF/Object.

Je ne peux pas croire que cela soit si difficile. Je travaille sur SPARC Solaris 8. et nous avons une sorte de GNU-gcc (3.4.2) et un assembleur 'as' (Sun WorkShop 6 2003/12/18 Compiler Common 6.0).

Quoi qu'il en soit, j'ai essayé plusieurs façons de produire un fichier purement binaire, comme par exemple

gcc -c yadda.s

ou en invoquant uniquement l'assembleur

comme yadda.s

J'ai également étudié la page de manuel de l'assembleur, mais je n'ai pas trouvé beaucoup de nouveautés :( Page de manuel AS : http://pastebin.com/0FSNxhq1

Donc, j'obtiens toujours un certain Bloat dans mon fichier objet résultant. Je ne veux pas de ces 50 octets de tête liés à l'ELF. * ou ce que l'assembleur a pensé qui pourrait aider mon initialisation ou ce qu'il pense.

Ce que je cherche, c'est une sortie binaire pure de JUST mon code.

Merci d'avance :)

9voto

ughoavgfhw Points 28400

L'assembleur ne produit pas de code exécutable, il produit un fichier objet. Pour le rendre exécutable, vous devez le lier en utilisant ld . Cette commande vous permet de spécifier le format de sortie, qui peut être binaire (si votre build le supporte).

as yadda.s -o yadda.o
ld yadda.o -o yadda --oformat=binary

Vous devriez être en mesure de le faire en une seule ligne en utilisant gcc :

gcc yadda.s -o yadda -Xlinker --oformat=binary

4voto

Si vous voulez vraiment un fichier binaire brut, vous pouvez en générer un à partir d'un fichier ELF en utilisant :

objcopy -O binary yadda.elf yadda.bin

Notez que vous ne serez pas en mesure d'exécuter le fichier résultant normalement, puisque le noyau n'aura plus aucune idée de la façon de le charger.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X