IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Mixer entre du code assembleur et du C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Inscrit en
    Juin 2008
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 304
    Par défaut Mixer entre du code assembleur et du C
    Bonjour



    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.

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 480
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 480
    Par défaut
    Ça dépend de ton compilateur, mais généralement c'est :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    asm ("instructions en assembleur ...");

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par bilred Voir le message
    je voudrai sa voire si il y' a un moyen d'é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.
    Oui, mais c'est rarement une bonne idée. Que veux-tu faire exactement ?

  4. #4
    Inactif
    Inscrit en
    Juin 2008
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 304
    Par défaut
    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.

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par bilred Voir le message
    Bonjour,

    J’utilise un compilateur C sous Ubuntu 8.10. Donc : gcc …… -o ….

    Pour quoi ce n’est pas une bonne idée !!, quels sont les inconvénients d’utiliser de l’assembleur puisque même le code C c’est traduit en langage machine Assembleur ?
    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.

    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.
    Ce n'est pas la bonne méthode.

    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.

  6. #6
    Membre confirmé Avatar de nschoe
    Étudiant
    Inscrit en
    Novembre 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 86
    Par défaut
    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.
    Citation Envoyé par Emmanuel Delahaye
    Oui, mais c'est rarement une bonne idée.
    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') ?

    Merci d'avance, et désolé pour m'éloigner de la question initiale.

  7. #7
    Inactif
    Inscrit en
    Juin 2008
    Messages
    304
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 304
    Par défaut
    Bonjour merci de votre réponse,

    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Et pour Les machines `a pile
    C.à.d :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Donc je voudrai savoir si c’est possible de savoir quelle type de machine moi je possède à registres ou à pile.

    Merci d’avance.

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Dreepser Voir le message
    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') ?
    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.

Discussions similaires

  1. Editer/colorer syntaxiquement du code assembleur
    Par gnogno dans le forum Langage
    Réponses: 8
    Dernier message: 26/09/2005, 22h34
  2. [débutante] conflit entre 2 codes javascript ??
    Par silversky dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/09/2005, 00h42
  3. Réponses: 5
    Dernier message: 21/12/2004, 18h12
  4. Outils d'analyse statique de code assembleur ?
    Par atomic dans le forum Assembleur
    Réponses: 4
    Dernier message: 11/06/2004, 11h42
  5. Peut-on faire du son juste avec du code assembleur ?
    Par Rick1602 dans le forum Assembleur
    Réponses: 7
    Dernier message: 26/03/2004, 17h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo