Bonjour :oops:
je voudrai sa voire si il y' a un moyen de Écrire du code assembleur à l'intérieur d'un code C.
si sa existe si possible de donné la syntaxe du bloc ou en peu écrire du Assembleur dans le code C.
Merci d'avance. :roll:
Version imprimable
Bonjour :oops:
je voudrai sa voire si il y' a un moyen de Écrire du code assembleur à l'intérieur d'un code C.
si sa existe si possible de donné la syntaxe du bloc ou en peu écrire du Assembleur dans le code C.
Merci d'avance. :roll:
Ça dépend de ton compilateur, mais généralement c'est :
Code:asm ("instructions en assembleur ...");
Bonjour,
J’utilise un compilateur C sous Ubuntu 8.10. Donc : gcc …… -o ….
Pour quoi ce n’est pas une bonne idée !!, quelle son les inconvénients d’utiliser de l’assembleur puisque même le code C c’est traduit en langage machine Assembleur ?
Je suis entraine de réaliser un mini compilateur en utilisant Flex et Yacc et j’ai générai du code intermédiaire en utilisant « Quadrupler ».
Ce que je veux faire : c’est justement Généré du code Objet.
Qui est : dés quadrupler Génère le code assembleur équivalant.
C’est pour sa je veux fait du Assm dans du code C. ;)
SI on utilise un langage de haut niveau comme le C, c'est justement pour éviter d'avoir à écrire soi même le code assembleur. Ce travail est confié au compilateur, qui écrira le bon code en fonction de la cible choisie, et ce à partir du même code C. Si tu commences à mettre toi même l'assembleur dans le source C, ça signifie :
- Que le code n'est plus portable
- Que tu te crois meilleur qu'un compilateur pour écrire de l'assembleur
- Que tu veux faire quelque chose qu'un compilateur C ne saurait pas faire.
Ce n'est pas la bonne méthode.Citation:
Je suis entraine de réaliser un mini compilateur en utilisant Flex et Yacc et j’ai généré du code intermédiaire en utilisant « Quadrupler ».
Ce que je veux faire : c’est justement générer du code Objet.
Qui est : dés quadrupler Génère le code assembleur équivalent.
C’est pour sa je veux faire de l'Asm dans du code C. ;)
Le principe est de générer du code source assembleur (qui n'est que du texte pur) dans un fichier, et de le confier ensuite à un traducteur (as, par exemple) qui générera le code machine.
Il n'y a absolument pas besoin de mettre du code assembleur dans un source C pour ce que tu veux faire.
Bonjour,
Je ne me permettrais pas d'intervenir dans cette discussion, je profite juste d'une remarque de Emmanuel Delahaye pour poser une petite question.
Dans le cas de l'OS dev' est-ce que l'ASM inline est justifié (i.e. est-ce pour ça que vous avez mis "rarement" et non pas "jamais" ?) ou est-ce qu'on peut toujours (et on devrait) séparer le code C du codes Assembleur (je parle toujours dans le cadre de l'OS dev') ?Citation:
Envoyé par Emmanuel Delahaye
Merci d'avance, et désolé pour m'éloigner de la question initiale.
Bonjour merci de votre réponse, :ccool:
Voila j’ai lu dans un livre que il existe 2 type de machine,
Pour une opération X= Y+Z se traduira donc ainsi pour
Les machines `a registres
C.à.d :
Et pour Les machines `a pileCode:
1
2
3
4 MOVE Y,R1 // déplace la valeur de Y dans R1 MOVE Z,R2 // déplace la valeur de Z dans R2 ADD R1,R2 // ajoute R1 `a R2 MOVE R2,X // déplace la valeur de R2 dans X
C.à.d :
Donc je voudrai savoir si c’est possible de savoir quelle type de machine moi je possède à registres ou à pile.Code:
1
2
3
4 PUSH Y // met la valeur de Y au sommet de la pile PUSH Z // met la valeur de Z au sommet de la pile ADD // remplace les deux valeurs au sommet de la pile par leur somme POP X // enlève la valeur au sommet de la pile et la range dans X
Merci d’avance. ;)
Le processeur x86 est assez hybride: Son organisation est celle d'une machine à registre, mais la pile y possède quand même une grande importance.
De plus, c'est un processeur CISC et non RISC, il peut donc effectuer des instructions complexes (comme additionner une valeur sur la pile à un registre, et placer le résultat à l'un de ses deux endroits).
En supposant que " l'OS dev" signifie le développement d'un OS, oui, il est parfois nécessaire d'utiliser de l'assembleur pour réaliser des opérations critiques particulières à un processeur donné, comme la modification de la pile et autres joyeusetés très 'système' (DMA, niveau variable d'interruptions etc.)...
Dans ce cas, une macro inline dont le code dépend de la cible est tout à fait indiqué.
Encore une fois, ce sont des cas rares qui n'ont rien à voir avec la demande du PO ni la programmation applicative en général.