Systèmes Embarqués 1 & 2 Jeu D'instructions Du µP ARM A.11 Assembler Instructions Handout
User Manual:
Open the PDF directly: View PDF .
Page Count: 22
Download | |
Open PDF In Browser | View PDF |
Systèmes Embarqués 1 & 2 a.11 - Jeu d’instruc ons du µP ARM Classes T-2/I-2 // 2018-2019 Daniel Gachet | HEIA-FR/TIC a.11 | 16.11.2018 Contenu ■ Les instruc ons de transfert Load and Store instruc on ■ Les instruc ons pour les opéra ons arithmé ques et logiques Arithme cal and logical instruc ons ■ Les instruc ons pour des boucles et des branchements Loop and branch instruc ons [Gac/a.11] T-2/I-2 // 16.11.2018 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 2 / 22 Instruc on de transfert ■ On trouve 3 familles d’instruc ons ▶ ▶ ▶ Load pour les transferts de données de la mémoire vers le CPU (registres Rx) Move pour les transferts de données à l’intérieur du CPU (entre registres Rx) Store pour les transferts de données du CPU (registres Rx) vers la mémoire ldr (load) mov (move) Memory I/O CPU str (store) [Gac/a.11] T-2/I-2 // 16.11.2018 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 3 / 22 MOV Instruc ons ■ MOV (move) place une donnée dans le registre des na on. La donnée peut être une valeur immédiate ou une donnée contenue dans un autre registre. Elle peut être décalée (shi ed) avant d’être stockée. MOV{}{S} , ■ U lisa on ▶ copie d’une donnée d’un registre vers un autre mov r1, r4 ▶ // copie de la donnée contenue dans le // registre R4 dans le registre R1 décalage ou rota on sur un registre mov r1, r1, lsl #5 // décale sur la gauche de 5 bits la donnée // contenue dans le registre R1 ▶ retour de sous-rou ne en copiant l’adresse de retour (LR/R14) dans le compteur ordinal (PC/R15) mov pc, lr [Gac/a.11] T-2/I-2 // 16.11.2018 // retour de sous-routine si l’adresse a été // précédemment sauvée dans le registre LR Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 4 / 22 ”move”, d’autres instruc ons… MVN Copie le complément à 1 de la donnée (inversion binaire de la valeur) MVN{ }{S} , MRS Copie la donnée d’un registre de statut dans un registre général MRS{ } , CPSR MRS{ } , SPSR MSR Copie la donnée d’un registre général dans les champs (c, x, s, f) d’un registre de statut (CPSR current ou SPSR saved) MSR{ } CPSR_<fields>, # MSR{ } CPSR_<fields>, MSR{ } SPSR_<fields>, # MSR{ } SPSR_<fields>, <fields> : c = control (bits 0..7) x = extended (bits 8..15) s = status (bits 16..23) f = flags (bits 24..31) [Gac/a.11] T-2/I-2 // 16.11.2018 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 5 / 22 MSR/MRS, un exemple… ■ Instruc ons forçant le processeur en mode user (bit 4 – bit 0) du CPSR (0b10000) mrs bic msr [Gac/a.11] T-2/I-2 // 16.11.2018 r0,cpsr r0,r0,#0xf cpsr_c,r0 // read CPSR // modify by removing current mode // write the result back to CPSR Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 6 / 22 LDR Instruc on ■ LDR (load) charge le contenue d’une cellule mémoire à une adresse donnée dans un registre général du CPU LDR{ } , ■ U lisa on ▶ copie d’une constante dans un registre interne ldr r0,=0x1201 ▶ copie d’une adresse dans un registre interne ldr r4,=var ▶ // copie la constante 0x1201 dans le registre R0 // copie de la valeur de l’adresse de la // variable var dans le registre R4 copie d’une donnée stockée en mémoire dans un registre général ldr r1,[r4] [Gac/a.11] T-2/I-2 // 16.11.2018 // copie de la donnée stockée en mémoire à // l’adresse contenue dans le registre R4 (var) // dans le registre R1 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 7 / 22 ”load”, une autre instruc on… LDM Transferts mul ples de la mémoire vers les registres. U lisé pour restaurer de manière con guë le contenu de plusieurs registres préalablement stocké en mémoire. LDM{ } { !}, Modes d’adressage : dest : .long ldr ldmia 101,102,103,104,105,106 r9,=dest r9 !,{r1-r6} IA → increment a er IB → increment before DA → decrement a er DB → decrement before ! → Mise à jour du registre après opéra on [Gac/a.11] T-2/I-2 // 16.11.2018 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 8 / 22 STR Instruc on ■ STR (store) transfert le contenu d’un registre général du CPU vers une cellule mémoire à une adresse donnée STR{ } , ■ U lisa on ▶ copie d’une donnée d’un registre général vers la mémoire str r1,[r4] ▶ // copie de la donnée contenue dans le // registre R1 vers l’adresse contenue // dans le registre R4 stockage du PC (R15) comme adresse rela ve en mémoire str pc,[r3] [Gac/a.11] T-2/I-2 // 16.11.2018 // copie l’adresse de PC, vers la position // mémoire contenue dans le registre R3 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 9 / 22 ”store”, une autre instruc on… STM Transferts mul ples des registres vers la mémoire. U lisée pour sauvegarder de manière con guë le contenu de plusieurs registres dans la mémoire. STM{ } { !}, Modes d’adressage : dest : .space ldr ldr ldr ldr ldr stmia 16*4 r1,=1 r2,=2 r3,=3 r4,=4 r9,=dest r9 !,{r1-r4} IA → increment a er IB → increment before DA → decrement a er DB → decrement before ! → Mise à jour du registre après opéra on [Gac/a.11] T-2/I-2 // 16.11.2018 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 10 / 22 Instruc ons arithmé ques et logiques ■ Les instruc ons arithmé ques et logiques sont groupées en plusieurs familles dis nctes ▶ ▶ ▶ ■ Les instruc ons arithmé ques (addi on, soustrac on et mul plica on) Les instruc ons logiques ( ET, OU, OU exclusif, test) Les instruc ons de comparaison Format de ces opéra ons { }{S} , , ▶ ▶ ▶ ▶ ▶ ▶ : opération (mov, add, sub,…) { } : condition d’exécution, optionnel {S} : mise à jour des fanions après exécution, optionnel : 1ère opérande -> registre de destination : 2ème opérande : 3ème opérande [Gac/a.11] T-2/I-2 // 16.11.2018 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 11 / 22 Opéra ons arithmé ques ADD Addi on de deux données (Rd = Rn + shi er_operand) ADD{ }{S} , , ADC Addi on de deux données en tenant compte du carry ADC{ }{S} , , SUB Soustrac on de deux données (Rd = Rn - shi er_operand) SUB{ }{S} , , SBC Soustrac on de deux données en tenant compte du carry SBC{ }{S} , , RSB Soustrac on inverse de deux données (Rd = shi er_operand - Rn) RSB{ }{S} , , RSC Soustrac on inverse de deux données en tenant compte du carry RSC{ }{S} , , ldr ldr add r0, =3583 r1, =7620 r2, r0, r1 [Gac/a.11] T-2/I-2 // 16.11.2018 → R2 = R0 + R1 = 3583 + 7620 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 12 / 22 Addi on avec Carry ■ Une addi on avec carry permet de réaliser une addi on sur 64 bits R1 R3 R5 0x00000000 0x00000000 0x00000001 ldr ldr ldr ldr adds adc [Gac/a.11] T-2/I-2 // 16.11.2018 R0 R2 R4 0xffffffff 0x00000001 0x00000000 r0,=0xffffffff r1,=0x0 r2,=0x1 r3,=0x0 r4,r0,r2 r5,r1,r3 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 13 / 22 Soustrac on et soustrac on inverse ■ L’opéra on de soustrac on a un sens : Rd = Rn – shi er_operand ldr ldr sub ■ →R2 = R0 – R1 = 50 – 24 = 26 L’opéra on de soustrac on inverse change le sens des opérandes : Rd = shi er_operand – Rn ldr rsb ■ r0, =50 r1, =24 r2, r0, r1 r0, =50 r2, r0, #24 →R2 = 24 – R0 = 24 – 50 = -26 La soustrac on inverse permet d’obtenir le complément à 2 d’une valeur contenue dans un registre rsb r2, #0 [Gac/a.11] T-2/I-2 // 16.11.2018 →R2 = 0 – R2 = -R2 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 14 / 22 Opéra ons de mul plica on MUL Mul plica on 32 bits x 32 bits → 32 bits MUL , , →Rd = Rm * Rs MLA Mul plica on avec un accumulateur 32 bits x 32 bits → 32 bits + acc MLA , , , → Rd = Rm * Rs + Rn SMULL Mul plica on en valeurs signées 32 bits signés x 32 bits signés → 64 bits signés SMULL , , , → RdLo = lower (Rm * Rs) → bits 31-0 → RdHi = upper (Rm * Rs) → bits 63-32 UMULL Mul plica on en valeurs non-signés 32 bits x 32 bits → 64 bits UMULL , , , → RdLo = lower (Rm * Rs) → bits 31-0 → RdHi = upper (Rm * Rs) → bits 63-32 ■ Hormis ces quatre instruc ons principales, le processeur implémente également d’autres opéra ons de mul plica on [Gac/a.11] T-2/I-2 // 16.11.2018 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 15 / 22 Opéra ons logiques / booléennes AND Réalise une opéra on ET logique bit à bit entre deux opérandes AND{ }{S} , , EOR Réalise une opéra on OU-Exclusif logique bit à bit entre deux opérandes EOR{ }{S} , , ORR Réalise une opéra on OU logique bit à bit entre deux opérandes ORR{ }{S} , , BIC Réalise un ET logique bit à bit entre une valeur et le complément à 1 de la seconde BIC{ }{S} , , ldr ldr ldr ldr and orr eor bic [Gac/a.11] T-2/I-2 // 16.11.2018 r0, r1, r2, r3, r0, r1, r2, r3, =0x11 =0x22 =0x44 =0x88 r0, #0x0f r1, #0x88 r2, #0xf0 r3, #0xf0 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 16 / 22 CMP Instruc on ■ CMP (compare) compare deux données. La première donnée vient d’un registre. La deuxième peut être une valeur immédiate, une donnée contenue dans un registre ou le résultat d’un décalage avant la comparaison. CMP met à jour les condi on flags à par r du résultat de la soustrac on de la deuxième donnée à la première. CMP{ } , → - ■ U lisa on ▶ comparaison d’un registre avec une valeur immédiate cmp r1, #35 ▶ // compare la donnée contenue dans le // registre R1 avec la valeur 35 comparaison de deux données contenues dans deux registres cmp r1, r3 [Gac/a.11] T-2/I-2 // 16.11.2018 // compare les données contenues dans les // registres R1 et R3 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 17 / 22 CMN Instruc on ■ CMN (Compare Nega ve) compare une donnée avec le complément à 2 d’une deuxième donnée. La première donnée vient d’un registre. La seconde peut être une valeur immédiate, une donnée contenue dans un registre ou le résultat d’un décalage préalable. CMN met à jour les condi on flags à par r du résultat de l’addi on des deux données. CMN{ } , → - (0 - ) → + ■ U lisa on ▶ compare avec le complément à 2 d’une donnée cmn r1, #35 [Gac/a.11] T-2/I-2 // 16.11.2018 // compare la donnée contenue dans le // registre R1 avec la valeur -35 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 18 / 22 Autres instruc ons de comparaison… TST Compare deux données et met à jour les flags sur la base d’une opéra on AND logique TST{ }{S} , TEQ Compare deux données et met à jour les flags sur la base d’une opéra on EOR (ou exclusif) TEQ{ }{S} , ■ TST peut être u lisé afin de déterminer si au moins un bit contenu dans une série est à un. ■ Exemple ldr ldr tst [Gac/a.11] T-2/I-2 // 16.11.2018 r0, =0x53 r1, =0x04 r0, r1 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 19 / 22 Opéra ons de branchement B Branchement par offset, valeur immédiate de 24 bits signés → PC = PC + offset « 2 + 8 → ±32MB B loop : … … b loop BX Branchement direct par registre (p. ex. pour le retour de sous-rou nes) → PC = Rm & 0xffff’fffe BX rou ne : … … bx lr BL Branchement par offset et sauvetage de l’adresse de la prochaine instruc on à exécuter (adresse de retour), pour appel de sous-rou nes → LR = PC + 4 → PC = PC + offset « 2 + 8 → ±32MB BL … … … bl rou ne BLX Branchement et sauvetage de la prochaine adresse à exécuter, pour appel indirect de sous-rou nes → LR = PC + 4 → PC = Rm & 0xffff’fffe BLX ldr r1,=rou ne … … blx r1 ■ Chaque branchement peut s’exécuter de manière condi onnelle [Gac/a.11] T-2/I-2 // 16.11.2018 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 20 / 22 Branchements condi onnels ■ Pour effectuer un branchement condi onnel, il suffit d’ajouter les 2 caractères de la condi on à l’opéra on de branchement B label ou BLX R1 Mnemonic Descrip on Mnemonic Descrip on AL Always (AL normally omi ed) HI > Unsigned higher EQ (Z==1) Equal HS >= Unsigned higher or same NE (Z==0) Not equal LS <= Unsigned lower or same CS (C==1) Carry Set LO < Unsigned lower CC (C==0) Carry Clear Mnemonic Descrip on MI (N==1) Nega ve (minus) GT > Signed greater than PL (N==0) Posi ve or zero (plus) GE >= Signed greater than or equal VS (V==1) Overflow LE <= Signed less than or equal VC (V==0) No overflow LT < Signed less than [Gac/a.11] T-2/I-2 // 16.11.2018 Systèmes Embarqués 1 & 2 - Jeu d’instruc ons du µP ARM 21 / 22 Exemple de boucle // C-code #define CONSTANT 10 sum=10 i = 0 int sum = CONSTANT ; for (int i=0 ; i
Source Exif Data:File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.5 Linearized : No Page Mode : UseOutlines Page Count : 22 Creator : LaTeX with Beamer class version 3.36 Title : Systèmes Embarqués 1 & 2 - Jeu d'instructions du µP ARM Author : Daniel Gachet Producer : XeTeX 0.99992 Create Date : 2018:11:16 06:49:34+01:00EXIF Metadata provided by EXIF.tools