2011-02-08 15 views
4

J'ai regardé des questions ici et sur Internet pendant un moment maintenant et je n'arrive pas à trouver s'il est possible ou non de faire en ligne assemblage avec GCC en utilisant autre chose que GAS. J'essaie de trouver si je peux éviter d'utiliser non seulement la syntaxe AT & T de GAS (bien que je sais comment utiliser la syntaxe Intel avec GAS) mais le format asm étendu. Bien que ce ne soit pas pour un projet ou autre chose que ma propre curiosité, j'apprécierais vraiment toute aide que je pourrais obtenir (c'est en fait ma première question ici parce que je n'ai pas trouvé de réponse à ce sujet)! Aussi, si cela fait une différence, j'utilise actuellement DevC++ (pour le code C, pas C++) sur Windows.Utilisation d'un autre assembleur (MASM, MSNA, TASM, etc.) avec GCC

Merci, Tom

Répondre

2

Vous pouvez lier la sortie d'un assembleur (un fichier ".o" ou "OBJ") avec votre programme C ou C++. Mettez votre code assembleur dans un fichier texte. Votre IDE ou makefile l'assemblera comme n'importe quel fichier source c. Le seul point délicat est d'apprendre à interfacer les deux systèmes différents.

+0

Ouais, et serait-il vraiment "en ligne" ou juste être un appel de fonction externe à une fonction d'assembleur? Et que voulez-vous dire par le mettre dans un fichier texte? Que l'IDE va ​​le monter pour moi? – atomictom

+0

Ce n'est pas exactement une réponse à * "Utiliser un autre assembleur avec GCC" * car il ne fonctionne pas pour les fichiers source avec l'assemblage en ligne. Je pense que la réponse de @ nelhage est la bonne (si c'est toujours le cas). – jww

1

Vous ne pouvez pas utiliser une autre syntaxe d'assemblage en ligne avec GCC. L'assemblage en ligne est implémenté par GCC en incluant littéralement l'assemblage que vous écrivez en ligne avec sa propre sortie d'assemblage (textuelle), qu'il envoie ensuite à gas pour être assemblé. Comme GCC ne sait pas comment modifier le format de sa propre sortie pour le transmettre à un autre assembleur, vous ne pouvez pas non plus modifier l'assemblage en ligne.

+0

Ce n'est pas exactement vrai; voir cette question SO: http://stackoverflow.com/questions/199966/how-do-you-use-gcc-to-generate-assembly-code-in-intel-syntax – SpellingD