1. #1
    Membre confirmé

    Homme Profil pro
    Ingénieur logiciel embarqué
    Inscrit en
    juillet 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur logiciel embarqué
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juillet 2002
    Messages : 235
    Points : 549
    Points
    549

    Par défaut Quel compilateur choisir pour l'assembleur ?

    j'assemble de puis pas tres longtemps avec tasm mais je sais pas m'en servir et je me demandais si il existait des compileurs 'facile et puissant'

    sinon si vous savez ou je peu trouver de la doc sur tasm (si possible en francais)


    enfin sous linux qu'est ce qui existe pour assembler?


    merci d'avance!
    portfolio - " Standards are awesome. Everyone should have one! "

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    septembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2002
    Messages : 96
    Points : 116
    Points
    116

    Par défaut

    Comme assembleur facile et puissant (et qui marche sous linux) , il existe Nasm:
    http://sourceforge.net/projects/nasm/
    Responsable du projet SKAN (OS à but didactique)
    Contactez moi pour toutes questions ou remarques sur le projet.

  3. #3
    Membre expérimenté

    Inscrit en
    mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 720
    Points : 1 570
    Points
    1 570

    Par défaut

    Personellement, j'utilise FASM : petit, complet, performant, et l'auteur est très actif : chaque fois que je vais sur le site pour vérifier l'url, il y à une nouvelle version !
    http://fasm.sourceforge.net

    Smortex

    Les FAQ Assembleur - Linux
    In The Beginning Was The Command Line Neal Stephenson

  4. #4
    Membre confirmé

    Homme Profil pro
    Ingénieur logiciel embarqué
    Inscrit en
    juillet 2002
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur logiciel embarqué
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : juillet 2002
    Messages : 235
    Points : 549
    Points
    549

    Par défaut

    lut smortex c'est moi deqth apres stx asmed j'ai pris fasm mais ya plein de truc qui son differents de tasm: PROC NEAR il en veu pas, les include je sais pas comment ca marche, l'ecriture directe en mem graphique ca marche pas pareil non plus... si il existe de laide sur fasm (et des exemples ) ce serait surement plus facile de changer!
    portfolio - " Standards are awesome. Everyone should have one! "

  5. #5
    Membre expérimenté

    Inscrit en
    mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : mai 2002
    Messages : 720
    Points : 1 570
    Points
    1 570

    Par défaut

    Personellement, je le trouve moins ch*** que certains compilos : un programme genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
      org 100h
      Xor Ax,Ax
      Int 16h
      Ret
    Marche Impec ! Pas besoin de trimbaler "Machin:", "END Machin" et autre...

    Certe, la doc de FASM est relativement pauvre (Elle n'est pas terminée), mais je ne trouve pas que ca soit un problème car :
    - On trouve pas mal d'exemples sur le site de FASM.
    - On peut trouver un OS développé entièrement avec FASM.
    - Les sources sont fournies avec l'exe.

    Généralement, les modifications à apporter à un code sont mineures : Es:[Di] devient [Esi] ; JMP LONG devient JMP FAR, ... Mais ca n'est qu'une question d'habitude.

    Le seul défaut que je trouve à se compilateur est au niveau de la recherche des fichiers include : il ne scane pas le dossier du .asm que l'on compile et cela peut poser des problèmes si on compile depuis un autre dossier (Je vais en parler à l'auteur, sauf si cette fonctionnalité à été ajoutée dans la dernière version).

    Smortex

    Les FAQ Assembleur - Linux
    In The Beginning Was The Command Line Neal Stephenson

  6. #6
    BuG
    BuG est déconnecté
    Membre à l'essai
    Profil pro
    Inscrit en
    novembre 2002
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2002
    Messages : 44
    Points : 23
    Points
    23

    Par défaut ...

    Ya masm aussi un assembleur sous windows, je crois que c'est un Freeware développé par micro$oft allucinant non ?

    http://www.protools.cjb.net

    Je suis pas sur de l'URL.

    Salut @+

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    mars 2002
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2002
    Messages : 24
    Points : 21
    Points
    21

    Par défaut

    moi j'utilise NASM que je trouve plutot bien :
    * Gratuit
    * Existe sous Windows et Linux
    * pas chiant
    * Documenté correctement
    _____________
    (c) Maw-ware

  8. #8
    Membre habitué Avatar de Causa Sui
    Inscrit en
    mai 2003
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : mai 2003
    Messages : 133
    Points : 199
    Points
    199

    Par défaut

    Je suis peut-être un mais j'ai toujours du mal avec FASM...
    Sinon vu que je ne suis qu'un noob j'utilise encore parfois le debug de windows

  9. #9
    Candidat au Club
    Inscrit en
    juin 2003
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : juin 2003
    Messages : 2
    Points : 2
    Points
    2

    Par défaut A propos de compilateurs ASM

    Bonjour a tous...

    Pour info, vous pourrez trouver tout ce dont vous avez besoin pour MASM32 ici :
    http://www.chez.com/asmgges/index.htm
    qui integre une IDE, les LIBS, les en-tetes, etc, etc... Plus les excellents "tutoriaux" de Iczelion !

    Il existe aussi un autre compilateur pour Win32 qui s'appele SpAsm bien equipe et disponible ici :
    http://betov.free.fr/SpAsm.html

    NOTA : MASM est base sur la syntaxe INTEL, tandis que SpAsm est comme NASM, c.a.d base sur la syntaxe AT&T

    Avantages et inconvenients :
    MASM est disponible que sous Win32
    Syntaxe plus intuitive
    Facilite d'utilisation
    En plus la syntaxe utilisee est la meme que lors de l'integration de code ASM sous VC++ (portage code...)

    NASM est dispo sous Win32 et Linux
    Syntaxe plus precise, mais moins intuitive
    Forte communaute de developpeur

    Voila c'est tout..


  10. #10
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Lead developer web full stack
    Inscrit en
    mai 2002
    Messages
    3 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lead developer web full stack

    Informations forums :
    Inscription : mai 2002
    Messages : 3 815
    Points : 6 401
    Points
    6 401

    Par défaut

    J'utilisais TASM / TASM32, mais récemment je me suis mis à NASM et il m'a séduit ! Certes au début il faut un peu s'habituer à la syntaxe, mais la doc précise tout ce qu'il faut savoir, et d'autre part, la syntaxe est plus simple et plus rigoureuse (plus proche de la machine). Attention toutefois, NASM n'est qu'un assembleur, il te faut en + un linker pour produire du code exécutable. Sous Win32, le couple NASM + ALINK marche très bien, à condition d'avoir également les fichiers win32n.inc et win32.lib (respectivement pour nasm et alink).
    Voici un "hello world" version nasm :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    ; NASM pour win32 : premier test
    ; Compile: nasmw -fobj prog.asm -p C:\nasm\inc\win32n.inc
    ;          alink prog.obj -oPE -o prog.exe C:\alink\win32.lib
     
    extern MessageBoxA
    extern ExitProcess
     
     
    section .data use32
      titre db 'Premier test',0
      msg   db 'Voilà ça marche NASM ;)',0
     
     
    section .text use32
     
    ..start                   ; entry point
      push	0
      push	titre
      push	msg
      push	0
      call	MessageBoxA
     
      push	0
      call	ExitProcess

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

  11. #11
    Candidat au Club
    Inscrit en
    juin 2003
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : juin 2003
    Messages : 2
    Points : 2
    Points
    2

    Par défaut

    Tres juste OVH, il te faut en effet un linker pour creer un PE. ALINK est un excellent choix
    Ceci dit, si tu commence a Start Adress 0100h, et que tu fais un *.com tu n'en a pas besoin

  12. #12
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Lead developer web full stack
    Inscrit en
    mai 2002
    Messages
    3 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lead developer web full stack

    Informations forums :
    Inscription : mai 2002
    Messages : 3 815
    Points : 6 401
    Points
    6 401

    Par défaut

    Effectivement, et tu me fais penser que nasm permet de créer facilement aussi des secteurs de boot par exemple, mais aussi d'inclure des fichiers binaires dans le source etc. Bref, nasm c'est du tout bon

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2002
    Messages : 842
    Points : 712
    Points
    712

    Par défaut

    Je ne vois pas en quoi la syntaxe est plus rigoureuse ou plus logique, ni même plus proche de la machine

  14. #14
    Membre habitué Avatar de Causa Sui
    Inscrit en
    mai 2003
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : mai 2003
    Messages : 133
    Points : 199
    Points
    199

    Par défaut

    Je me posais une question sur lec ompilateurs... est-ce que ils sont compatible avec les prcocesseurs les plus avancés, je veux dire: signalent-ils comme faux les intructions de 3DNow! d'AMD, par exemple, ou supportent-ils les intructions basées sur des reg64?

  15. #15
    Membre habitué
    Avatar de TangiX
    Profil pro
    Inscrit en
    juin 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 139
    Points : 165
    Points
    165

    Par défaut

    cela depend des compilateurs certains propose les instructions tel que sse 3DNow! ect.
    sinon il bloque puisqu'il ne connait pas l'instruction
    il est toutefois possible de coder toutes les instructions en langage machine :
    db 90h = Nop

  16. #16
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Lead developer web full stack
    Inscrit en
    mai 2002
    Messages
    3 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lead developer web full stack

    Informations forums :
    Inscription : mai 2002
    Messages : 3 815
    Points : 6 401
    Points
    6 401

    Par défaut

    Citation Envoyé par Blustuff
    Je ne vois pas en quoi la syntaxe est plus rigoureuse ou plus logique, ni même plus proche de la machine
    Parce que NASM ne s'encombre pas de pseudo-code comme les "proc" de TASM par exemple. Au niveau des adresses effectives, même chose : le mot-clé "offset" est inutile, et la syntaxe de nasm impose de mettre toute l'adresse entre crochets. Pas moyen donc de mettre mov ax, es:[bx] mais il faudra mettre mov ax, [es:bx]. Et c'est comme ça que ça apparaît dans un déboggueur --> plus proche de la machine.

    Plus de détails ici :
    http://194.65.3.199/win32asm/tutorial/gij.html

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    juillet 2002
    Messages
    842
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2002
    Messages : 842
    Points : 712
    Points
    712

    Par défaut

    - La directive PROC permet de definir une convention d'appel et de générer des codes prologues/epilogues. Je ne vois pas en quoi elle est inutile.

    - Le mot clé offset a son utilité. Ces deux assembleurs on choisi d'opter pour la convention d'ecriture dans laquelle un nom de variable designe son contenu. Ansi après la déclaration :

    'Variable' designe le contenu de la mémoire. D'où dans se modèle l'utilité du mot clé offset. Maintenant ce qui justufue ce choix, est la compatibilité avec les langafges de haut niveau. Il est absurded de programmer entièrement en asm c'est important. En C après la déclaration :

    'Variable' designe bien le contenu de la variable, et &Variable son adresse. En cela cette syntaxe est très coherente.

    - Dans le débuguerur que j'utilise la syntaxe es:[bx] est utilisée.

  18. #18
    Membre actif

    Profil pro
    Inscrit en
    décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2002
    Messages : 339
    Points : 275
    Points
    275

    Par défaut

    - Pour être utilisateur de TASM, je n'utilise jamais les PROC, donc même dans TASM ça peut être oublié s'il le faut

    - Je suis d'accord avec Blustuff que l'offset est important. Il y a une différence énorme entre :
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mov ax,offset variable
    Le premier est codé par A1h et met dans AX le contenu de 'variable'. Dans le deuxième cas (codé B8h), on met dans AX l'adresse (offset) de où se situe 'variable '. Y'a quand même une énorme différence qui apporte souvent des erreurs de programmation

    - Au niveau du debugger, moi aussi je n'ai que des es:[bx] et pas de [es:bx]. Mais je pense que c normal car on doit avoir les mêmes debuggers avec Blustuff. Par contre, dans toute la litérature que j'ai lu, tout le monde adressé de la manière es:[bx] et pas de la manière [es:bx]. A se demander si ce n'est pas une "norme" ?
    Ma boule de cristal s'était éclaircie et puis plus rien. Alors je me suis mis à internet et maintenant j'ai plus de renseignements qu'avec cette satané boule .....

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    juin 2003
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2003
    Messages : 29
    Points : 35
    Points
    35

    Par défaut

    L'équivalent avec NASM serait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            mov        ax,[variable]        ; Place le contenu de variable dans AX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            mov        ax,variable          ; Place l'adresse de variable dans AX
    Il n'y a pas d'ambiguités possibles.

  20. #20
    Membre actif

    Profil pro
    Inscrit en
    décembre 2002
    Messages
    339
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2002
    Messages : 339
    Points : 275
    Points
    275

    Par défaut

    je préfèrerais quand même un compilateur avec comme notation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mov ax,[variable]
    mov ax,offset variable
    Comme ça, il n'y aurait pas d'ambiguité, surtout pour les débutants
    Ma boule de cristal s'était éclaircie et puis plus rien. Alors je me suis mis à internet et maintenant j'ai plus de renseignements qu'avec cette satané boule .....

Discussions similaires

  1. Assembleur : quel cours choisir pour débuter ?
    Par Débutant_ASM dans le forum Assembleur
    Réponses: 3
    Dernier message: 26/02/2010, 18h36
  2. Quel Compilateur choisir pour le C++
    Par IDE dans le forum Choisir des outils
    Réponses: 5
    Dernier message: 15/06/2007, 14h09
  3. Quel SGBD choisir pour remplacer Access ?
    Par ggl'Nouveau dans le forum Décisions SGBD
    Réponses: 11
    Dernier message: 17/11/2003, 10h21
  4. Quel outil choisir pour un développement SQL-Server ?
    Par Mouse dans le forum Débats sur le développement - Le Best Of
    Réponses: 23
    Dernier message: 12/08/2003, 06h23
  5. quel langage choisir pour faire de script sous windows
    Par pas05 dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 18/11/2002, 22h42

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