Le langage assembleur intel 64 bits
|
|
|
- Josiane Marin
- il y a 10 ans
- Total affichages :
Transcription
1 Le langage assembleur intel 64 bits c Sovanna Tan Novembre /73 c Sovanna Tan Assembleur intel
2 Plan 1 Introduction 2 Les registres 3 Les instructions 4 Les structures de contrôle 5 Les tableaux 6 Les sous programmes 7 Les calculs flottants /73 c Sovanna Tan Assembleur intel
3 Sources Introduction to 64 Bit Intel Assembly Language Programming for Linux, Ray Seyfarth, CreateSpace Independent Publishing Platform, 2nd edition, La documentation Yasm, Le langage assembleur, Maîtrisez le code des processeurs de la famille X86, Olivier Cauet, Editions ENI, Introduction à la programmation en assembleur 64 bits, Pierre Jourlin, Langage Assembleur PC (32 bits), Paul A. Carter traduction Sébastien Le Ray, 2005, Initiation à l assembleur, Pierre Marchand, 2000, ulaval.ca/~marchand/ift17583/supplement2.pdf. Linux, Assembly Language Programming, Bob Neveln, Prentice Hall, /73 c Sovanna Tan Assembleur intel
4 Le microprocesseur Microprocesseur Circuit électronique complexe : cœur de l ordinateur Identifie et exécute les instructions Instruction Code opérateur ou opcode : action à effectuer Registre Opérande(s) Petite zone de mémoire d accès très rapide située dans le microprocesseur 4/73 c Sovanna Tan Assembleur intel
5 Architecture simplifiée d un processeur Image provenant de : 5/73 c Sovanna Tan Assembleur intel
6 Le langage assembleur Langage de bas niveau Chaque instruction se traduit directement en une instruction binaire pour le processeur. Il existe différents dialects : Yasm, the modular assembler : utilisé dans ce cours, en TD et en TP, issu de Netwide asm (nasm) : utilisé les années précédentes Gas : assembleur GNU utilisé avec gcc Macro asm : assembleur Microsoft Turbo asm : assembleur Borland 6/73 c Sovanna Tan Assembleur intel
7 Premier programme en assembleur (1) ; f o n c t i o n s e x t e r n e s pour l e s e n t r e e s / s o r t i e ; a p p e l p r i n t f ( % s, prompt1 ) e x t e r n p r i n t f mov rdi, s t r i n g F o r m a t e x t e r n s c a n f mov r s i, prompt1 segment. d a t a ; memoire g l o b a l e mov rax, 0 ; donnees i n i t i a l i s e e s c a l l p r i n t f prompt1 db E n t r e z un e n t i e r :,0 ; a p p e l s c a n f ( % l d, e n t i e r 1 ) prompt2 db E n t r e z un deuxieme e n t i e r :,0 mov rdi, l o n g I n t F o r m a t f o r m a t S o r t i e db La somme des eux e n t i e r s : %l d, 10,0 mov r s i, e n t i e r 1 stringformat db %s,0 mov rax, 0 longintformat db %ld,0 c a l l s c a n f newline db 10,0 mov rbx, [ e n t i e r 1 ] ; a p p e l p r i n t f ( % s, prompt2 ) segment. b s s ; memoire g l o b a l e mov rdi, s t r i n g F o r m a t ; donnees non i t i a l i s e e s mov r s i, prompt2 e n t i e r 1 r e s q 1 mov rax, 0 ; r a x c o n t i e n t l e nombre de e n t i e r 2 r e s q 1 ; p a r a m e t r e s de t y p e d o u b l e dans l a p p e l de r e s u l t a t r e s q 1 ; p r i n t f c a l l p r i n t f segment. t e x t ; code du programme ; a p p e l s c a n f ( % l d, e n t i e r 2 ) g l o b a l asm main mov rdi, l o n g I n t F o r m a t asm main : ; fo nc tio n appelee par l e programme C mov r s i, e n t i e r 2 ; s a u v e g a r d e des r e g i s t r e s s u r l a p i l e mov rax, 0 ; r a x c o n t i e n t l e nombre de push rbp ; p a r a m e t r e s de t y p e d o u b l e dans l a p p e l de ; s c a n f c a l l s c a n f mov rcx, [ e n t i e r 2 ] ; c a l c u l de l a somme e t s a u v e g a r d e du r e s u l t a t add rbx, r c x mov [ r e s u l t a t ], rbx 7/73 c Sovanna Tan Assembleur intel
8 Premier programme en assembleur et code C qui appelle le programme ; a p p e l p r i n t f ( f o r m a t S o r t i e, r e s u l t a t ) mov rdi, f o r m a t S o r t i e mov r s i, [ r e s u l t a t ] mov rax, 0 c a l l p r i n t f ; r e s t a u r a t i o n des r e g i s t r e s pop rbp ; e n v o i de 0 au programme C mov rax, 0 r e t extern unsigned long i n t asm main ( ) ; i n t main (){ unsigned l o n g i n t r e t s t a t u s ; r e t s t a t u s=asm main ( ) ; r e t u r n r e t s t a t u s ; } Commandes de compilation gcc -c -g -std=c99 -m64 driver.c yasm -g dwarf2 -f elf64 first.asm gcc -m64 -g -std=c99 -o first driver.o first.o Exécution du programme./first Entrez un entier : 7 Entrez un deuxieme entier : 34 La somme des eux entiers : 41 8/73 c Sovanna Tan Assembleur intel
9 1 Introduction 2 Les registres 3 Les instructions 4 Les structures de contrôle 5 Les tableaux 6 Les sous programmes 7 Les calculs flottants /73 c Sovanna Tan Assembleur intel
10 Les principaux registres 64 bits rax rbx rcx rdx rsi rdi rsp rbp r8 r9. r15 rip registre général, accumulateur, contient la valeur de retour des fonctions registre général registre général, compteur de boucle registre général, partie haute d une valeur 128 bits registre général, adresse source pour déplacement ou comparaison registre général, adresse destination pour déplacement ou comparaison registre général, pointeur de pile (stack pointer) registre général, pointeur de base (base pointer) registre général registre général registre général compteur de programme (instruction pointer) 10/73 c Sovanna Tan Assembleur intel
11 Accès à une partie du registre Certaines parties des registres sont accessibles à partir des identifiants suivants : rax, rbx, rcx, rdx, rdi, rsi, rbp, rsp, r8, r9,...,r15 64 bits eax, ebx, ecx, edx, edi, esi, ebp, esp, r8d, r9d,...,r15d 32 bits ax, bx, cx, dx, di, si, bp, sp, r8w, r9w,...,r15w 16 bits (15:0) ah, bh, ch, dh 8 bits high (15:8) al, bl, cl, dl, dil, sil, bpl, spl,r8b, r9b,...,r15b 8 bits low (7:0) 11/73 c Sovanna Tan Assembleur intel
12 Le registre RFLAGS Le registre rflags contient des informations concernant le résultat de l exécution d une instruction. Certains bits du registre appelés drapeaux ont une signification particulière. Seuls les 32 bits de la partie eflags sont utilisés. 12/73 c Sovanna Tan Assembleur intel
13 Drapeaux du registre RFLAGS CF Carry Flag (bit 0) retenue PF Parity Flag (bit 2) AF Auxiliary Carry Flag (bit 4) ZF Zero Flag (bit 6) vaut 1 lorsque le résultat est 0 SF Sign Flag (bit 7) bit de signe du résultat OF Overflow Flag (bit 11) dépassement, le résultat contient trop de bits DF Direction Flag (bit 10) sens d incrémentation de ESI et EDI TF Task Flag (bit 8) active la gestion de tâche en mode protégé IF Interrupt Flag (bit 9) interruption IOPL I/O Privilege Level (bits 12 et 13) NT Nested Task (bit 14) RF Resume Flag (bit 16) active le mode debug VM Vitrual 8086 Mode (bit 17) AC Alignement Check (bit 18) VIF Virtual Interrupt Flag (bit 19) VIP Virtual Interrupt Pending (bit 20) ID Identification Flag (bit 21) 13/73 c Sovanna Tan Assembleur intel
14 1 Introduction 2 Les registres 3 Les instructions 4 Les structures de contrôle 5 Les tableaux 6 Les sous programmes 7 Les calculs flottants 4/73 c Sovanna Tan Assembleur intel
15 Le langage assembleur Langage de bas niveau Chaque instruction se traduit directement en une instruction binaire pour le processeur. Syntaxe : instruction source ou instruction destination source Types de l opérande source registre mémoire immédiat, valeur codée dans l instruction implicite, valeur qui n apparaît pas dans l instruction Types de l opérande destination registre mémoire ATTENTION : Une instruction ne peut pas avoir deux opérandes de type mémoire. 15/73 c Sovanna Tan Assembleur intel
16 Accès à la mémoire avec l opérateur [] [cetteadresse] représente la valeur stockée à l adresse cetteadresse. [ceregistre] représente la valeur stockée à l adresse contenue dans le registre ceregistre. On peut associer une étiquette cetteetiquette à une adresse mémoire et utiliser [cetteetiquette]. 16/73 c Sovanna Tan Assembleur intel
17 Les directives de données Permettent de réserver de l espace de mémoire dans les segments de données. dx resx dans le segment.data données initialisées dans le segment.bss (Block Started by Symbol) données non initialisées La valeur du caractère x dépend de la taille des données. b w d q t 1 octet (byte) 1 mot (word) 2 mots (double word) 4 mots (quadruple word) 10 octets 17/73 c Sovanna Tan Assembleur intel
18 Les instructions de déplacement de données mov dest,src dest src mov taille dest,src movzx dest,src extension avec des 0 dans dest movsx dest,src extension avec le bit de signe dans dest Tailles possibles : byte 1 octet word 2 octets ou 1 mot dword 2 mots qword 4 mots tword 10 octets On utilise la taille pour lever l ambiguïté dans les instructions quand c est nécessaire. 1 lea dest,[op] dest adresse de op (load effective address) push op décrémente rsp et empile op pop op dépile dans op et incrémente rsp 1. Ce n est pas réservé à l instruction mov. 18/73 c Sovanna Tan Assembleur intel
19 La pile De nombreux processeurs ont un support intégré pour une pile. Une pile est une liste Last-In First-Out (LIFO) : dernier entré, premier sorti. push ajoute une donnée sur la pile de taille qword (64 bits). Cette donnée se trouve au sommet de la pile. pop retire la donnée de taille qword qui se trouve au sommet de la pile. Le registre rsp contient l adresse de la donnée qui se trouve au sommet de la pile. push décrémente rsp de 8. pop incrémente rsp de 8. 19/73 c Sovanna Tan Assembleur intel
20 Rôle la pile Sauvegarde des registres Passage des paramètres lors de l appel de sous programme Stockage de variables locales Stockage des adresses de retour Exemple : push qword 1 ; 1 e s t s t o c k e en 0x0FFC, RSP = 0FFC push qword 2 ; 2 e s t s t o c k e en 0x0FF4, RSP = 0FF4 push qword 3 ; 3 e s t s t o c k e en 0x0FEC, RSP = 0FEC pop ra x ; RAX = 3, RSP = 0 x0ff4 pop rbx ; RBX = 2, RSP = 0x0FFC pop rcx ; RCX = 1, RSP = 0 x /73 c Sovanna Tan Assembleur intel
21 Les instructions arithmétiques add op1,op2 op1 op1 + op2 sub op1,op2 op1 op1 op2 neg reg reg reg inc reg reg reg + 1 dec reg reg reg 1 imul op (signé ou mul non signé) rdx:rax rax op imul dest,op dest dest op imul dest,op,immédiat dest op immédiat idiv op (div non signé) rax rdx:rax /op, rdx rdx:rax mod op 2 2. Ne pas oublier de mettre 0 dans rdx avant d appeler idiv. 1/73 c Sovanna Tan Assembleur intel
22 Les opérations sur les bits and op1,op2 or op1,op2 xor op1,op2 not reg shl reg,immédiat shr reg,immédiat sal reg,immédiat sar reg,immédiat rol reg,immédiat ror reg,immédiat rcl reg,immédiat rcr reg,immédiat op1 op1 & op2 op1 op1 op2 op1 op1 ˆ op2 reg reg reg reg << immédiat reg reg >> immédiat reg reg << immédiat reg reg >> immédiat signé reg reg decalagecirculairegauchede imm reg reg decalagecirculairedroitede imm reg : CF reg : CF decalagecircgauchede imm reg : CF reg : CF decalagecircdroitede imm 22/73 c Sovanna Tan Assembleur intel
23 Les instructions de comparaison et de branchement cmp op1,op2 jmp op jz op jnz op jo op jno op js op jns op jc op jnc op jp op jnp op calcul de op1 op2 et de ZF,CF et OF branchement inconditionnel à l adresse op branchement à l adresse op si ZF=1 branchement à l adresse op si ZF=0 branchement à l adresse op si OF=1 branchement à l adresse op si OF=0 branchement à l adresse op si SF=1 branchement à l adresse op si SF=0 branchement à l adresse op si CF=1 branchement à l adresse op si CF=0 branchement à l adresse op si PF=1 branchement à l adresse op si PF=0 23/73 c Sovanna Tan Assembleur intel
24 Les instructions de branchement après cmp op1,op2 Signées : je op jne op jl op (jnge) jle op (jng) jg op (jnle) jge op (jnl) Non signées : je op jne op jb op (jnae) jbe op (jna) ja op (jnbe) jae op (jnb) branchement à l adresse op si op1 = op2 branchement à l adresse op si op1 op2 branchement à l adresse op si op1 < op2 branchement à l adresse op si op1 op2 branchement à l adresse op si op1 > op2 branchement à l adresse op si op1 op2 branchement à l adresse op si op1 = op2 branchement à l adresse op si op1 op2 branchement à l adresse op si op1 < op2 branchement à l adresse op si op1 op2 branchement à l adresse op si op1 > op2 branchement à l adresse op si op1 op2 24/73 c Sovanna Tan Assembleur intel
25 Exemple de branchement i f ( a>b ){ p r i n t f ( %d, a ) ; } e l s e { p r i n t f ( %d, b ) ; } i f : cmp r12, r13 jng e l s e mov qword rdi, format mov qword r s i, r12 mov qword rax, 0 c a l l p r i n t f jmp e n d i f e l s e : mov qword rdi, format mov qword r s i, r13 mov qword rax, 0 c a l l p r i n t f e n d i f : 25/73 c Sovanna Tan Assembleur intel
26 Les boucles Les instructions suivantes sont déconseillées car elles ne permettent qu un branchement à une distance inférieure à 127 octets. loop op décrémente rcx et saut à op si rcx 0 loope op (loopz) rcx et saut à op si rcx 0 et ZF=1 loopne op (loopnz) rcx et saut à op si rcx 0 et ZF=0 Exemple : f o r ( i n t a =10;a >0;a ){ p r i n t f ( %d, a ) } f o r 1 : 26/73 c Sovanna Tan Assembleur intel mov rcx, 1 0 push rcx mov qword rdi, format mov qword r s i, rcx mov qword rax, 0 c a l l p r i n t f pop rcx loop f o r 1
27 1 Introduction 2 Les registres 3 Les instructions 4 Les structures de contrôle 5 Les tableaux 6 Les sous programmes 7 Les calculs flottants 7/73 c Sovanna Tan Assembleur intel
28 if i f ( a>b ){... } e l s e {... } i f ( ( a > b ) && ( c <= d ) ) {... } i f 1 : e l s e 1 : e n d i f 1 : i f 2 : e n d i f 2 : cmp rax, rbx jng e l s e 1... jmp e n d i f 1... cmp rax, rbx jng e n d i f 2 cmp rcx, rdx j n l e e n d i f /73 c Sovanna Tan Assembleur intel
29 switch switch ( i ) { case 1 :... break ; case 2 : } break ; d e f a u l t :... s w i t c h a : cmp rcx, 1 jne casea2... jmp e n d s w i t c h a casea2 : cmp rcx, 2 jne d e f a u l t a... jmp e n d s w i t c h a d e f a u l t a :... e n d s w i t c h a :... 29/73 c Sovanna Tan Assembleur intel
30 while, do while while ( a >0){... a ; } w h i l e 1 : cmp rax, 0 j l e e n d w h i l e 1... dec rax jmp w h i l e 1 e n d w h i l e i 1 :... do {... a ; } while ( a >0); do2 :... dec rax ; cmp rax, 0 jg do2 30/73 c Sovanna Tan Assembleur intel
31 for f o r ( i n t i =1; i <10; i ++){ } f o r 1 : mov rcx, 1 jmp t e s t 1 next1 :... inc rcx t e s t 1 : cmp rcx, 1 0 j l next /73 c Sovanna Tan Assembleur intel
32 1 Introduction 2 Les registres 3 Les instructions 4 Les structures de contrôle 5 Les tableaux 6 Les sous programmes 7 Les calculs flottants 2/73 c Sovanna Tan Assembleur intel
33 Les tableaux Bloc continu de données en mémoire Tous les éléments sont de même type et de même taille. L adresse de chaque élément du tableau se calcule à partir de l adresse du premier élément du tableau ; le nombre d octets de chaque élément ; l indice de l élément. L indice du premier élément du tableau est 0. Tableau à deux dimensions : tableau de tableaux à une dimension. Se généralise pour les dimensions supérieures. Chaîne de caractères : tableau d octets dont le dernier élément est 0. 33/73 c Sovanna Tan Assembleur intel
34 Exemples de définition de tableau segment.data ; d e f i n i t un t a b l e a u de 10 d o u b l e s mots i n i t i a l i s e s ; a 1,2,.., 1 0 a1 dd 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; d e f i n i t un t a b l e a u de 10 q u a d r u p l e s mots i n i t i a l i s e s a a2 dq 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ; idem mais en u t i l i s a n t t i m e s a3 t i m e s 10 dq 0 ; d e f i n i t un t a b l e a u d o c t e t s avec p u i s a4 t i m e s 200 db 0 t i m e s 100 db 1 segment. b s s ; d e f i n i t un t a b l e a u de 10 d o u b l e s mots non i n i t i a l i s e s a5 r e s d 10 ; d e f i n i t un t a b l e a u de 100 mots non i n i t i a l i s e s a6 resw /73 c Sovanna Tan Assembleur intel
35 Exemple d accès aux éléments d un tableau a r r a y 1 db 50, 40, 30, 200, 100 ; t a b l e a u d o c t e t s a r r a y 2 dw 5, 4, 3, 2, 1 ; t a b l e a u de mots mov al, [ a r r a y 1 ] ; a l=a r r a y 1 [ 0 ] mov al, [ a r r a y 1 +1] ; a l=a r r a y 1 [ 1 ] mov [ a r r a y ], a l ; a r r a y 1 [3]= a l mov ax, [ a r r a y 2 ] ; ax=a r r a y 2 [ 0 ] mov ax, [ a r r a y ] ; ax=a r r a y 2 [ 1 ] mov [ a r r a y ], ax ; a r r a y 2 [3]= ax mov ax, [ a r r a y 2 +1] ; ax=?? Calcul de la somme des éléments du tableau array1 mov rbx, a r r a y 1 ; rbx = a d r e s s e de a r r a y 1 mov rdx, 0 ; dx c o n t i e n d r a l a somme mov rcx, 5 ; i n i t i a l i s a t i o n compteur b o u c l e next1 : add dl, [ rbx ] ; d l += ebx jnc s u i t e 1 ; s i pas de r e t e n u e goto s u i t e 1 inc dh ; i n c r e m e n t e dh quand r e t e n u e s u i t e 1 : inc rbx ; bx++ dec rcx cmp rcx, 0 jg next1 35/73 c Sovanna Tan Assembleur intel
36 Adressage indirect L adressage indirect facilite l accès aux éléments d un tableau ou de la pile. [ deplacement+r e g i s t r e b a s e+f a c t e u r r e g i s t r e i n d e x ] registre base et registre index sont des registres généraux facteur vaut 1, 2, 4 ou 8 (omis lorsqu il vaut 1). deplacement est une étiquette. 36/73 c Sovanna Tan Assembleur intel
37 Exemple : tri par sélection (1) e x t e r n p r i n t f segment. d a t a l o n g I n t F o r m a t db %l d,0 stringformat db %s,0 newline db 10,0 a dq 7, 5, 2, 18, 14, 8 segment. b s s ; t r i par s e l e c t i o n du t a b l e a u b ; e l e m e n t s de a numerotes de 0 a n 1 ; pour i de 0 a n 2 ; min < i ; pour j de i + 1 a n 1 ; s i a [ j ] < a [ min ] min < j ; s i min!= i e c h a n g e r a [ i ] e t a [ min ] segment. t e x t g l o b a l asm main asm main : ; s a u v e g a r d e p o i n t e u r p i l e push rbp mov rbp, r s p push r12 f o r 1 : mov rcx, 0 jmp t e s t 1 ; r b x c o n t i e n t a [ r c x ] n e x t 1 : mov rbx, [ a+8 r c x ] mov rdx, r c x push r c x i n c rdx i f 1 : cmp rbx, [ a+8 rdx ] j n g e n d i f 1 ; v a l e u r min dans r b x mov rbx, [ a+8 rdx ] ; s a u v e g a r d e de i n d i c e min s u r p i l e push rdx endif1 : i n c rdx t e s t 2 : cmp rdx, 6 j l i f 1 ; min dans rbx, echange mov rax, [ a+8 r c x ] mov [ a+8 r c x ], rbx pop rdx mov [ a+8 rdx ], r a x i n c r c x t e s t 1 : cmp rcx, 5 j l n e x t 1 37/73 c Sovanna Tan Assembleur intel
38 Exemple : tri par sélection (2) Exécution du programme ; a f f i c h a g e du t a b l e a u mov r12, 0 jmp t e s t 3./trisel next3 : mov rdi, longintformat mov r s i, [ a+8 r12 ] mov rax, 0 c a l l p r i n t f i n c r12 t e s t 3 : cmp r12, 6 j l n e x t 3 mov rdi, s t r i n g F o r m a t mov r s i, newline mov rax, 0 c a l l p r i n t f ; r e s t a u r a t i o n p o i n t e u r p i l e pop r12 mov rsp, rbp pop rbp mov rax, 0 r e t 38/73 c Sovanna Tan Assembleur intel
39 1 Introduction 2 Les registres 3 Les instructions 4 Les structures de contrôle 5 Les tableaux 6 Les sous programmes 7 Les calculs flottants 9/73 c Sovanna Tan Assembleur intel
40 Appel de sous programme Sous programme Partie du code écrite une seule fois que l on peut exécuter à partir de différents endroits du programme. Implémentation des procédures et des fonctions des langages de haut niveau. A la fin de l exécution d un sous programme, l exécution doit se poursuivre avec l instruction qui suit l appel. Impossible à implémenter avec une étiquette. Il faut mémoriser l adresse de retour et faire un saut à cette adresse en utilisant l adressage indirect. On dispose des instructions suivantes : call op saut inconditionnel à op et empile l adresse de l instruction suivante ret dépile une adresse et saute à cette adresse Attention à la gestion de la pile! 40/73 c Sovanna Tan Assembleur intel
41 La valeur de retour des fonctions Elles sont passées par des registres : rax pour un pointeur ou un type entier de taille inférieure ou égale à 64 bits (Les valeurs sont étendues sur 64 bits.) ; rdx:rax pour une valeur 128 bits ; xmm0 pour une valeur flottante ou xmm1:xmm0 si besoin. 41/73 c Sovanna Tan Assembleur intel
42 Exemple : calcul de n 2 1 e x t e r n p r i n t f segment. d a t a formatsortie1 db 6ˆ2 1 vaut : %ld,10,0 formatsortie2 db 8ˆ2 1 vaut : %ld,10,0 segment. b s s segment. t e x t g l o b a l asm main asm main : ; s a u v e g a r d e des r e g i s t r e s s u r l a p i l e push rbp ; 1 er appel de l a fo nct ion mov r d i, 6 c a l l f o n c 1 ; a p p e l p r i n t f mov rdi, f o r m a t S o r t i e 1 mov r s i, r a x mov rax, 0 c a l l p r i n t f ; 2eme appel de l a f onc ti on mov r d i, 8 c a l l f o n c 1 ; a p p e l p r i n t f mov rdi, f o r m a t S o r t i e 2 mov r s i, r a x mov rax, 0 c a l l p r i n t f ; r e s t a u r a t i o n des r e g i s t r e s pop rbp ; e n v o i de 0 au programme C mov rax, 0 r e t ; code de l a fon ct ion fonc1 : push rbp mov rbp, r s p imul r d i, r d i sub r d i, 1 mov rax, r d i mov rsp, rbp pop rbp r e t 42/73 c Sovanna Tan Assembleur intel
43 Code réentrant Sous programme réentrant Un sous programme réentrant peut être utilisé simultanément par plusieurs tâches. Une seule copie du code en mémoire peut être utilisée par plusieurs utilisateurs en même temps. Pour cela, le sous programme réentrant ne doit pas : modifier son code ; modifier les données globales comme celles des segments.data et.bss. Toutes les variables locales doivent être stockées sur la pile. 43/73 c Sovanna Tan Assembleur intel
44 Calcul récursif Sous programme récursif Un sous programme récursif est un sous programme qui s appelle lui même : directement ; ou indirectement par l intermédiaire d autres appels de fonctions. Un sous programme récursif doit avoir une condition de terminaison pour que le programme s arrête, sinon il engendre une erreur à l exécution lorsque les ressources sont épuisées. Un sous programme réentrant peut s appeler de manière récursive. 44/73 c Sovanna Tan Assembleur intel
45 Les variables locales On alloue l espace requis par les variables locales en diminuant rsp. La taille des blocs doit être un multiple de 16 pour Windows et Linux. On peut alors mettre les valeurs des variables locales dans [rsp], [rsp+8],... A la fin du sous programme, on libère l espace mémoire correspondant avec mov rsp,rbp 45/73 c Sovanna Tan Assembleur intel
46 Les instructions enter et leave Simplifient l écriture des sous programmes. enter TAILLE VAR LOC, 0... ; code du s s prog leave r e t push rbp mov rbp, rsp sub rsp, TAILLE VAR LOC... ; code du s s prog mov rsp, rbp pop rbp r e t TAILLE VAR LOC doit être un multiple de 16. Le pointeur rsp doit contenir la valeur 0 en hexadécimal pour le chiffre des unités. Les systèmes d exploitation Windows et Linux demandent le maintien du pointeur de pile aligné sur un bloc de 16 octets. Sa valeur en hexadécimal doit contenir 0 pour le chiffre des unités. Un appel de fonction avec la valeur 8 en hexadécimal pour le chiffre des unités de rsp conduit à une segmentation fault. 46/73 c Sovanna Tan Assembleur intel
47 La pile des appels de fonctions (stack frame) Comme chaque call empile, l adresse de l instruction à exécuter après le retour de l appel, le fait de commencer un appel de fonction par enter TAILLE VAR LOC, 0 ou push rbp mov rbp, rsp sub rsp, TAILLE VAR LOC et de le terminer par leave permet au débogueur de remonter la pile des appels de fonctions. 47/73 c Sovanna Tan Assembleur intel
48 Exemple de sous programme récursif : calcul de n! e x t e r n p r i n t f segment. d a t a formatsortie1 db 5! vaut : %ld,10,0 segment. b s s segment. t e x t g l o b a l asm main asm main : ; s a u v e g a r d e des r e g i s t r e s s u r l a p i l e push rbp ; appel de l a f onc tio n pour n=5 mov r d i, 5 c a l l f a c t ; a p p e l p r i n t f mov rdi, f o r m a t S o r t i e 1 mov r s i, r a x mov rax, 0 c a l l p r i n t f ; r e s t a u r a t i o n des r e g i s t r e s pop rbp mov rax, 0 r e t f a c t : ; une v a r i a b l e l o c a l e e n t i e r e e n t e r 16,0 ; s a u v e g a r d e du p a r a m e t r e n mov [ r s p ], r d i ; c a s n==1 cmp r d i, 1 j e term cond ; c a s <>1 c a l c u l de f a c t ( n 1) dec r d i c a l l f a c t ; f a c t ( n)= f a c t ( n 1) n imul rax, [ r s p ] jmp e n d f a c t term cond : ; f a c t (1)=1 mov rax, 1 end fact : l e a v e r e t 48/73 c Sovanna Tan Assembleur intel
49 Conventions d appel d un sous programme Lors de l appel d un sous programme, le code appelant et le sous programme doivent se coordonner pour le passage des paramètres. Ce processus est normalisé dans les langages de haut niveau. Ce sont les conventions d appel. Au niveau de l assembleur, il n y a pas de norme. Les conventions diffèrent d un compilateur à l autre. Pour interfacer, l assembleur avec un langage de haut niveau l assembleur doit suivre les conventions d appel du langage de haut niveau. 49/73 c Sovanna Tan Assembleur intel
50 Contenu de la convention d appel Où le code appelant place-t-il les paramètres : sur la pile ou dans des registres? Quand les paramètres sont placés sur la pile, dans quel ordre y sont-ils placés : du premier au dernier ou du dernier au premier? Quand les paramètres sont placés sur la pile, qui doit nettoyer la pile suite à l appel : le code appelant ou le code du sous programme? Quels sont les registres préservés (callee-save) que le sous programme doit sauver avant d utiliser et restaurer à la fin et les registres de travail (caller-save) dont l appelant a sauvé le contenu et qui peuvent être utilisés par le sous programme à volonté? Où se trouve la valeur de retour d une fonction? 50/73 c Sovanna Tan Assembleur intel
51 Le passage des paramètres Le passage des paramètres peut se faire par les registres comme dans les fonctions fonc1 et fact. S il y a trop de paramètres, il faut en passer certains par la pile. On empile les paramètres avant le call. Si le sous programme doit modifier le paramètre, il faut passer l adresse de la donnée à modifier. Si la taille du paramètre est inférieure à celle d un qword, il faut l étendre avant de l empiler. Les paramètres ne sont pas dépilés par le sous programme mais on y accède depuis la pile. L adresse de retour empilée par call doit être dépilée en premier. Les paramètres peuvent être utilisés plusieurs fois dans le sous programme. 51/73 c Sovanna Tan Assembleur intel
52 Les conventions d appel du C (cdecl) Les paramètres sont empilés dans l ordre inverse de celui dans lequel ils sont écrits dans la fonction C. Utilisation du registre rbp pour accéder aux paramètres passés par la pile (écriture simplifiée avec enter et leave). Le sous programme doit empiler rbp avec push rbp puis copier rsp dans rbp avec mov rbp,rsp. On accède aux paramètres en utilisant rbp. Les paramètres sont [rbp+16], [rbp+24]... Cela permet de continuer à utiliser la pile dans le sous programme pour stocker les variables locales afin d écrire du code réentrant. On alloue l espace requis par les variables locales en diminuant rsp. A la fin du sous programme, on libère l espace mémoire correspondant avec mov rsp,rbp A la fin de l appel, le sous programme doit restaurer la valeur de rbp avec pop rbp. Le code appelant doit retirer les paramètres de la pile. 52/73 c Sovanna Tan Assembleur intel
53 Différences entre Linux et Windows Linux Les six premiers paramètres entiers sont passés dans rdi, rsi, rdx, rcx, r8 et r9 dans cet ordre. Les autres sont passés par la pile. Ces registres, ainsi que rax, r10 et r11 sont détruits par les appels de fonctions. Les registres callee-save sont rbx, r12,..., r15. Les paramètres flottants sont passés dans xmm0, xmm1,..., xmm7. Windows Les quatre premiers paramètres entiers sont passés dans rcx, rdx, r8 et r9 dans cet ordre. Les autres sont passés par la pile. Ces registres, ainsi que rax, r10 et r11 sont détruits par les appels de fonctions. La valeur de retour entière est contenue seulement dans rax. Les paramètres flottants sont passés dans xmm0, xmm1, xmm2 et xmm3. La valeur de retour flottante est contenue seulement dans xmm0. 53/73 c Sovanna Tan Assembleur intel
54 D autres conventions sdtcall : Le sous programme doit retirer les paramètres de la pile. Cela empêche l écriture de fonctions à nombre variable d arguments comme printf ou scanf. Utilisée dans l API Microsoft. Avec gcc, on peut préciser cdecl ou sdtcall dans le code C. Pascal : Les paramètres sont empilés dans l ordre où ils apparaissent dans la fonction, de gauche à droite. Le sous programme doit retirer les paramètres de la pile. Utilisée dans Delphi de Borland. 54/73 c Sovanna Tan Assembleur intel
55 Fonction qui affiche un tableau d entier e x t e r n p r i n t f segment. d a t a l o n g I n t F o r m a t db %l d,0 stringformat db %s,0 newline db 10,0 a dq 7, 5, 2, 18, 14, 8 segment. b s s segment. t e x t g l o b a l asm main asm main : push rbp ; a f f i c h e l e s 6 e l e m e n t s du t a b l e a u mov r d i, a mov r s i, 6 c a l l a f f i c h a g e ; a f f i c h e 3 e l e m e n t s a p a r t i r du 2eme mov r d i, a add rdi, 1 6 mov r s i, 3 c a l l a f f i c h a g e pop rbp mov rax, 0 r e t ; a f f i c h a g e du t a b l e a u a f f i c h a g e : push rbp mov rbp, r s p mov rbx, r d i mov r13, r s i mov r12, 0 jmp t e s t 3 next3 : mov rdi, longintformat mov r s i, [ rbx+8 r12 ] mov rax, 0 c a l l p r i n t f i n c r12 t e s t 3 : cmp r12, r13 j l n e x t 3 mov rdi, s t r i n g F o r m a t mov r s i, newline mov rax, 0 c a l l p r i n t f l e a v e mov rax, 0 r e t. / a f f t a b /73 c Sovanna Tan Assembleur intel
56 Tri par sélection avec fonctions (1) e x t e r n p r i n t f segment. d a t a l o n g I n t F o r m a t db %l d,0 stringformat db %s,0 newline db 10,0 a dq 7, 5, 2, 18, 14, 8 b dq 27, 35, 12, 25, 19, 12, 34 segment. b s s ; t r i par s e l e c t i o n du t a b l e a u t ; e l e m e n t s de a numerotes de 0 a n 1 ; pour i de 0 a n 2 ; min < i ; pour j de i + 1 a n 1 ; s i t [ j ] < t [ min ] min < j ; s i min!= i e c h a n g e r t [ i ] e t t [ min ] segment. t e x t g l o b a l asm main asm main : push rbp ; a p p e l de l a f o n c t i o n t r i s e l ; l e premier parametre, adresse du tableau, ; e t l e deuxieme parametre, t a i l l e du t a b l e a u ; s o n t p a s s e s dans l e s r e g i s t r e s r d i e t r s i, ; l e t r o i s i e m e parametre, nombre d e l e m e n t s ; a t r i e r, e s t p a s s e par l a p i l e ; t r i de a mov r d i, a mov r s i, 6 push 6 c a l l t r i s e l add rsp, 8 ; a f f i c h a g e du t a b l e a u mov r d i, a mov r s i, 6 c a l l a f f i c h a g e : t r i des 5 premiers elements de b mov r d i, b mov r s i, 7 push 5 c a l l t r i s e l add rsp, 8 ; a f f i c h a g e du t a b l e a u mov r d i, b mov r s i, 7 c a l l a f f i c h a g e pop rbp mov rax, 0 r e t 56/73 c Sovanna Tan Assembleur intel
57 Tri par sélection avec fonctions (2) ; f o n c t i o n de t r i t r i s e l : e n t e r 0,0 mov r12, r d i mov r14, r s i mov r13, [ rbp +16] dec r13 f o r 1 : mov rcx, 0 jmp t e s t 1 ; r b x c o n t i e n t t [ r c x ] next1 : ; s a u v e g a r d e des r e g i s t r e s ; e t a f f i c h a g e du t a b l e a u push r c x push rdx mov r d i, r12 mov r s i, r14 c a l l a f f i c h a g e pop rdx pop r c x mov rbx, [ r12+8 r c x ] mov rdx, r c x push r c x i n c rdx i f 1 : cmp rbx, [ r12+8 rdx ] j n g e n d i f 1 ; v a l e u r min dans r b x mov rbx, [ r12+8 rdx ] ; s a u v e g a r d e de i n d i c e min s u r p i l e push rdx endif1 : i n c rdx t e s t 2 : cmp rdx, [ rbp +16] j l i f 1 ; min dans rbx, echange mov rax, [ r12+8 r c x ] mov [ r12+8 r c x ], rbx pop rdx mov [ r12+8 rdx ], r a x i n c r c x t e s t 1 : cmp rcx, r13 j l n e x t 1 l e a v e r e t 57/73 c Sovanna Tan Assembleur intel
58 Tri par sélection avec fonctions (3)./trisel /73 c Sovanna Tan Assembleur intel
59 1 Introduction 2 Les registres 3 Les instructions 4 Les structures de contrôle 5 Les tableaux 6 Les sous programmes 7 Les calculs flottants 9/73 c Sovanna Tan Assembleur intel
60 L unité de calcul flottant (FPU : Floating Point Unit) Au début, elle était un circuit séparé, le coprocesseur mathématique. Puis, elle a été intégrée au microprocesseur, mais se programmait toujours de façon distincte. Avec les architectures 64 bits, apparaît un nouveau jeu d instructions SSE (Streaming SIMD (Single Instruction Multiple Data) Extensions) pour des registres de taille 128 ou 256 bits selon les processeurs. 60/73 c Sovanna Tan Assembleur intel
61 Les types de nombres flottants Simple précision IEEE : 1 bit signe, 8 bits exposant, 23 bits mantisse Double précision IEEE : 1 bit signe, 11 bits exposant, 52 bits mantisse Precision étendue intel 80 bits : 1 bit signe, 15 bits exposant, 64 bits mantisse Ce format est différent des formats IEEE Dans le processeur Intel 32 bits, tous les calculs étaient effectués en précision étendue puis convertis en simple ou double précision IEEE Quadruple précision IEEE : 1 bit signe, 15 bits exposant, 112 bits mantisse 256 bits (extrapolation de IEEE ) : 1 bit signe, 19 bits exposant, 236 bits mantisse 61/73 c Sovanna Tan Assembleur intel
62 Les registres 16 registres généraux xmm0, xmm1,... et xmm15. Ces registres peuvent être utilisés avec des instructions pour une seule valeur ou pour un vecteur de valeurs. Ce vecteur comporte alors soit 4 floats soit 2 doubles. Les processeurs de la série i-core ont 16 registres 256 bits ymm0, ymm1,... et ymm15. Les registres xmm0, xmm1,... et xmm15 correspondent aux premiers 128 bits des registres ymm0, ymm1,... et ymm15. Ces derniers peuvent être vu comme des vecteurs de 8 floats ou 4 doubles. 62/73 c Sovanna Tan Assembleur intel
63 Les instructions de déplacement de données Déplacement d une seule valeur movsd dest,src déplacement d un flottant double movss dest,src déplacement d un flottant simple (float) Déplacement de paquets (plusieurs valeurs simultanément) movapd dest,src déplacement de 2 doubles alignés 3 movaps dest,src déplacement de 4 floats alignés movdqa dest,src déplacement d un double qword aligné movupd dest,src déplacement de 2 doubles non alignés movups dest,src déplacement de 4 floats non alignés movdqu dest,src déplacement d un double qword non aligné Les noms des instructions pour les registres 256 bits commencent par v, vmovapd, vmovaps, alignés sur 1 bloc de 16 octets 63/73 c Sovanna Tan Assembleur intel
64 Calculs flottants addsd dest,src addition de 2 doubles addss dest,src addition de 2 floats addpd dest,src 2 doubles + 2 doubles addps dest,src 4 floats + 4 floats subsd dest,src soustraction de 2 doubles subss dest,src soustraction de 2 floats subpd dest,src 2 doubles - 2 doubles subps dest,src 4 floats - 4 floats mulsd dest,src multiplication de 2 doubles mulss dest,src multiplication de 2 floats mulpd dest,src 2 doubles * 2 doubles mulps dest,src 4 floats * 4 floats divsd dest,src division de 2 doubles divss dest,src division de 2 floats divpd dest,src 2 doubles / 2 doubles divps dest,src 4 floats / 4 floats dest doit être un registre flottant. 64/73 c Sovanna Tan Assembleur intel
65 Les instructions de conversion cvtss2sd dest,src cvtps2pd dest,src cvtsd2ss dest,src cvtpd2ps dest,src cvtss2si dest,src cvtsd2si dest,src cvtsi2ss dest,src cvtsi2sd dest,src convertit un float en double convertit un paquet de 2 floats en un paquet de 2 doubles convertit un double en float convertit un paquet de 2 doubles en un paquet de 2 floats convertit un float en dword ou qword convertit un double en dword ou qword convertit un entier en float convertit un entier en double Lorsque l opérande source est dans la mémoire, il faut préciser la taille de la donnée à lire. 65/73 c Sovanna Tan Assembleur intel
66 Les instructions de comparaison comisd op1,op2 comiss op1,op2 ucomisd op1,op2 ucomiss op1,op2 comparaison ordonnée de deux doubles comparaison ordonnée de deux floats comparaison non ordonnée de deux doubles comparaison non ordonnée de deux floats op1 doit être un registre,,op2 peut être un registre ou une valeur en mémoire. Les instructions mettent à jour les drapeaux ZF, PF et CF. Les comparaisons non ordonnées lèvent une exception si l un des opérandes vaut SNaN (Signaling Not a Number i.e. que des 1 dans l exposant et mantisse de la forme 0x) et les comparaisons ordonnées lèvent une exception si l un des deux opérandes vaut SNaN ou QNaN (Quiet Not a Number i.e. que des 1 dans l exposant et mantisse de la forme 1x). 66/73 c Sovanna Tan Assembleur intel
67 Les branchements conditionnels pour les flottants Après une instruction de comparaison de flottants (comisd, comiss, ucomisd ou ucomiss) entre op1 et op2 : jb op branchement à op si op1 < op2 CF=1 jbe op branchement à op si op1 op2 CF=1 ou ZF=1 ja op branchement à op si op1 > op2 CF=1 jae op branchement à op si op1 op2 CF=1 ou ZF=1 67/73 c Sovanna Tan Assembleur intel
68 Arrondis roundsd dest,src,mode roundss dest,src,mode roundpd dest,src,mode roundps dest,src,mode arrondi src de type double dans dest arrondi src de type float dans dest arrondi des 2 doubles de src dans dest arrondis des 4 floats de src dans dest dest doit être un registre flottant. mode est un opérande immédiat : 0 arrondi à la valeur entière paire la plus proche 1 arrondi à la valeur entière inférieure 2 arrondi à la valeur supérieure 3 arrondi à la valeur absolue inférieure (à la valeur entière la plus proche de 0) 68/73 c Sovanna Tan Assembleur intel
69 Instructions diverses minsd dest,src minss dest,src minpd dest,src minps dest,src maxsd dest,src maxss dest,src maxpd dest,src maxps dest,src sqrtsd dest,src sqrtss dest,src sqrtpd dest,src sqrtps dest,src minimun de 2 doubles (src et dest) dans dest minimun de 2 floats (src et dest) dans dest 2 calculs de minimun de 2 doubles dans dest 4 calculs de minimun de 2 floats dans dest maximun de 2 doubles (src et dest) dans dest maximun de 2 floats (src et dest) dans dest 2 calculs de maximun de 2 doubles dans dest 4 calculs de maximun de 2 floats dans dest racine carrée de src de type double dans dest racine carrée de src de type float dans dest 2 racines carrées de src(2 doubles) dans dest 4 racines carrées de src(4 floats) dans dest dest doit être un registre flottant. 69/73 c Sovanna Tan Assembleur intel
70 Exemple : calcul de la valeur d un polynôme (1) e x t e r n p r i n t f, s c a n f segment. d a t a c o e f f dq 1.0, 2.0, 3.0, 4. 0 x dq 2. 0 promptdouble db %l f,0 prompt1doubleln db 4x3+3x2+2x+1 (2) = %l f,10,0 prompt2doubleln db 4x3+3x2+2x+1 (% l f ) = %l f,10,0 p r o m p t E n t r e r db E n t r e z x :,0 segment. b s s y r e s q 1 segment. t e x t g l o b a l asm main, h o r n e r asm main : push rbp mov rbp, rsp l e a r d i, [ c o e f f ] movsd xmm0, [ x ] mov esi, 3 c a l l h o r n e r mov rdi, prompt1doubleln mov rax, 1 c a l l p r i n t f mov rdi, p r o m p t E n t r e r mov rax, 0 c a l l p r i n t f mov rdi, promptdouble mov r s i, y mov rax, 0 c a l l s c a n f l e a r d i, [ c o e f f ] movsd xmm0, [ y ] mov esi, 3 c a l l h o r n e r mov rdi, prompt2doubleln movsd xmm1,xmm0 movsd xmm0, [ y ] mov rax, 2 c a l l p r i n t f xor eax, eax l e a v e r e t ; e x t r a i t du l i v r e de Ray S e y f a r t h horner : movsd xmm1, xmm0 ; use xmm1 as x movsd xmm0, [ r d i+r s i 8] ; accumulator f o r b k cmp esi, 0 ; i s the degree 0? j z done more : sub e s i, 1 mulsd xmm0, xmm1 ; b k x addsd xmm0, [ r d i+r s i 8] ; add p k j n z more done : r e t 70/73 c Sovanna Tan Assembleur intel
71 Exemple : calcul de la valeur d un polynôme (2). / h o r n e r 4 x3+3x2+2x+1 ( 2 ) = E n t r e z x : 3 4 x3+3x2+2x+1 ( ) = /73 c Sovanna Tan Assembleur intel
72 Exemple : calcul de la somme de deux vecteurs (1) e x t e r n p r i n t f mov r d i, b segment. d a t a mov r s i, 8 a dq 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8. 0 c a l l a f f i c h a g e b dq 2.0, 0.5, 4.0, 0.2, 3.0, 1.5, 0.5, 0. 4 mov r d i, c floatformat db %l f,0 mov r s i, 8 promptres db a b=,0 c a l l a f f i c h a g e promptln db 10,0 mov rax, 0 segment. b s s l e a v e c r e s q 8 r e t segment. t e x t g l o b a l asm main, h o r n e r a f f i c h a g e : asm main : push rbp e n t e r push 0,0 r12 mov rbp, rsp push r13 mov rcx, 0 mov rdx, 8 push push r14 rbx jmp t e s t 1 next1 : movapd xmm0, [ a+8 rcx ] movapd xmm1, [ b+8 rcx ] t e s t 1 : addpd xmm1,xmm0 movapd [ c+8 rcx ],xmm1 add rcx, 2 cmp rcx, rdx j l n e x t 1 mov r d i, a mov r s i, 8 c a l l a f f i c h a g e mov rbx, r d i mov r13, r s i mov r12, 0 jmp t e s t 3 next3 : mov rdi, floatformat movsd xmm0, [ rbx+8 r12 ] mov rax, 1 t e s t 3 : c a l l p r i n t f i n c r12 cmp r12, r13 j l n e x t 3 72/73 c Sovanna Tan Assembleur intel
73 Exemple : calcul de la somme de deux vecteurs (2) mov rdi, promptln mov rax, 0 c a l l p r i n t f pop rbx pop r14 pop r13 pop r12 mov rax, 0 l e a v e r e t. / a d d v e c t /73 c Sovanna Tan Assembleur intel
Programmation assembleur : aperçu
Assembleur : Younès EL AMRANI. 1 Programmation assembleur : aperçu Programmation en assembleur : NASM Module M14 Semestre 4 Printemps 2010 Equipe pédagogique : Younès El Amrani, Abdelhakim El Imrani, Faissal
Assembleur i8086. Philippe Preux IUT Informatique du Littoral. Année universitaire 95 96
Assembleur i8086 Philippe Preux IUT Informatique du Littoral Année universitaire 95 96 1 Avertissement Ce document décrit le langage d assemblage étudié et utilisé dans le cadre des TP d architecture.
Structure d un programme
Architecture des ordinateurs Cours 6 Structure d un programme 3 décembre 2012 Archi 1/30 Programme en Assembleur Archi 2/30 Sections de données programme en assembleur = fichier texte (extension.asm) organisé
Architecture des ordinateurs
Architecture des ordinateurs Cours 7 17 décembre 2012 Archi 1/1 Fonctions, suite et fin Archi 2/1 Rappel Forme générale d un sous-programme (fonction) : etiquette sousprogramme: push ebp ; empile la valeur
DU BINAIRE AU MICROPROCESSEUR - D ANGELIS CIRCUITS CONFIGURABLES NOTION DE PROGRAMMATION
145 NOTION DE PROGRAMMATION 1/ Complétons notre microprocesseur Nous avons, dans les leçons précédentes décrit un microprocesseur théorique, cependant il s inspire du 6800, premier microprocesseur conçu
Logiciel de base. Première année ENSIMAG
Logiciel de base Première année ENSIMAG 1 Procédures, paramètres, pile En assembleur une fonction est une étiquette, c'est l'adresse de sa première instruction Lors de l'appel d'une fonction, la pile sert
Compilation (INF 564)
Présentation du cours Le processeur MIPS Programmation du MIPS 1 Compilation (INF 564) Introduction & architecture MIPS François Pottier 10 décembre 2014 Présentation du cours Le processeur MIPS Programmation
Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155)
Architecture des ordinateurs : Programmation des processeurs avec l'environnement «y86» (INF155) F. Pellegrini Université Bordeaux 1 Ce document est copiable et distribuable librement et gratuitement à
Département informatique de l université d Angers
Département informatique de l université d Angers Amélioration d'un logiciel d'émulation du fonctionnement d'un microprocesseur x8 6 SCHAEFFER Florian ROUSSEAUX Billy L3 Informatique Responsable du projet:
Rappels d architecture
Assembleur Rappels d architecture Un ordinateur se compose principalement d un processeur, de mémoire. On y attache ensuite des périphériques, mais ils sont optionnels. données : disque dur, etc entrée
4. Initiation à l'assembleur
4. Initiation à l'assembleur 142 143 1. Introduction Pour mieux comprendre la structure interne d'un ordinateur, nous aborderons la langage d'assemblage d'un processeur contemporain, le Pentium III d'intel.
Architecture des ordinateurs
Architecture des ordinateurs Cours 4 5 novembre 2012 Archi 1/22 Micro-architecture Archi 2/22 Intro Comment assembler les différents circuits vus dans les cours précédents pour fabriquer un processeur?
Conception de circuits numériques et architecture des ordinateurs
Conception de circuits numériques et architecture des ordinateurs Frédéric Pétrot Année universitaire 2014-2015 Structure du cours C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 Codage des nombres en base 2, logique
INITIATION AU LANGAGE C SUR PIC DE MICROSHIP
COURS PROGRAMMATION INITIATION AU LANGAGE C SUR MICROCONTROLEUR PIC page 1 / 7 INITIATION AU LANGAGE C SUR PIC DE MICROSHIP I. Historique du langage C 1972 : naissance du C dans les laboratoires BELL par
Architecture des ordinateurs TD1 - Portes logiques et premiers circuits
Architecture des ordinateurs TD1 - Portes logiques et premiers circuits 1 Rappel : un peu de logique Exercice 1.1 Remplir la table de vérité suivante : a b a + b ab a + b ab a b 0 0 0 1 1 0 1 1 Exercice
Informatique Générale
Informatique Générale Guillaume Hutzler Laboratoire IBISC (Informatique Biologie Intégrative et Systèmes Complexes) [email protected] Cours Dokeos 625 http://www.ens.univ-evry.fr/modx/dokeos.html
Machines virtuelles. Brique ASC. Samuel Tardieu [email protected]. Samuel Tardieu (ENST) Machines virtuelles 1 / 40
Machines virtuelles Brique ASC Samuel Tardieu [email protected] École Nationale Supérieure des Télécommunications Samuel Tardieu (ENST) Machines virtuelles 1 / 40 Machines virtuelles La compilation peut
Assembleur. Faculté I&C, André Maurer, Claude Petitpierre
Assembleur Faculté I&C, André Maurer, Claude Petitpierre INTRODUCTION Logiciel utilisé Faculté I&C, André Maurer, Claude Petitpierre MEMOIRE Mémoire Faculté I&C, André Maurer, Claude Petitpierre Mémoire
Chapitre 10 Arithmétique réelle
Chapitre 10 Arithmétique réelle Jean Privat Université du Québec à Montréal INF2170 Organisation des ordinateurs et assembleur Automne 2013 Jean Privat (UQAM) 10 Arithmétique réelle INF2170 Automne 2013
Programmation C. Apprendre à développer des programmes simples dans le langage C
Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités
Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples
Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation impérative et structures de données simples Introduction au langage C Sandrine Blazy - 1ère année 24 octobre 2007 Cours d Algorithmique-Programmation
Logiciel de Base. I. Représentation des nombres
Logiciel de Base (A1-06/07) Léon Mugwaneza ESIL/Dépt. Informatique (bureau A118) [email protected] I. Représentation des nombres Codage et représentation de l'information Information externe formats
Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java
Info0101 Intro. à l'algorithmique et à la programmation Cours 3 Le langage Java Pierre Delisle, Cyril Rabat et Christophe Jaillet Université de Reims Champagne-Ardenne Département de Mathématiques et Informatique
Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques
Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques CTIA04 Page 1 1. Les types de données sous S7 300 Il existe plusieurs types de données utilisées pour la programmation
MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C
Haute Ecole d Ingénierie et de Gestion Du Canton du Vaud MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C Programmation en mode simulation 1. DOCUMENTS DE RÉFÉRENCE...
Jeu d instructions NIOS II
Jeu d instructions NIOS II 1 Formats d instructions Le processeur NIOS II a un jeu d instructions de type RISC. Il possède 32 registres de 32 bits, notés r0 à r31, avec r0 0. Les instructions sont de longueur
Cours 1 : La compilation
/38 Interprétation des programmes Cours 1 : La compilation Yann Régis-Gianas [email protected] PPS - Université Denis Diderot Paris 7 2/38 Qu est-ce que la compilation? Vous avez tous déjà
SSTIC 2009. Désobfuscation automatique de binaires. Alexandre Gazet. Yoann Guillot. Et autres idyles bucoliques...
Désobfuscation automatique de binaires Et autres idyles bucoliques... Alexandre Gazet Sogeti / ESEC R&D alexandre.gazet(at)sogeti.com Yoann Guillot Sogeti / ESEC R&D yoann.guillot(at)sogeti.com SSTIC 2009
UE C avancé cours 1: introduction et révisions
Introduction Types Structures de contrôle Exemple UE C avancé cours 1: introduction et révisions Jean-Lou Desbarbieux et Stéphane Doncieux UMPC 2004/2005 Introduction Types Structures de contrôle Exemple
CM2 L architecture MIPS32
CM2 L architecture MIPS32 Olivier Marchetti (CM-TD-TP) Alexandre Brière (TD-TP) Laboratoire d informatique de Paris 6 Pôle SoC UPMC Année 2014-2015 Instructions MIPS Contrôle Données en MIPS E/S en MIPS
Exécution des instructions machine
Exécution des instructions machine Eduardo Sanchez EPFL Exemple: le processeur MIPS add a, b, c a = b + c type d'opération (mnémonique) destination du résultat lw a, addr opérandes sources a = mem[addr]
Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application
Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un
Ordinateurs, Structure et Applications
Ordinateurs, Structure et Applications Cours 10, Les interruptions Etienne Tremblay Université Laval, Hiver 2012 Cours 10, p.1 Les interruptions du 8086 Une interruption interrompt l exécution séquentielle
ASR1 TD7 : Un microprocesseur RISC 16 bits
{Â Ö Ñ º ØÖ Ý,È ØÖ ºÄÓ Ù,Æ ÓÐ ºÎ ÝÖ Ø¹ ÖÚ ÐÐÓÒ} Ò ¹ÐÝÓÒº Ö ØØÔ»»Ô Ö Óº Ò ¹ÐÝÓÒº Ö» Ö Ñ º ØÖ Ý»¼ Ö½» ASR1 TD7 : Un microprocesseur RISC 16 bits 13, 20 et 27 novembre 2006 Présentation générale On choisit
Licence Sciences et Technologies Examen janvier 2010
Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.
Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter
UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.
UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases
Résumé Génération de code Le code intermédiaire
Résumé Analyse INFO0004 Structure des langages de programmation Génération de code ; liaison et exécution Justus H. Piater Programmation Analyse Compilation Liaison fichier texte Analyse lexicale flux
UE Programmation Impérative Licence 2ème Année 2014 2015
UE Programmation Impérative Licence 2 ème Année 2014 2015 Informations pratiques Équipe Pédagogique Florence Cloppet Neilze Dorta Nicolas Loménie [email protected] 2 Programmation Impérative
1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.
1. Structure d un programme C Un programme est un ensemble de fonctions. La fonction "main" constitue le point d entrée pour l exécution. Un exemple simple : #include int main() { printf ( this
Introduction au langage C
Introduction au langage C Cours 1: Opérations de base et premier programme Alexis Lechervy Alexis Lechervy (UNICAEN) Introduction au langage C 1 / 23 Les premiers pas Sommaire 1 Les premiers pas 2 Les
Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu
Travaux d études et de recherches Traduction binaire dynamique de l extension SIMD Néon de l ARMv7 dans Qemu Étudiant : Luc Michel Encadrants : Frédéric Pétrot Nicolas Fournel 23 mai 2010 TABLE DES MATIÈRES
Codage d information. Codage d information : -Définition-
Introduction Plan Systèmes de numération et Représentation des nombres Systèmes de numération Système de numération décimale Représentation dans une base b Représentation binaire, Octale et Hexadécimale
Représentation des Nombres
Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...
IV- Comment fonctionne un ordinateur?
1 IV- Comment fonctionne un ordinateur? L ordinateur est une alliance du hardware (le matériel) et du software (les logiciels). Jusqu à présent, nous avons surtout vu l aspect «matériel», avec les interactions
EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE
EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0
Algorithmique et Programmation, IMA
Algorithmique et Programmation, IMA Cours 2 : C Premier Niveau / Algorithmique Université Lille 1 - Polytech Lille Notations, identificateurs Variables et Types de base Expressions Constantes Instructions
DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51
DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51 PLAN DU COURS Introduction au langage C Notions de compilation Variables, types, constantes, tableaux, opérateurs Entrées sorties de base Structures de
Le Projet BINSEC. Automatiser l analyse de sécurité au niveau binaire. Airbus group, CEA, IRISA, LORIA, Uni. Joseph Fourier. p.
Le Projet BINSEC Automatiser l analyse de sécurité au niveau binaire Airbus group, CEA, IRISA, LORIA, Uni. Joseph Fourier p. 1/22 Introduction Panorama de BINSEC Cadre de travail Projet ANR INS, appel
Claude Delannoy. 3 e édition C++
Claude Delannoy 3 e édition Exercices Exercices C++ en en langage langage delc++ titre 4/07/07 15:19 Page 2 Exercices en langage C++ AUX EDITIONS EYROLLES Du même auteur C. Delannoy. Apprendre le C++.
Cours d Algorithmique et de Langage C 2005 - v 3.0
Cours d Algorithmique et de Langage C 2005 - v 3.0 Bob CORDEAU [email protected] Mesures Physiques IUT d Orsay 15 mai 2006 Avant-propos Avant-propos Ce cours en libre accès repose sur trois partis pris
Conventions d écriture et outils de mise au point
Logiciel de base Première année par alternance Responsable : Christophe Rippert [email protected] Introduction Conventions d écriture et outils de mise au point On va utiliser dans cette
Mathématiques appliquées à l informatique
Mathématiques appliquées à l informatique Luc De Mey Ces notes de cours sont disponibles à l adresse : www.courstechinfo.be/math_info.pdf Dernière révision : 6 mai 2013 Table des matières 1 Systèmes de
IFT2880 Organisation des ordinateurs et systèmes
Représentation des nombres flottants Notation exponentielle Représentations équivalentes dans la base 10 de 1,234 1 2 3, 4 0 0. 0 x 1 0-2 1 2, 3 4 0. 0 x 1 0-1 1, 2 3 4. 0 x 1 0 1 2 3. 4 x 1 0 1 2. 3 4
Programmation en langage C
Programmation en langage C Anne CANTEAUT INRIA - projet CODES B.P. 105 78153 Le Chesnay Cedex [email protected] http://www-rocq.inria.fr/codes/anne.canteaut/cours C 2 Table des matières 3 Table des
TD Architecture des ordinateurs. Jean-Luc Dekeyser
TD Architecture des ordinateurs Jean-Luc Dekeyser Fiche 1 Nombres de l informatique Exercice 1 Une entreprise désire réaliser la sauvegarde de ses données sur un site distant. Le volume de données à sauvegarder
Gestion mémoire et Représentation intermédiaire
Gestion mémoire et Représentation intermédiaire Pablo de Oliveira March 23, 2015 I Gestion Memoire Variables locales Les variables locales sont stockées: Soit dans un registre,
Bases de programmation. Cours 5. Structurer les données
Bases de programmation. Cours 5. Structurer les données Pierre Boudes 1 er décembre 2014 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. Types char et
Microprocesseur + Logiciel
Microprocesseur + Logiciel Robot EVALBOT MOHAMED AKIL BUREAU 5253 UNITE IGI 1001 PROGRAMMATION DES MICROPROCESSEURS Présentation [IGI1001] CONTEXTE SCIENTIFIQUE... 4 1. OBJECTIFS DE L UNITE... 6 2. OBJECTIFS
IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C
IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en
Triton : Framework d exécution concolique et d analyses en runtime
Triton : Framework d exécution concolique et d analyses en runtime Jonathan Salwan et Florent Saudel [email protected] [email protected] Quarkslab, Université de Bordeaux Résumé Triton
1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :
GIF-3002 SMI et Architecture du microprocesseur Ce cours discute de l impact du design du microprocesseur sur le système entier. Il présente d abord l architecture du cœur ARM Cortex M3. Ensuite, le cours
Langage C. Patrick Corde. [email protected]. 22 juin 2015. Patrick Corde ( [email protected] ) Langage C 22 juin 2015 1 / 289
Langage C Patrick Corde [email protected] 22 juin 2015 Patrick Corde ( [email protected] ) Langage C 22 juin 2015 1 / 289 Table des matières I 1 Présentation du langage C Historique Intérêts
Rappels Entrées -Sorties
Fonctions printf et scanf Syntaxe: écriture, organisation Comportement Données hétérogènes? Gestion des erreurs des utilisateurs 17/11/2013 Cours du Langage C [email protected] ibrahimguelzim.atspace.co.uk
Cours Informatique 1. Monsieur SADOUNI Salheddine
Cours Informatique 1 Chapitre 2 les Systèmes Informatique Monsieur SADOUNI Salheddine Un Système Informatique lesystème Informatique est composé de deux parties : -le Matériel : constitué de l unité centrale
Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :
Algorithmique et programmation : STRUCTURES DE DONNÉES A. Structure et enregistrement 1) Définition et rôle des structures de données en programmation 1.1) Définition : En informatique, une structure de
Architecture de l ordinateur
Architecture de l ordinateur Emmanuel Lazard Université Paris-Dauphine mars 2011 Computers are my forte! BRAZIL (Terry Gilliam, 1985) Ce document a initialement été publié sous forme de livre : Emmanuel
Corrigé des TD 1 à 5
Corrigé des TD 1 à 5 1 Premier Contact 1.1 Somme des n premiers entiers 1 (* Somme des n premiers entiers *) 2 program somme_entiers; n, i, somme: integer; 8 (* saisie du nombre n *) write( Saisissez un
PARAGON Disk Wiper. Guide de l utilisateur. Paragon Technology GmbH, System Programmierung. Copyright Paragon Technology GmbH
PARAGON Disk Wiper Guide de l utilisateur Paragon Technology GmbH, System Programmierung Copyright Paragon Technology GmbH Publié par : Paragon Technology GmbH System Programming Pearl-Str. 1 D-79426 Buggingen
INF111. Initiation à la programmation impérative en C http://ama.liglab.fr/ amini/cours/l1/inf111/ Massih-Reza Amini
Initiation à la programmation impérative en C http://ama.liglab.fr/ amini/cours/l1// Massih-Reza Amini Université Joseph Fourier Laboratoire d Informatique de Grenoble 2/52 Introduction Structures de contrôle
Introduction à MATLAB R
Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d
Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski [email protected]
Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski [email protected] Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université
Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions
Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental
Cours d algorithmique pour la classe de 2nde
Cours d algorithmique pour la classe de 2nde F.Gaudon 10 août 2009 Table des matières 1 Avant la programmation 2 1.1 Qu est ce qu un algorithme?................................. 2 1.2 Qu est ce qu un langage
Conversion d un entier. Méthode par soustraction
Conversion entre bases Pour passer d un nombre en base b à un nombre en base 10, on utilise l écriture polynomiale décrite précédemment. Pour passer d un nombre en base 10 à un nombre en base b, on peut
Solution du challenge SSTIC 2013. Emilien Girault ANSSI/COSSI/DTO/BAI 06/06/13
Solution du challenge SSTIC 2013 Emilien Girault ANSSI/COSSI/DTO/BAI 06/06/13 Plan Analyse d une capture réseau Détermination des canaux cachés Déchiffrement de l archive Etude d un FPGA Déduction du jeu
GPA770 Microélectronique appliquée Exercices série A
GPA770 Microélectronique appliquée Exercices série A 1. Effectuez les calculs suivants sur des nombres binaires en complément à avec une représentation de 8 bits. Est-ce qu il y a débordement en complément
Plan du cours. Historique du langage http://www.oracle.com/technetwork/java/index.html. Nouveautés de Java 7
Université Lumière Lyon 2 Faculté de Sciences Economiques et Gestion KHARKIV National University of Economic Introduction au Langage Java Master Informatique 1 ère année Julien Velcin http://mediamining.univ-lyon2.fr/velcin
Introduction à l algorithmique et à la programmation M1102 CM n 3
Introduction à l algorithmique et à la programmation M1102 CM n 3 DUT Informatique 1 re année Eric REMY [email protected] IUT d Aix-Marseille, site d Arles Version du 2 octobre 2013 E. Remy (IUT d
INTRODUCTION A JAVA. Fichier en langage machine Exécutable
INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du
Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire
Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS CCS Sommaire Généralités sur le langage. 2 Structure d un programme en C.. 3 Les constantes et équivalences.. 4 Les variables...
Réalisation d un OS 32 bits pour PC(x86)
Rapport projet tutoré Réalisation d un OS 32 bits pour PC(x86) Maxime Chéramy Nicolas Floquet Benjamin Hautbois
1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)
1/4 Objectif de ce cours /4 Objectifs de ce cours Introduction au langage C - Cours Girardot/Roelens Septembre 013 Du problème au programme I passer d un problème exprimé en français à la réalisation d
as Architecture des Systèmes d Information
Plan Plan Programmation - Introduction - Nicolas Malandain March 14, 2005 Introduction à Java 1 Introduction Présentation Caractéristiques Le langage Java 2 Types et Variables Types simples Types complexes
Désobfuscation automatique de binaire - The Barbarian Sublimation
Désobfuscation automatique de binaire - The Barbarian Sublimation Yoann Guillot, Alexandre Gazet Sogeti - ESEC Résumé Ce papier présente l état de notre recherche dans le domaine de l automatisation du
Algorithme. Table des matières
1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............
Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie
Chapitre I : Les bases du C++ Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie du logiciel, et ce depuis
Déprotection semi-automatique de binaire
Déprotection semi-automatique de binaire Yoann Guillot et Alexandre Gazet Sogeti - ESEC Résumé Que ce soit sur des binaires malicieux ou non, les protections dont le but est de freiner la rétro-ingénierie
Architecture des ordinateurs Introduction à l informatique
Architecture des ordinateurs Introduction à l informatique 17 septembre 2004 1 2 3 4 5 6 Les interrupteurs... 0V 5V Ce sont des composants électroniques qui laissent pser un courant principal lorsque la
Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données
EARTH et Threaded-C: Éléments clés du manuel de références de Threaded-C Bref historique de EARTH et Threaded-C Ancêtres de l architecture EARTH: Slide 1 Machine à flux de données statique de J.B. Dennis
Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon
Notes du cours 4M056 Programmation en C et C++ Vincent Lemaire et Damien Simon 13 janvier 2015 2 Table des matières Organisation générale du cours 7 1 Notions générales d algorithmique et de programmation
Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot
Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,
3. Structure des ordinateurs. 3.1 L' Unité Centrale (UC) ou processeur (Central Processing Unit CPU)
ASI Chapitre 3 : Structure des ordinateurs 40 ASI Chapitre 3 : Structure des ordinateurs 41 3. Structure des ordinateurs Le modèle d'architecture de la plupart des ordinateurs actuels provient d'un travail
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile
TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile Dans ce TP, vous apprendrez à définir le type abstrait Pile, à le programmer en Java à l aide d une interface
Le langage C. Introduction, guide de reference
Le langage C Introduction, guide de reference Ce document est une présentation du langage de programmation C, de sa syntaxe et de ses spécificités. Il est destiné essentiellement à servir de mémo-guide
Programmation Bas Niveau
Programmation Bas Niveau Basé en grande partie sur les notes de Etienne Payet et Fausto Spoto 1 Université de La Réunion FST - L2 Info Introduction 2 Module Machines virtuelles (Java), bytecode, etc. 30h
INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores
INTRODUCTION AUX SYSTEMES D EXPLOITATION TD2 Exclusion mutuelle / Sémaphores Exclusion mutuelle / Sémaphores - 0.1 - S O M M A I R E 1. GENERALITES SUR LES SEMAPHORES... 1 1.1. PRESENTATION... 1 1.2. UN
La mémoire. Un ordinateur. L'octet. Le bit
Introduction à l informatique et à la programmation Un ordinateur Un ordinateur est une machine à calculer composée de : un processeur (ou unité centrale) qui effectue les calculs une mémoire qui conserve
Initiation. àl algorithmique et à la programmation. en C
Initiation àl algorithmique et à la programmation en C Initiation àl algorithmique et à la programmation en C Cours avec 129 exercices corrigés Illustration de couverture : alwyncooper - istock.com Dunod,
ALGORITHMIQUE ET PROGRAMMATION En C
Objectifs ALGORITHMIQUE ET PROGRAMMATION Une façon de raisonner Automatiser la résolution de problèmes Maîtriser les concepts de l algorithmique Pas faire des spécialistes d un langage Pierre TELLIER 2
