Comment compiler C et Assembleur ensemble?

A

Agnivesh

Guest
J'ai requêtes suivantes concernant (systèmes embarqués) de programmation en C & Assembly.S'il vous plaît, essayez de répondre autant que vous pouvez et vous donner les références connexes en ligne chaque fois que possible dans votre réponse.

1.Bases de la combinaison C & Assembly codes source soit
(a) par code assembleur en ligne dans le fichier source en C, ou
(b) en reliant distincts C et l'objet de montage des dossiers, etc

Réponse à cette requête devraient expliquer certains concepts tels détails d'instructions de compilateur utilisé Autrement dit, comment ceux-ci sont compilés et liés Togather, comment les paramètres sont passés entre les différents modules et la façon dont les paramètres sont stockées, consultées et modifiées dans la pile, ce qui existe différentes façons de passer paramètres, les oscilloscopes de variables dans les différents modules, etc?

2.Comment C ou bibliothèques de code de l'Assemblée sont prises (. Lib,.
H, etc), dire si j'ai un peu de code source en C personnels (. C) et l'Assemblée (. Asm) contenant certaines fonctions, comment puis-je faire de la bibliothèque de sortir de cette et l'utiliser dans mes codes source?Puis-je faire une seule bibliothèque en C et le code assembleur ou dois-je faire deux différentes bibliothèques pour C et de l'Assemblée code?

merci d'avance
Agnivesh.

 
Have u observé l'option-B à la STC (si ur utilisant Turbo C) sa pour la compilation en langage assembleur avec C.
Il ya un prétraitement qui va indiquer au compilateur que Lang asmbly est incluede qui est
# pragma inline
ici avec des compilateurs différents ...

Si vous avez une fonction de montage que vous voulez appeler à partir de C:

_myasmfun:

Vous avez besoin d'ajouter au code assembleur

mondiale _myasmfun

et d'ajouter au code C:

myasmfun extern int (int, int, int);

l'appelant comme

int retval;
retval = myasmfun (1, 2, 3);La compilation C et le code assembleur ensemble:

Supposons que vous avez mycfile.c et myafile.asm.(Il est utile si elles n'ont pas le même nom.)

1.Assemblez le fichier d'assembly:
nasm-f coff myafile.asm
Cela crée un fichier objet, myafile.o.
2.Compiler le fichier C:
gcc-c mycfile.c
Ceci crée un autre fichier objet, mycfile.o.(Vous devriez maintenant voir pourquoi vous ne voulez pas que les deux fichiers source pour avoir le même nom.)
3.Lier vos fichiers objets entre eux:
gcc-o nomdefichier.exe myafile.o mycfile.o

 
Agnivesh, certains compilateurs permettent de combiner C et assembleur.Certains le font pas.Chaque compilateur fonctionne différemment.Il n'existe pas de méthode générale.Vous devez vous référer au manuel d'utilisation de votre compilateur.

sathishkrishna a aimablement fourni des instructions pour un compilateur spécifique.

 
Je n'ai pas de programmation C et assemblage combiné dans Visual C .Si vous utilisez VC je peux déterrer les détails dans mes fichiers et les afficher.

 
i utiliser Borland C Builder
ce programda utilisé lorsque le code assembleur commencer écrire asm (
et à la fin)

et il complie

 
Agnivesh,

Écrit en assembleur en ligne dépend de votre compilateur.Il ya beaucoup de façons différentes cela est fait.

Écrire une fonction en assembleur est une meilleure façon d'aller.Vous devez écrire la fonction en assembleur, en tenant compte du modèle d'exécution de votre compilateur, si vous voulez passer des paramètres ou d'une valeur de retour.Une fois que vous l'avez écrit vous devez assembler la fonction.assurer la assmebler vous utilisez peut créer un fichier objet pouvez lier votre linker.
Ensuite, le définir comme une fonction extern dans un fichier. H dans votre code C.

Création d'une bibliothèque est aussi assez compilateur à charge, mais si votre compilateur vous permet de mélanger C et assembaly vous pourriez être en mesure de le faire dans le répertoire lib ainsi.

Maui

 

Welcome to EDABoard.com

Sponsor

Back
Top