Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

ARM7 Exception Vectors Exception Mode Address Reset Supervisor

Ähnliche Präsentationen


Präsentation zum Thema: "ARM7 Exception Vectors Exception Mode Address Reset Supervisor"—  Präsentation transkript:

1 Heute: - ARM Befehlssätze - ARM Instruction Pipeline - Branches & Bedingte Befehle

2 ARM7 Exception Vectors Exception Mode Address Reset Supervisor
Undefined instruction Undefined 0x Software interrupt (SWI) Supervisor 0x Prefetch Abort (instruction fetch memory abort) Abort 0x C Data Abort (data access memory abort) Abort 0x IRQ (interrupt) IRQ 0x FIQ (fast interrupt) FIQ 0x C

3 ARM7 Register & Betriebszustände
System & User R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 (PC) CPSR FIQ R7_fiq R8_fiq R9_fiq R10_fiq R11_fiq R12_fiq R13_fiq R14_fiq SPSR_fiq Supervisor R13_svc R14_svc SPSR_svc Abort R13_abt R14_abt SPSR_abt IRQ R13_irq R14_irq SPSR_irq Undefined R13_und R14_und SPSR_und

4 Cortex-M3 Betriebszustände
Privileged User When running an Exception Handle Mode When Running Main Program Thread Mode Operation Modes Privilege Levels User Thread System Control space nicht zugreifbar (Speicherregion), MSR Move status Register blockiert verursacht fault exception Wechseln der Betriebszustände: MSR CONTROL, R0

5 Übung 1 Von welcher Adresse wird die erste Zeile des vom Anwender geschriebenen Assemblercodes eingelesen (kein Betriebssystem vorausgesetzt) ? An welcher Adresse befindet sich die erste Assembleranweisung der Fast Interrupt Routine ? An welcher Adresse befindet sich die erste Assembleranweisung des Undefined Instruktion Handlers ?

6 Übung 1 - Lösung Von welcher Adresse wird die erste Zeile des vom Anwender geschriebenen Assemblercodes eingelesen (kein Betriebssystem vorausgesetzt) ? 0x An welcher Adresse befindet sich die erste Assembleranweisung der Fast Interrupt Routine ? 0x An welcher Adresse befindet sich die erste Assembleranweisung des Undefined Instruktion Handlers ? 0x

7 ARM Befehlssätze

8 Die Befehlssätze Befehlssätze ARM7 Cortex-M Cortex-R-A Serie
32-bit „ARM“ Befehlssatz 16-bit „Thumb“ Befehlssatz 16/32-bit „Thumb-2“ Befehlssatz (Thumb-2 Superset von Thumb Befehlssatz) ARM7 Unterstützt ARM und Thumb Befehlssatz Notwendiges hin- und herschalten zwischen ARM und Thumb Befehlssatz Cortex-M Nur Thumb-2 Befehlssatz Auch alle Thumb Befehle werden unterstützt Cortex M nicht Binärkompatibel mit ARM7 Cortex-R-A Serie ARM Befehlssatz & Thumb2 Befehlssatz Literatur: ARMv7-M Architecture Application Level Reference Manual (Link auf WWW)

9 Thumb vs. ARM Befehlssatz
R0 = R0 + R1 ARM Anweisung: ADD R0, R0,R1 Thumb Anweisung: ADD R0, R1 R1 ist Operand2 Ziel- register Operand1 Operand2 R0 ist gleichzeitig Ziel und Operand1

10 Thumb vs. ARM Befehlssatz
16-bit Thumb 32-bit ARM Vorteil Braucht ~30% weniger Speicherplatz Läuft ~40% schneller Nachteil Eingeschränkte Funktionalität Speicherplatz Es braucht spezielle Funktion zwischen ARM und Thumb umzuschalten

11 Thumb: Umschalten ARM und Thumb Mode
Reset ARM BLX THUMB BX ARM Spezielle Branch Anweisungen schalten zwischen ARM und Thumb Mode hin und her. Zusätzlich wird bei jeder Exception in den ARM Mode geschaltet

12 Thumb: Umschalten ARM und Thumb Mode
Exception ARM End of Exception THUMB

13 Neuer: Thumb-2 Befehlssatz
Enthält 32-bit Befehle und 16-bit Befehle Kein Umschalten zwischen 32-bit und 16-bit Befehlen Superset des Thumb Befehlssatzes Erlaubt komplexere Operationen als Thumb Hardware Divide und Multiply Enthält auch alle Thumb Befehle

14 Vorteile von Thumb-2 gegenüber Thumb
Verfügt auch über einige 32-bit Befehle Zusätzliche Befehle gegenüber Thumb Compare Zero Branch Coprozessor Instructions IT- if then Bit reversal Laut ARM kann ARM Code kann ohne grosse Leistungsverluste mit Thumb-2 Code ersetzt werden und spart zusätzlich Speicherplatz

