Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mémo sur l'Assembleur

Ressources, bonnes pratiques, ...?

Anonyme
    30 juillet 2013 à 14:23:46

    Bonjour,

    Ce fil de discussion a pour objectif de recenser un maximum de ressources sur l'assembleur (langage d'assemblage pour les puristes) en général. Nous commencerons par afficher une liste des assembleurs / logiciels / ressources utilisables en fonction des architectures cible :

    Documentations génériques

    Computer Organisation And Design Assemblers and loaders

    Assembleur Intel x86

    Je me permets de commencer par celle-ci car c'est l'une des principales architectures qui semble être abordées par les programmeurs désireux de pouvoir rapidement programmer en obtenant des résultats concrets :

    Logiciels sympathiques :

    • l'IDE winasm ( http://www.winasm.net/ ) qui intègre un éditeur de ressources (pratiques pour faire ses dialogues sans se taper d'écriture de code fastidieuse par exemple)
    • Immunity Debugger ( http://www.immunityinc.com/products-immdbg.shtml ) : pour déboguer vos binaires sous Windows, avec support de scripting en python. Très utilisé pour faire de la recherche de vulnérabilités dans un binaire.
    • OllyDbg ( http://www.ollydbg.de/ ) : vous verrez qu'il ressemble énormément à Immunity Debugger et c'est normal : Ollydbg a été racheté par Immunity Inc. Je trouve Immunity plus complet et plus synthétique qu'Ollydbg puisque celui-ci a des fonctionnalités différentes en fonction des versions, mais je mets quand même le lien ici pour les intéressés
    • IDA ( https://www.hex-rays.com/products/ida/index.shtml ) : désassembleur très puissant qui couvre une large gamme de formats de binaires et d'architectures. La version pro est payante mais il existe une version free.

    Documentations :

    Assembleur ARM

    Documentations :

    Tout le monde est invité à partager ses références. J'essaierai d'éditer ce pour qu'il soit aussi organisé et complet que possible.

    -
    Edité par Anonyme 7 octobre 2013 à 22:25:45

    • Partager sur Facebook
    • Partager sur Twitter
      31 juillet 2013 à 9:24:18

      Ha cool... intéressant.

      Perso je trouve que le x86 est tout sauf la bonne plateforme pour s'attaquer à l'ASM. Le jeu d'instruction et le fonctionnement du prof étant, poids de l'histoire oblige, assez affreux.

      Je trouve ARM beaucoup plus adapté pour ça. Et comme ressource pas trop mal pour débuter/s'initier je propose http://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/ qui est un tuto sur la création d'un mini-OS en ASM pour le Raspberry Pi. C'est simple et efficace et ça fait une bonne intro. Au passage je ne peux qu'encourager les débutants à utiliser des plateformes plus simple qu'un PC x86 pour débuter avec l'ASM.

      J'ai d'autres liens qui traînent, je fouillerais mes bookmark à l'occasion

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        31 juillet 2013 à 10:16:41

        Merci kristofjé, c'est rajouté ! ;)

        kristofjé a écrit:

        Ha cool... intéressant. Perso je trouve que le x86 est tout sauf la bonne plateforme pour s'attaquer à l'ASM. Le jeu d'instruction et le fonctionnement du prof étant, poids de l'histoire oblige, assez affreux.

        Il y a tout de même moyen de faire des choses intéressantes tout en se limitant aux instructions de base, sans forcément attaquer le FPU d'entrée. En ce qui concerne l'assembleur sous ARM je le connais très peu et je n'ai pas eu l'occasion de bidouiller avec comme j'avais l'occasion de faire avec x86, donc je ne peux que m'en remettre à tes propos. ^^

        • Partager sur Facebook
        • Partager sur Twitter
          2 août 2013 à 13:33:55

          Très bonne initiative. :)

          Ma maigre contribution pourrait être le (très controversé) Art of Assembly Language Programming, introduction assez généraliste et fournie sur les assembleurs, mais qui n'est maintenant plus vraiment concrète.

          -
          Edité par Lucas-84 2 août 2013 à 13:35:05

          • Partager sur Facebook
          • Partager sur Twitter
          Staff désormais retraité.
          Anonyme
            2 août 2013 à 13:46:29

            Ton lien m'a l'air vachement complet ! Qu'entends-tu par plus vraiment concrète ?

            • Partager sur Facebook
            • Partager sur Twitter
              8 août 2013 à 10:14:47

              Merci beaucoup
              • Partager sur Facebook
              • Partager sur Twitter
              more then you think
                16 août 2013 à 5:11:52 - Message modéré pour le motif suivant : Toute forme de publicité est interdite


                  7 septembre 2013 à 20:06:38

                  Ge0 a écrit:

                  • masm ( http://www.masm32.com/ ) le macro assembleur de Microsoft, (limité au format PE, clauses qui interdisent de créer des malwares, ne supporte pas l'assemblage de certaines instructions...)

                  -

                  Edité par Ge0 le 2 août 2013 à 13:46:52

                  Salut!

                  1°) Concrètement en quoi masm est limité? Cela veut dire qu'il est bridé volontairement? Dans ce cas pourquoi ne pas se contenter de nasm?

                  2°) Concernant The Art of Assembly, je me suis penché dessus, en pensant l'acheter, et je me suis aperçu qu'il était plutôt orienté HLA, qui n'est pas de l'assembleur pur. Est ce que vous connaissez un bouquin (ou un ensemble de bouquins) qui permettrait d'apprendre l'assembleur d'une manière assez complète?



                  -
                  Edité par le zero pointé 7 septembre 2013 à 20:08:01

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    7 septembre 2013 à 20:30:42

                    Salut le zéro pointé,

                    Merci pour ton message. Dans l'ordre :

                    1) MASM n'assemble pas certaines instructions de mémoire, genre SYSENTER, SYSEXIT... Et les programmeurs Microsoft préféreront les macros de MASM pour développer plus rapidement, ce que NASM ne semble pas avoir à ma connaissance (il a d'autres macros cela dit).

                    2) Personnellement je n'ai aucun ouvrage de référence qui t'apprenne à faire de l'asm de manière assez complète puisqu'il existe plusieurs assembleurs ainsi que plusieurs champs d'application. Mais si tu veux bidouiller sous Linux je te recommande la référence qu'à posté Lucas-84 !

                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 septembre 2013 à 23:08:51

                      Salut,

                      Perso, comme livre, j'ai Computer Organization and Design, qui a été conseillé pour notre cours d'architecture des ordinateurs, qui explique pas mal le lien HardWare/SoftWare (donc forcement assembleur). Le point positif, c'est qu'il y a dedans pleins d'autres infos qui permettent d'aborder l'assembleur de manière plus «posée» que les tutos, souvent très ciblés. Ça aborde l'assembleur de manière assez générale (principes applicables aux différents assembleurs), avec application sur l'assembleur MIPS.

                      Tu peux avoir une assez grande partie du livre sur http://books.google.ch/books?id=3b63x-0P3_UC&printsec=frontcover&hl=fr#v=onepage&q&f=false

                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 septembre 2013 à 9:02:45

                        Je l'ai aussi mais c'est plus un livre d'archi que d'ASM. Il est très bien au demeurant lorsqu'on s’intéresse au bas niveau !

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          20 septembre 2013 à 13:10:53

                          Merci pour la réf. je l'ai ajoutée. ;)

                          (Et en même temps ça m'a donné envie d'aller y jeter un oeil...)

                          Edit : tu as raison kristofjé, je l'ai quand même listée au cas où il y aurait des intéressés...

                          -
                          Edité par Anonyme 20 septembre 2013 à 14:56:27

                          • Partager sur Facebook
                          • Partager sur Twitter
                            21 septembre 2013 à 14:18:24

                            Ouai, c'est sur, mais c'est plutôt compliqué de faire de l'assembleur si on ne connaît pas un minimum l'architecture des ordis. (Maintenant c'est sur que le livre ne s'annonce pas comme livre d'ASM).
                            • Partager sur Facebook
                            • Partager sur Twitter
                              27 septembre 2013 à 12:16:21

                              Quand tu dit que le FASM est très léger, tu entend qu'il permet de créer des programmes légers ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                28 septembre 2013 à 1:52:13

                                Non, mais qu'il est assez simple en lui-même ; il ne contient pas beaucoup de fichiers additionnels comme pourrait le contenir masm par exemple (include, libs, etc.).

                                Quand tu sais t'en servir, c'est un régal.

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  28 septembre 2013 à 21:30:02

                                  Oui

                                  je vois... N'empêche que je penses que le FASM comme le MASM (en fait tous les assembleurs) sont très compliqués dans tous les cas :D

                                  mais permettent de faire des choses fantastiques !

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    29 septembre 2013 à 11:27:25

                                    Ce qui est le plus compliqué, bien sûr, c'est de développer en assembleur ! ;)

                                    Trouve des "Hello world" si tu veux te faire une idée, ça sera un très bon début. En plus il y a 36 façons de faire selon l'OS / l'architecture sur laquelle tu te trouves...

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Anonyme
                                      7 octobre 2013 à 21:13:50

                                      Pour la partie documentations génériques, j'ai des trucs à proposer.

                                      Le premier document que je propose parle des assembleurs, les logiciels qui traduisent du code assembleur en langage machine. Il est disponible via ce lien : Assemblers and loaders. Le livre en lui-même est assez vieux, mais son contenu est toujours d'actualité. De plus, il contient quelques trucs sur l'ASM, même si ce n'est pas transcendant.

                                      Et puis, dans les documentations générales, pourquoi ne pas mettre "Fonctionnement des ordinateurs de zéro", ou plus spécifiquement, les chapitres qui traitent de l'ASM et du langage machine ? Vous avez déjà ajouté des livres d’architecture, autant pousser la logique jusqu’au bout.

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Anonyme
                                        7 octobre 2013 à 22:27:46

                                        Merci pour ta contribution, Mewtwo. ;)

                                        En ce qui concerne ton tutoriel, il est interne au site, c'est pour ça que je ne l'ai pas rajouté. Mais je le ferai à l'occasion si tu veux.

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          24 novembre 2013 à 18:55:06 - Message modéré pour le motif suivant : Message complètement hors sujet


                                            6 janvier 2014 à 16:56:26

                                            Un grand merci a toi !
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            --Clément BOIN
                                              19 mars 2014 à 17:58:58

                                              Pour ceux qui on Visual C++, il faut savoir que masm y est inclus dans ça dernière version !

                                              Et on peut l'utiliser dans l'éditeur de Visual C++, ce qui en facilite l'utilisation dans les projets ! (messages d'erreurs dans la fenètre de sortie ...)

                                              Je précise que je ne parle pas de l'assembleur en ligne mais bien de masm, avec des fichiers d'extension .asm

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                              Anonyme
                                                19 avril 2014 à 20:26:59 - Message modéré pour le motif suivant : Message complètement hors sujet


                                                  16 mai 2014 à 19:45:27

                                                  salut , SVP comment ecrire matrice en code assembleur !!!??????

                                                  -
                                                  Edité par mima1313 16 mai 2014 à 20:17:23

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    16 mai 2014 à 21:01:40

                                                    Ca n'existe pas. Tu alloue de la place en mémoire et ensuite tu la gère comme tu veux pour y stocker l'image de ta matrice (et j'ai bien dit comme tu veux, c'est toi qui choisi comment faire, même si la méthode la plus courante est d'allouer la taille totale de ta matrice, et de coller tous les éléments d'une ligne les uns après les autres et de coller les lignes les unes après les autres)

                                                    Ceci dit, ce sujet est un mémo, il n'est pas destiné à recevoir des questions, ouvre ton propre sujet, et ne répond pas à mon message.

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    64kB de mémoire, c'est tout ce dont j'ai besoin
                                                      28 mai 2014 à 18:58:04

                                                      Salut à tous. @Ge0, c'est une très bonne initiative, félicitations. Pour ma part, je proposerais le cours pcasm de Dr paul carter, disponible en téléchargement sur son site en plusieurs langue dont le français. Il est très complet mais assez élitiste. Il y a aussi la section assembleur de developpez.com. Il y a des cours pour plusieurs architectures, et je les trouve assez accessibles. Je partagerais mes ressources si j'en ai de nouvelles.

                                                      Encore merci et à bientôt à vous, cordialement, LK13!

                                                      http://asm.developpez.com/

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                      Anonyme
                                                        7 juillet 2014 à 22:42:46

                                                        Bonjour,

                                                        J'ai fait beaucoup d'ASM 68K sur Atari, puis du PPC sur Mac (ça c'est l'enfer!). Il y a bien longtemps (très longtemps), j'avais écrit un cours d'asm pour Atari. En cherchant "asm féroce lapin" sur le net vous devrez les trouver. C'est pour Atari, mais y'a une intro sur ce qu'est l'asm, comment on fait etc...

                                                        En tout cas, je pense qu'aujourd'hui celui qui veut, pour s'amuser, faire de l'ASM, ne va sans doute pas trouver d'outils comme ceux qu'on avait en 1990. Si vous trouvez dans un coin, un Atari 1040STF, avec Devpack et MonST, c'est le bonheur pour comprendre comment ça marche, observer les pointeurs, les registres etc... avec des outils sommes toutes très simples.

                                                        Amitiés

                                                        Pierre-Louis

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          5 octobre 2014 à 22:04:42

                                                          Jamais trouvé de cours sur l'ASM, je veux dire un cours complet.

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            25 novembre 2014 à 19:48:34

                                                            Ge0 a écrit:

                                                            Bonjour,

                                                            Ce fil de discussion a pour objectif de recenser un maximum de ressources sur l'assembleur (langage d'assemblage pour les puristes) en général. Nous commencerons par afficher une liste des assembleurs / logiciels / ressources utilisables en fonction des architectures cible :

                                                            Documentations génériques

                                                            Computer Organisation And Design
                                                            Assemblers and loaders

                                                            Assembleur Intel x86

                                                            Je me permets de commencer par celle-ci car c'est l'une des principales architectures qui semble être abordées par les programmeurs désireux de pouvoir rapidement programmer en obtenant des résultats concrets :

                                                            Logiciels sympathiques :

                                                            • l'IDE winasm ( http://www.winasm.net/ ) qui intègre un éditeur de ressources (pratiques pour faire ses dialogues sans se taper d'écriture de code fastidieuse par exemple)
                                                            • Immunity Debugger ( http://www.immunityinc.com/products-immdbg.shtml ) : pour déboguer vos binaires sous Windows, avec support de scripting en python. Très utilisé pour faire de la recherche de vulnérabilités dans un binaire.
                                                            • OllyDbg ( http://www.ollydbg.de/ ) : vous verrez qu'il ressemble énormément à Immunity Debugger et c'est normal : Ollydbg a été racheté par Immunity Inc. Je trouve Immunity plus complet et plus synthétique qu'Ollydbg puisque celui-ci a des fonctionnalités différentes en fonction des versions, mais je mets quand même le lien ici pour les intéressés
                                                            • IDA ( https://www.hex-rays.com/products/ida/index.shtml ) : désassembleur très puissant qui couvre une large gamme de formats de binaires et d'architectures. La version pro est payante mais il existe une version free.

                                                            Documentations :

                                                            Assembleur ARM

                                                            Documentations :

                                                            Tout le monde est invité à partager ses références. J'essaierai d'éditer ce pour qu'il soit aussi organisé et complet que possible.

                                                            -
                                                            Edité par Ge0 le 7 octobre 2013 à 22:25:45



                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                              20 décembre 2014 à 9:58:05

                                                              Pour ceux qui voudraient programmer quelque chose de très concret, il y a ce tutoriel :

                                                              http://a.michelizza.free.fr/pmwiki.php?n=TutoOS.TutoOS

                                                              pour créer un OS en ASM x86 avec NASM, mais il faut déjà connaître les bases de l'ASM.

                                                              • Partager sur Facebook
                                                              • Partager sur Twitter
                                                              Vis comme si tu devais mourir demain, mais apprends comme si tu devais vivre éternellement.

                                                              Mémo sur l'Assembleur

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              • Editeur
                                                              • Markdown