Le langage machine

21
Département Informatique Le langage machine Laurent JEANPIERRE <[email protected]> D’après le cours de Pascal FOUGERAY IUT de CAEN – Campus 3

description

Le langage machine. Laurent JEANPIERRE 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) - PowerPoint PPT Presentation

Transcript of Le langage machine

Page 1: Le langage machine

Département Informatique

Le langage machine

Laurent JEANPIERRE <[email protected]>

D’après le cours de Pascal FOUGERAY

IUT de CAEN – Campus 3

Page 2: Le langage machine

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

Page 3: Le langage machine

Département Informatique 3

Contenu du cours

Définition

Les transcripteurs

Quelques exemples

Page 4: Le langage machine

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 à une

suite d’opérations logiques

Page 5: Le langage machine

Département Informatique 5

Le Processeur

Ne travaille qu’en binaireUn programme = suite de ‘0’ et de ‘1’.

Très indigeste Langage intermédiaire compréhensible Logiciels de transcription

Deux grandes familles de transcripteurs InterpréteursCompilateurs

Page 6: Le langage machine

Département Informatique 6

Contenu du cours

Définition

Les transcripteurs

Quelques exemples

Page 7: Le langage machine

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’instructionPasse à l’instruction suivante

L’interpréteur gère la mémoire les variables

Page 8: Le langage machine

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

Page 9: Le langage machine

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

Page 10: Le langage machine

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)

Page 11: Le langage machine

Département Informatique 11

L’assembleur

Un compilateurTraduit le code source

langage d’assemblage langage machineUne fois pour toutes

N’optimise pas le code généréRespect du programme de l’utilisateur

Quoi que …

Page 12: Le langage machine

Département Informatique 12

Chaîne de compilation

Compiler un langage de haut niveau (C)Plusieurs étapesPlusieurs façons différentes

Source C Source Asm Fichier ObjetProgrammeExécutable

gcc -S gcc -c gcc

asld

gcc

gcc -c

gcc

Page 13: Le langage machine

Département Informatique 13

Contenu du cours

Définition

Les transcripteurs

Quelques exemples

Page 14: Le langage machine

Département Informatique 14

Fichiers assembleurs de plusieurs processeurs différents

Un même exempleHello World

Pour plusieurs compilateurs/processeursx86, Norme AT&Tx86, Norme IntelAlphaSolaris

Page 15: Le langage machine

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

Page 16: Le langage machine

Département Informatique 16

Hello Worldx86, Norme AT&T1 .file "hello_world.c"2 .section .rodata3 .LC0 :4 .string "Hello world \n"5 .text6 .global main7 .type main, @function8 main :9 pushl %ebp10 movl %esp, %ebp11 subl $8, %esp12 andl $-16, %esp

13 movl $0, %eax14 subl %eax, %esp15 subl $12, %esp16 pushl $.LC017 call printf18 addl $16, %esp19 leave20 ret21 .size main, .-main22 .section .note .GNU-stack,

"", @progbits23 .ident "GCC: (GNU) 3.3.2

20031022"

Page 17: Le langage machine

Département Informatique 17

Hello Worldx86, Norme Intel1 .file " hello_world.c "2 .intel_syntax3 .section .rodata4 .LC0 :5 .string "Hello world \n"6 .text7 .global main8 .type main, @function9 main :10 push %ebp11 mov %ebp, %esp12 sub %esp, 8

13 and %esp, -1614 mov %eax, 015 sub %esp, %eax16 sub %esp, 1217 push OFFSET FLAT : .LC018 call printf19 add %esp, 1620 leave21 ret22 .size main, .-main23 .section .note .GNU-

stack, "", @progbits24 .ident "GCC: (GNU) 3.3.2

20031022"

Page 18: Le langage machine

Département Informatique 18

Hello WorldAlpha (obsolète)

1 .ugen .verstamp 3 112 .data3 $$8 : .ascii "Hello World \X00"4 .text5 .align 46 .file 2 "hello.c"7 .global main8 main :9 ldgp $gp, 0($27)10 lda $sp, -16($sp)11 stq $26, 0($sp)12 .mask 0x04000000 , -1613 .frame $sp, 16, $26, 014 # 5 printf("Hello World");15 lda $16, $$816 .livereg 0x0001C002,0x0000000017 jsr $26, printf18 ldgp $gp, 0($26)19 .livereg 0x007F0002,0x3FC0000020 ldq $26, 0($sp)21 lda $sp, 16($sp)22 ret $31, ($26), 123 .end main

Page 19: Le langage machine

Département Informatique 19

Hello WorldSolaris

1 .file "hello.c"2 gcc2_compiled.:3 .section ".rodata"4 .align 85 .LLC0 :6 .asciz "Hello World"7 .section ".text"8 .align 49 .global main10 .type main, #function11 .proc 02012 main :13 !#PROLOGUE# 0

14 save %sp,¡112,%sp15 !#PROLOGUE# 116 sethi %hi (.LLC0), %o117 or %o1,%lo (.LLC0), %o018 call printf, 019 nop20 .LL1 :21 ret22 restore23 .LLfe1 :24 .size main, .LLfe1-main25 .ident "GCC: (GNU)

2.7.2.1.f.1"

Page 20: Le langage machine

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 x86Comprendre le fonctionnement du P Ecrire des applications plus performantes

Page 21: Le langage machine

Département Informatique 21

Remarque finale (2)

À la fin de ce cours, vous saurezLire un programme écrit en assembleurComprendre ce qu’il faitModifier ou Corriger une partie du code

Mais aussiSavoir ce qu’est une optimisationComprendre pourquoi les mécanismes des

langages de haut niveau sont conçus ainsi