2010
Plan Petit exemple 1 Le langage du coeur 2 Petit exemple 3
1 Le langage du coeur 2 Petit exemple 3
Rappel du coeur : Coeur Simproc vu en 2IMACS
Rappel du coeur : ALU et GPRs
Rappel du coeur : PC et mémoire
Rappel du coeur : RI et UC
Méthode : Méthode d assemblage
Méthode : Algo Petit exemple
Méthode : Assembleur
Méthode : Exécutable
La chaine de compilation
La chaine de compilation : Langage de haut niveau.c ->.s : Le langage de haut niveau [C,ADA,C++,...] est compilé en assembleur.s ->.o : L assemblage génère un objet ( adresses relatives 0) *.o et *.lib ->.bin : L édition de lien crée un exécutable (adresse absolue).bin -> ROM : Le chargeur place le programme dans la ROM via un périphérique
La chaine de compilation : Langage de haut niveau.c ->.s : Le langage de haut niveau [C,ADA,C++,...] est compilé en assembleur.s ->.o : L assemblage génère un objet ( adresses relatives 0) *.o et *.lib ->.bin : L édition de lien crée un exécutable (adresse absolue).bin -> ROM : Le chargeur place le programme dans la ROM via un périphérique
La chaine de compilation : Langage de haut niveau.c ->.s : Le langage de haut niveau [C,ADA,C++,...] est compilé en assembleur.s ->.o : L assemblage génère un objet ( adresses relatives 0) *.o et *.lib ->.bin : L édition de lien crée un exécutable (adresse absolue).bin -> ROM : Le chargeur place le programme dans la ROM via un périphérique
La chaine de compilation : Langage de haut niveau.c ->.s : Le langage de haut niveau [C,ADA,C++,...] est compilé en assembleur.s ->.o : L assemblage génère un objet ( adresses relatives 0) *.o et *.lib ->.bin : L édition de lien crée un exécutable (adresse absolue).bin -> ROM : Le chargeur place le programme dans la ROM via un périphérique
La chaine de compilation : Langage de haut niveau.c ->.s : Le langage de haut niveau [C,ADA,C++,...] est compilé en assembleur.s ->.o : L assemblage génère un objet ( adresses relatives 0) *.o et *.lib ->.bin : L édition de lien crée un exécutable (adresse absolue).bin -> ROM : Le chargeur place le programme dans la ROM via un périphérique
1 Le langage du coeur 2 Petit exemple 3
Programme simple Petit exemple void main ( void ) { i n t e l l o ; char a v o i l e [ ] = "ACDC" ; short i n t ayeme = 2 ; const f l o a t p i = 3. 1 4 ; } while ( 1 ) e l l o = e l l o + ( i n t ) ayeme + ( i n t ) p i ; partie déclarative peu séparée du corps langage proche de l algo mais loin de la machine (8-16-32 bits?)
Equivalent assembleur AREA Variables, DATA, READWRITE e l l o SPACE 4 a v o i l e DCB A, C, D, C,0 Ayeme DCB 0,2 AREA Constantes, DATA, READONLY p i DCW 0x40000080 AREA. textdummy, CODE, READONLY, ALIGN=2 main PROC LDR R3, = e l l o LDR R2, = a v o i l e LDR R1, =Ayeme LDR R1, [ R1 ] ; v a l e u r de Ayeme en s h o r t i n t (16 b SXTB R1, R1 ; Ayemme étendue à i n t (32 b i t s ) LDR R0, = p i LDR R0, [ R0 ] ; v a l e u r de p i en f l o a t B f l o a t 2 i n t
L assembleur n est pas simple Les zones code et data sont nettement séparées Le code est plus long et tiens compte du coeur 8/16/32/64 bits? (taille de l ALU) ALU entière ou flottante Le code tiens compte des périphériques Y-a-t-il de la ROM et à quelle adresse? "Hello world" sur UART, SPI, USB? Le code dépend du coeur : assembleur du CM3 différent de celui du Pentium, de simproc etc.
L assembleur n est pas simple Les zones code et data sont nettement séparées Le code est plus long et tiens compte du coeur 8/16/32/64 bits? (taille de l ALU) ALU entière ou flottante Le code tiens compte des périphériques Y-a-t-il de la ROM et à quelle adresse? "Hello world" sur UART, SPI, USB? Le code dépend du coeur : assembleur du CM3 différent de celui du Pentium, de simproc etc.
L assembleur n est pas simple Les zones code et data sont nettement séparées Le code est plus long et tiens compte du coeur 8/16/32/64 bits? (taille de l ALU) ALU entière ou flottante Le code tiens compte des périphériques Y-a-t-il de la ROM et à quelle adresse? "Hello world" sur UART, SPI, USB? Le code dépend du coeur : assembleur du CM3 différent de celui du Pentium, de simproc etc.
L assembleur n est pas simple Les zones code et data sont nettement séparées Le code est plus long et tiens compte du coeur 8/16/32/64 bits? (taille de l ALU) ALU entière ou flottante Le code tiens compte des périphériques Y-a-t-il de la ROM et à quelle adresse? "Hello world" sur UART, SPI, USB? Le code dépend du coeur : assembleur du CM3 différent de celui du Pentium, de simproc etc.
L assembleur n est pas simple Les zones code et data sont nettement séparées Le code est plus long et tiens compte du coeur 8/16/32/64 bits? (taille de l ALU) ALU entière ou flottante Le code tiens compte des périphériques Y-a-t-il de la ROM et à quelle adresse? "Hello world" sur UART, SPI, USB? Le code dépend du coeur : assembleur du CM3 différent de celui du Pentium, de simproc etc.
1 Le langage du coeur 2 Petit exemple 3
Cortex M3, un coeur ARMv7 Cortex M3 : coeur de µcontrôleur 32 bits de chez ARM : Advanced Risc Machines Société basé à Cambridge qui n est pas un fondeur mais un concepteur de circuits Fabrique du brevet (61 licences pour le Cortex) Architecture RISC (reduced instruction set computer) dérivée de ARMv7 Grosse implantation dans l embarqué : 95% du marché de la téléphonie mobile
Coeur Cortex M3 Petit exemple
Petit exemple Microcontroleur STM32
La famille STM32 Petit exemple
Carte de développement MCBSTM32