SlideServe
Menu
Préférences
© SlideServe · v2026

Le langage machine

davin avatar
21 diapositives · 442 Views · Sep 23, 2014

Le langage machine. Laurent JEANPIERRE <jeanpl@iutc3.unicaen.fr> D’après le cours de Pascal FOUGERAY IUT de CAEN – Campus 3. Le passé et le futur. Les instructions du processeur sont Câblées (portes logiques) Micro-codées (traduites en suites d’opérations câblées, processeur CISC)

Le langage machine - slide 1
01 / 21Le langage machine
1 / 17

Télécharger la présentation

Le langage machine
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Le langage machine Laurent JEANPIERRE <jeanpl@iutc3.unicaen.fr> D’après le cours de Pascal FOUGERAY IUT de CAEN – Campus 3 Département Informatique

  2. Le passé et le futur • Les instructions du processeur sont • Câblées (portes logiques) • Micro-codées (traduites en suites d’opérations câblées, processeur CISC) • Voir cours de début d’année • A partir de maintenant… • On oubliera comment sont réalisées les instructions • On étudiera comment agencer les instructions •  Pour réaliser des tâches complexes • Notions de compilation & langages de haut niveau Département Informatique

  3. Contenu du cours • Définition • Les transcripteurs • Quelques exemples Département Informatique

  4. Le langage machine • ‘Inventé’ par Alan Turing • Terme « computing » • Faire faire des calculs à une machine • « a computer » : une machine à calculer • Tout est calcul • Un CPU (« Central Processing Unit» ou « Unité Centrale ») ne sait que calculer • Additions, Opérations logiques (Et, Ou, Non) • Toute instruction se réduit à unesuite d’opérations logiques Département Informatique

  5. Le Processeur • Ne travaille qu’en binaire • Un programme = suite de ‘0’ et de ‘1’. • Très indigeste •  Langage intermédiaire compréhensible •  Logiciels de transcription • Deux grandes familles de transcripteurs • Interpréteurs • Compilateurs Département Informatique

  6. Contenu du cours • Définition • Les transcripteurs • Quelques exemples Département Informatique

  7. Les interpréteurs • Analyse du programme au cours de l’exécution • Processus : • Lit & Analyse l’instruction (erreur ?) • Exécute l’instruction • Passe à l’instruction suivante • L’interpréteur gère • la mémoire • les variables Département Informatique

  8. Les interpréteurs (2) Avantages : • Pas de phase de compilation • Plus interactif • Gain de souplesse • Modification du programme et exécution sans délai • Débogage facilité (accès aux variables…) Inconvénients : • Lenteur du programme (Pas de compilation) •  traduit chaque instruction à chaque exécutionde l’instruction (boucles !) •  Pas d’optimisation du code pour le processeur Département Informatique

  9. Les compilateurs • Analyse du programme avant l’exécution • Le code source est d’abord compilé •  traduction en langage machine (binaire) •  liaison aux bibliothèques •  liaison au système d’exploitation • Ensuite il peut être exécuté •  directement par le processeur Département Informatique

  10. Les compilateurs (2) Avantages : • Exécution beaucoup plus rapide • Traduction déjà faite • Possibilité d’optimiser le code généré(Voir cours sur optimisation, à venir) Inconvénients : • Compilation obligatoire • Pas d’interaction avec l’exécution (variables, …) • Peut être fastidieux (après chaque modification du programme) Département Informatique

  11. L’assembleur • Un compilateur • Traduit le code source langage d’assemblage  langage machine • Une fois pour toutes • N’optimise pas le code généré • Respect du programme de l’utilisateur • Quoi que … Département Informatique

  12. gcc gcc -S gcc -c gcc as ld gcc -c gcc Chaîne de compilation • Compiler un langage de haut niveau (C) • Plusieurs étapes • Plusieurs façons différentes Source C Source Asm Fichier Objet Programme Exécutable Département Informatique

  13. Contenu du cours • Définition • Les transcripteurs • Quelques exemples Département Informatique

  14. Fichiers assembleurs de plusieurs processeurs différents • Un même exemple • Hello World • Pour plusieurs compilateurs/processeurs • x86, Norme AT&T • x86, Norme Intel • Alpha • Solaris Département Informatique

  15. Hello WorldLangage C • hello_world.c : #include <stdio.h> int main(int argc, char** argv) { printf("Hello World \n"); } • Compilation : • gcc –b<machine> -S hello_world.c Département Informatique

  16. Hello Worldx86, Norme AT&T 1 .file "hello_world.c" 2 .section .rodata 3 .LC0 : 4 .string "Hello world \n" 5 .text 6 .global main 7 .type main, @function 8 main : 9 pushl %ebp 10 movl %esp, %ebp 11 subl $8, %esp 12 andl $-16, %esp 13 movl $0, %eax 14 subl %eax, %esp 15 subl $12, %esp 16 pushl $.LC0 17 call printf 18 addl $16, %esp 19 leave 20 ret 21 .size main, .-main 22 .section .note .GNU-stack, "", @progbits 23 .ident "GCC: (GNU) 3.3.2 20031022" Département Informatique

  17. Hello Worldx86, Norme Intel 1 .file " hello_world.c " 2 .intel_syntax 3 .section .rodata 4 .LC0 : 5 .string "Hello world \n" 6 .text 7 .global main 8 .type main, @function 9 main : 10 push %ebp 11 mov %ebp, %esp 12 sub %esp, 8 13 and %esp, -16 14 mov %eax, 0 15 sub %esp, %eax 16 sub %esp, 12 17 push OFFSET FLAT : .LC0 18 call printf 19 add %esp, 16 20 leave 21 ret 22 .size main, .-main 23 .section .note .GNU-stack, "", @progbits 24 .ident "GCC: (GNU) 3.3.2 20031022" Département Informatique

  18. Hello WorldAlpha (obsolète) 1 .ugen .verstamp 3 11 2 .data 3 $$8 : .ascii "Hello World \X00" 4 .text 5 .align 4 6 .file 2 "hello.c" 7 .global main 8 main : 9 ldgp $gp, 0($27) 10 lda $sp, -16($sp) 11 stq $26, 0($sp) 12 .mask 0x04000000 , -16 13 .frame $sp, 16, $26, 0 14 # 5 printf("Hello World"); 15 lda $16, $$8 16 .livereg 0x0001C002,0x00000000 17 jsr $26, printf 18 ldgp $gp, 0($26) 19 .livereg 0x007F0002,0x3FC00000 20 ldq $26, 0($sp) 21 lda $sp, 16($sp) 22 ret $31, ($26), 1 23 .end main Département Informatique

  19. Hello WorldSolaris 1 .file "hello.c" 2 gcc2_compiled.: 3 .section ".rodata" 4 .align 8 5 .LLC0 : 6 .asciz "Hello World" 7 .section ".text" 8 .align 4 9 .global main 10 .type main, #function 11 .proc 020 12 main : 13 !#PROLOGUE# 0 14 save %sp,¡112,%sp 15 !#PROLOGUE# 1 16 sethi %hi (.LLC0), %o1 17 or %o1,%lo (.LLC0), %o0 18 call printf, 0 19 nop 20 .LL1 : 21 ret 22 restore 23 .LLfe1 : 24 .size main, .LLfe1-main 25 .ident "GCC: (GNU) 2.7.2.1.f.1" Département Informatique

  20. Remarque finale • Il est plus facile de programmer en C qu’en assembleur… • Mais le but n’est pas d’apprendre à programmer en assembleur… • Les buts de ce cours sont : • Etudier l’architecture x86 • Comprendre le fonctionnement du mP •  Ecrire des applications plus performantes Département Informatique

  21. Remarque finale (2) • À la fin de ce cours, vous saurez • Lire un programme écrit en assembleur • Comprendre ce qu’il fait • Modifier ou Corriger une partie du code • Mais aussi • Savoir ce qu’est une optimisation • Comprendre pourquoi les mécanismes des langages de haut niveau sont conçus ainsi Département Informatique