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

x86 32-bits / 64-bits Assembleur Discussion :

Assembleur sous Linux avec Geany : comment compiler ?


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Nouveau membre du Club Avatar de adiya
    Homme Profil pro
    auto didacte
    Inscrit en
    Juillet 2016
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : auto didacte
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2016
    Messages : 90
    Points : 36
    Points
    36
    Par défaut Assembleur sous Linux avec Geany : comment compiler ?
    Bonjour à tous

    Je m'essaie à coder en Assembleur au moyen de l'IDE Geany, sous Linux...

    J'utilise un tutoriel pour apprendre...
    Je bloque au moment de faire un "Make" du petit programme d'apprentissage, et donc je ne peux pas compiler...

    J'ai vu qu il était possible d'avoir accès au terminal Linux dans Geany...
    Est-ce que je suis censé entrer une commande Linux pour compiler ?

    Merci de m'éclairer....
    Le sens d'un Langage est d'exprimer des Concepts... Mais pas trop...

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 431
    Points : 43 057
    Points
    43 057
    Par défaut
    Quand on fait de l'assembleur, on ne compile pas, on assemble.

    Le processus de compilation en C :
    - analyse lexicale, syntaxique et sémantique
    - génération d'un pseudo code intermédiaire et optimisation
    - génération de code assembleur pour le processeur pour lequel est fait la compilation
    - transformation du listing assembleur en langage machine (on utilise le terme d'assemblage, cela produit des fichiers objets)
    - linkage (appelé plutôt édition de liens) avec les bibliothèques dynamiques externes (ou ajout du code machine des fonctions externes appelés en cas de liaison statique) et génération du fichier exécutable.

    De ton coté, tu dois donc assembler ton code assembleur qui est un simple fichier texte, et probablement faire l'édition de liens.

    En gros, quand tu lances gcc pour compiler un programme C, schématiquement c'est comme si tu lances les différents programmes suivants :
    - cc qui va générer le code assembleur
    - as qui va générer le code objet
    - ld qui va faire l'édition de liens et générer l’exécutable final.

    A quoi sert make ?

    make est lié au C ou C++, pas à l'assembleur.

    Quand tu as un projet C, celui-ci est souvent réparti dans plusieurs fichiers. Chaque fichier .c devra être compilé en fichier objet .o. Les fichiers objets devront ensuite être lié entre eux ainsi qu'avec les bibliothèques utilisées dans un fichier exécutable, ce que fait le linker.

    L'application make permet de définir un makefile qui va s'occuper de gérer tout ça, tu vas lui indiquer quels sont les fichiers sources, les directives de compilation (les options), les bibliothèques à lier. L’intérêt étant qu'a lançant ensuite make, tout ce qui doit être fait pour aboutir à l'exe est fait. make ne va pas recompiler à chaque fois les fichiers .c, il ne va générer le .o que si il ne l'a déjà pas, et ne pas le regénérer que si le fichier .c a été modifié. Et avec les bonnes directives, la commande "make install" peut copier l'exe généré dans un dossier précis du système.

    Quand tu utilises un IDE, en général il va s'appuyer sur make, et il doit connaitre le chemin des outils de compilation. Si tu prends un IDE comme Visual Studio, tout est intégré dans le package, pour un IDE léger comme Geany c'est pas le cas. un IDE peut te générer un makefile automatiquement et y ajouter un nouveau fichier .c tout seul si tu en ajoutes un dans ton projet. Tu peux voir un IDE comme un éditeur de texte avancé spécialisé dans les codes sources (exemple des fonctions principales : indentation automatique, fermeture automatique de parenthèses ouvertes, complétion, affichage des options de fonctions des langages supportés, etc.). Ce n'est pas l'IDE qui va faire la compilation, mais il est capable d'appeler les outils de la dite compilation.

    Dans ton cas, soit tu crée un makefile capable de te générer l'exe depuis le code assembleur, tu mets les commandes que tu veux dedans, soit tu assemble directement depuis la console.

    Je te recommandes nasm comme assembleur plutôt que as, celui par défaut.

    Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    nasm -f elf fichier.asm
    gcc fichier.o -o fichier
    Je passe par gcc pour des questions pratiques et lui délègue l'édition de liens, j'aurais pu appeler directement ld (avec une petite modification du code source remplaçant le point d'entrée main, mais c'est un autre sujet)
    l'option -elf que je passe à Nasm est le format de code objet utilisé par Linux : le format elf. Sous windows en remplacerait par win32
    ll'option -o de gcc va permettre en gros de passer directement à l'édition de liens sans passer par la compilation de fichier .c
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Nouveau membre du Club Avatar de adiya
    Homme Profil pro
    auto didacte
    Inscrit en
    Juillet 2016
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : auto didacte
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2016
    Messages : 90
    Points : 36
    Points
    36
    Par défaut
    Merci

    Tout n'est pas évident pour moi, mais je persévère...
    Le sens d'un Langage est d'exprimer des Concepts... Mais pas trop...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/06/2020, 13h47
  2. Compiler Qt 5 sous Linux avec une autre version de GCC
    Par uriotcea dans le forum Débuter
    Réponses: 2
    Dernier message: 15/04/2014, 09h39
  3. Réponses: 5
    Dernier message: 22/05/2012, 11h48
  4. Réponses: 3
    Dernier message: 18/06/2008, 17h27
  5. Pb de compilation sous linux avec geany 0.12
    Par dnode57 dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 05/12/2007, 18h37

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