Partage
  • Partager sur Facebook
  • Partager sur Twitter

[nasm] apprendre l'assembleur

    9 mars 2006 à 18:59:45

    voila,
    je voudrais apprendre l'assembleur et je cherche donc un bon cours pour ce faire, j'aimerais de preference un cour pour nasm (rapide, moderne, libre, portable)

    PS : j'accepte les cours en anglais.
    • Partager sur Facebook
    • Partager sur Twitter
      12 mars 2006 à 19:38:55

      Il y a un tutorial intéressant pour NASM (en français en plus) ici.
      • Partager sur Facebook
      • Partager sur Twitter
        12 mars 2006 à 21:13:56

        le MASM est mieux documenté je trouve,
        surtout avec le tuto de Iczelion traduit en francais par Morgatte ;)
        • Partager sur Facebook
        • Partager sur Twitter
          13 mars 2006 à 20:05:00

          Citation : Arch Enemy

          le MASM est mieux documenté je trouve


          certe mais comme je l'ai dit nasm est rapide, moderne, libre et portable
          • Partager sur Facebook
          • Partager sur Twitter
            14 mars 2006 à 13:55:07

            De toutes façons, les deux utilisent la syntaxe d'Intel, d'ailleurs heureusement car la syntaxe d'AT&T est horrible.
            • Partager sur Facebook
            • Partager sur Twitter
              14 mars 2006 à 18:30:12

              Citation : Amenophis IV

              la syntaxe d'AT&T est horrible.


              AT&T c'est quoi ?
              je crois que la syntaxe de nasm est legerement differente tout de meme.
              • Partager sur Facebook
              • Partager sur Twitter
                14 mars 2006 à 20:06:07

                AT&T signifie American Telephone and Telegraph Company, C'est une grande entreprise, importante dans l'histoire de l'informatique car c'est dans ses laboratoires qu'est né le langage C et l'OS UNICS, plus tard renommé UNIX.
                La syntaxe de l'assembleur AT&T est celle utilisée par GAS l'assembleur de GCC.
                Par exemple, un helloword en c:

                Citation : hello.c

                #include <stdio.h>

                int main(int argc, char **argv)
                {
                printf("Hello world!\n");
                return 0;
                }



                compilé sans assemblage:

                $ gcc -S hello.c

                donne:

                Citation : hello.s


                .file "hello.c"
                .section .rodata
                .LC0:
                .string "Hello world!\n"
                .text
                .globl main
                .type main, @function
                main:
                pushl %ebp
                movl %esp, %ebp
                subl $8, %esp
                andl $-16, %esp
                movl $0, %eax
                addl $15, %eax
                addl $15, %eax
                shrl $4, %eax
                sall $4, %eax
                subl %eax, %esp
                movl $.LC0, (%esp)
                call printf
                movl $0, %eax
                leave
                ret
                .size main, .-main
                .section .note.GNU-stack,"",@progbits
                .ident "GCC: (GNU) 3.4.5 (Gentoo 3.4.5, ssp-3.4.5-1.0, pie-8.7.9)"


                Nous avons alors un code en langage d'assemblage en syntaxe AT&T.

                Je préfère la syntaxe d'Intel, car je la trouve plus légère (ou nous n'avons pas à taper des %, ou des $ presque à chaque lignes), mais il s'agit en fait d'un goût personnel.
                En fait la différence entre NASM et MASM vient notamment des macros qui dépendent de l'assembleur (NASM, MASM, GAS, etc...) utilisé.
                Aujourd'hui, l'assembleur n'est plus beaucoup utilisé, si ce n'est pour quelques codes ou la vitesse d'execution est très importante, comme certains moteurs 3D; ou dans certains drivers où il est plus facile de coder en assembleur qu'en un autre langage.(ou encors dans l'analyse des binaires (le célèbre reverse engineering), ce qui est parfois fait par exemple pour analyser si un programme utilise du code sous license GPL. Il est cependant utile pour comprendre les optimisations de code. C'est surtout là que l'assembleur est utile, l'outil d'assemblage utilisé n'a donc pas beaucoup d'importance.
                • Partager sur Facebook
                • Partager sur Twitter

                [nasm] apprendre l'assembleur

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown