Overview of the ARM architecture
Simon Aittamaa
- Dept. of Computer Science, Electrical and Space Engineering
Luleå University of Technology
October 08, 2012
1 / 36
Overview of the ARM architecture Simon Aittamaa Dept. of Computer - - PowerPoint PPT Presentation
Overview of the ARM architecture Simon Aittamaa Dept. of Computer Science, Electrical and Space Engineering Lule University of Technology October 08, 2012 1 / 36 1. Introduction 1.1. Architecture 1.2. Registers 1.3. Instruction Set 1.4.
1 / 36
2 / 36
3 / 36
4 / 36
5 / 36
6 / 36
7 / 36
8 / 36
9 / 36
10 / 36
11 / 36
12 / 36
13 / 36
14 / 36
15 / 36
16 / 36
17 / 36
18 / 36
19 / 36
20 / 36
21 / 36
22 / 36
23 / 36
24 / 36
25 / 36
26 / 36
27 / 36
i f ( r0 == r1 ) r2 = r3 [ 0 ] ; else r2 = r3 [ 1 ] ;
cmp r0 , r1 ldreq r2 , [ r3 ] ldrne r2 , [ r3 , #4] 28 / 36
i f ( r2 < TBL_SIZE ) { r1 [ r2 ∗ 4 ] ( ) ; } return ;
cmp r2 , TBL_SIZE l d r l t r0 , [ r1 , r2 , l s l #2] movlt l r , pc movlt pc , r0 ldmfd r13 ! , { r4−r7 , pc }^ 29 / 36
/ / Save user regs . subu $29 , $29 , 116 sw $1 , 0($29 ) . . . sw $31 , 108($29 ) / / Save return address mfc0 $26 , $14 nop sw $26 , 112($29 ) / / Save sp la $1 , t t _ c u r r e n t lw $1 , 0($1 ) nop sw $29 , 0($1 ) nop
/ / Load sp la $29 , t t _ c u r r e n t lw $29 , 0($29 ) nop lw $29 , 0($29 ) nop / / Restore user regs lw $1 , 0($29 ) . . . lw $31 , 108($29 ) / / Restore return addr lw $26 , 112($29 ) addu $29 , $29 , 116 / / Return from i n t e r r u p t j r $26 rfe 30 / 36
/ / Get user mode sp stmfd sp ! , { r0 } stmdb sp , { sp }^ nop ldmdb sp , { r0 } / / Store return address sub l r , l r , #4 stmfd r0 ! , { l r } / / Start using l r mov l r , r0 ldmfd sp ! , { r0 } / / Save user mode regs stmfd l r , { r0−r14 }^ nop sub l r , l r , #60 / / Save SPSR. mrs r0 , SPSR stmfd l r ! , { r0 } / / Save stack pointer l d r r0 , = t t _ c u r r e n t l d r r0 , [ r0 ] s t r l r , [ r0 ]
/ / Load sp l d r r0 , = t t _ c u r r e n t l d r r0 , [ r0 ] l d r l r , [ r0 ] / / Restore SPSR ldmfd l r ! , { r0 } msr r0 , SPSR / / Restore user mode regs ldmfd l r , { r0 , r14 } nop add l r , l r , #60 / / Return from i n t e r r u p t ldmfd l r , { pc }^ 31 / 36
32 / 36
33 / 36
34 / 36
35 / 36
36 / 36