15 Thumb-2: Unified Assembler Language
Gleich lautende Befehle für 16-bit und 32-bit Vorher: Thumb: AND R0, R1 ARM: AND R0, R0, R1 Jetzt nur noch: AND R0, R0, R1

16 Beispiel: 32-bit Befehl 31 28 27 26 25 24 21 20 19 16 15 12 11 Cond 00 I OpCode S Rn Rd Operand2 Destination Register 0000 = EQ 0001 = NE 0010 = >= 1110 = Immer 0100 = ADD 0010 = SUB 1101 = MOV … Operand1 Register Beispiel: ADDEQ R2,R4,R5 ;If Z flag set R2:= R4 + R5

17 Source/Destination Register
Beispiel: 16-bit Befehl 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 1 Op Rs Rd Source/Destination Register Thumb hat keine Conditional Instruction Thumb-2 hat IT (If Then Instruction und CZB (compare zero branch) Source Register 2 0101 = ADC 0110 = SBC 0000 = AND …

18 Thumb: Eingeschränkter Zugriff auf R8 – R12

19 ARM Instruction Pipeline

20 ARM7 Instruction Pipeline
1 2 3 4 5 6 Instruction Fetch Decode Execute

21 LDR R0, [R1,#4] Was ist der Wert von R0? 0x5000 0x22222222 R0 0x5004

22 Welche Adresse steht danach im PC?
0x4000 LDR PC, [PC,#4] 0x4000 LDR PC,[PC,#4] PC 0x4004 0x 0x4008 0x 0x 0x400C PC 0x c

23 Instruction Pipeline Fetch Decode Execute Q D Q D Execute Q D Decode

24 Instruction Pipeline PC Fetch Decode Execute Q D Q D Q D 0x4000 0x4004
LDR PC, [PC,#4] Decode Execute 0x400c Q D Q D Execute Q D Decode

25 Übung 2 An welcher Adresse befindet sich das Vektor Adress Register des Interrupt Controllers (es handelt sich hier nicht um einen NXP LPC) ?

26 Übung 2 - Lösung 0x18 + 2 x 4 Byte – 0x1000 = 0xFFFF F020
An welcher Adresse befindet sich das Vektor Adress Register des Interrupt Controllers (es handelt sich hier nicht um einen NXP LPC) ? 0x x 4 Byte – 0x1000 = 0xFFFF F020

27 Branches (Context Switch)

28 Branch Befehle Reset Main Subroutine B LR Branch zu Link Register Main
B = branch to target +/- 1 MB BL = Branch Link +/- 16MB BX = Branch optionaly exchange instruction set BLX = Branch link optionaly exchange instruction set Main Subroutine B LR Branch zu Link Register Main

29 Umschalten zwischen ARM u. Thumb
2 Möglichkeiten: BLX,BX Instruction Exception

30 Einfacher Branch B = Branch zu Adresse 0x8000
LDR R2, # 10 Bei einem Branch wird die gesamte Pipeline gespült (geflusht)

31 Branch Link BL = Branch Link - Lädt Adresse in PC und speichert
die Return Adresse 0x in Link Register (R14) LDR R2, # 10

32 Branch Link BL = Branch Link - Lädt Adresse in PC und speichert
die Return Adresse 0x in Link Register (R14) LDR R2, # 10

33 Data Processing Instructions

34 Multiply Accumulate Unit (MAC)
MAC Unit

35 Load and Store Architektur

36 Multiply Accumulate Unit (MAC)
Mnemonic Meaning Resolution MUL Multiply bit result MULA Multiply accumulate 32 bit result UMUL Unsigned multiply 64 bit result UMLAL Unsigned multiply accumulate 64 bit result SMULL Signed multiply bit result SMLAL Signed multiply accumulate 64 bit result

37 Data Prozessing OP Codes
Kürzel Bedeutung AND Logical bitwise AND EOR Logical bitwise exclusive OR SUB Subtract RSB Reverse Subtract ADD Add ADC Add with carry SBC Subtract with carry RSC Reverse Subtract with carry TST Test TEQ Test Equivalence CMP Compare CMN Compare negated ORR Logical bitwise OR MOV Move BIC Bit clear MVN Move negated

38 Grundstruktur einer Data Processing Instruction
ADDEQS R1,R2,R3,LSL #2 Entspricht: If (Z ==1) R1 = R2+(R3 x 4)

39 Data Transfer Instructions

40 Kopieren von mehreren Registern mit einem Befehl
Abspeichern von mehreren Registern auf den Stack STMFD R13!, {[registers], R14} Zurückholen der Register vom Stack: LDMFD R13!, {[registers], PC}

41 Load/Store to/from Special-Register

42 Bedingte Befehle Können zum Teil Branches ersetzen

43 Bedingte Befehle Bei traditionellen Prozessoren, ist dies nur bei der Branch Anweisung möglich Vorteil der bedingten Anweisungen : Pipeline wird dabei nicht gelöscht und muss somit nach dem Branch nicht wieder Neu aufgefüllt werden Oberen 4 bits jeder Anweisung sind mit dem CPSR logisch verknüpft. Wenn keine Übereinstimmung wird Befehl wie NOP behandelt

44 Beispiel einer Instruktion mit Condition
31 28 27 26 25 24 21 20 19 16 15 12 11 Cond 00 I OpCode S Rn Rd Operand2 Destination Register 0000 = EQ 0001 = NE 0010 = >= 1110 = Immer 0100 = ADD 0010 = SUB 1101 = MOV … Operand1 Register Beispiel: ADDEQ R2,R4,R5 ;If Z flag set R2:= R4 + R5

45 ARM7 Current Processor Status Register (CPSR)
Condition Code Flags: N = Negative Z = Zero C = Carry Over V = Overflow (Ergebnis grösser als Platz im Register) F = 1 FIQ disable I = 1 IRQ disable T = 1 Thumb mode Betriebszustand: FIQ IRQ Supervisor User Undefined

46 Condition Codes Assembler Kürzel Negativ N Zero Z Carry Over C
Over flow V Bedeutung EQ x 1 Equal NE Not Equal CS Carry bit set CC Carry bit cloear MI Minus (Negativ) PL Plus (Positiv) VS Overflow bit set VC Overflow bit clear HI Higher Than (unsigned) LS Lower Same (signed) GE 0 1 X x Greater or equal LT 1 0 Less than GT Z = 0 UND (N = V) Greater than LE Z = 1 OR (N != V) Less than or equal AL Allways

47 Beispiel Conditional Move
CMP R1, R2 ; Compare R1 and R2 update Flags MOVEQ R3, R0 ; Schiebe Inhalt von R0 in R3 wenn R1 und R2 gleich MOVEQ … Werden bei nicht eintreten der Bedingung durch NOP ersetzt Überspringen von Befehlen hat den Vorteil, dass die Pipeline nicht gespült werden muss. Der Kompiler setzt Conditional Moves nur bei kurzen Branches ein, da sonst zu viele NOPs ausgeführt werden müssten. Beispiel: If (x<100) { X++ }

48 Nur Cortex-M: If-Then Befehl
Der IF-THEN Befehl erlaubt bis zu 4 Folgebefehle auszuführen Falls die Bedingung nicht wahr ist, werden die nicht asugeführte Befehle durch ein NOP ersetzt 2. Befehl C-Code Assembly Code IF (R1 < R2) then CMP R1, R2 ITTEE LT R2 = R2 - R1 SUB R2, R1 1. Befehl R2 = R2/2 LSR R2, #1 2. Befehl (T) else R1 = R1 - R2 SUB R1, R2 3. Befehl (E) R1 = R1/2 LSR R1, #1 4. Befehl (E) 3. Befehl 4. Befehl ITTEE Bei nicht eintreten der Bedingung durch NOP ersetzt

49 S Suffix MOVS R0, R1 S-Suffix Aktualisiert Flags nach Ausfführung des Befehls z.B. wird Z-Flag gesetzt wenn das Zielregister R0 nach Ausführen des Befehls 0 ist MOVEQS R0, R2 S Sufix und Bedingte Ausführung können Kombiniert wrden

50 Übung3: Conditional MOVE
Beispiel1 : MOVS R0, R1 MOVEQS R0, R2 MOVEQ R0, R3 Vor Ausführung der drei Befehle sind die 3 Register wie folgt geladen: R0 = 0 R1 = 0 R2 = 0 R3 = 4 Was ist der Wert von R0 nach den drei MOV Befehlen?

51 Übung3 - Lösung: Conditional MOVE
Beispiel1 : MOVS R0, R1 MOVEQS R0, R2 MOVEQ R0, R3 -- R1 wird in R0 geschoben und Z flag wird 1 da R0 = 0 -- Da Z Flag = 1 wird R2 wird in R0 geschoben und Z flag wird 1 da R2 = 0 -- Da Z Flag = 1 wird R3 in R0 geschoben Vor Ausführung der drei Befehle sind die 3 Register wie folgt geladen: R0 = 0 R1 = 0 R2 = 0 R3 = 4 Was ist der Wert von R0 nach den drei MOV Befehlen? R0 ist 4

52 Übung4: Conditional Move

53 Übung4 - Lösung: Conditional Move

54 Übung5: Conditional Move

55 Übung5 - Lösung: Conditional Move


Herunterladen ppt "ARM7 Exception Vectors Exception Mode Address Reset Supervisor"

Ähnliche Präsentationen


Google-Anzeigen