arm winter sem
TRANSCRIPT
-
8/12/2019 ARM Winter Sem
1/112
1TM
T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
ARM Advanced RISC Machines
Advanced RISC Machines
-
8/12/2019 ARM Winter Sem
2/112
-
8/12/2019 ARM Winter Sem
3/112
3TM
3
T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
ARM Partnership Model
-
8/12/2019 ARM Winter Sem
4/112
4TM
4
T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
ARM Powered Products
-
8/12/2019 ARM Winter Sem
5/112
5TM
5
T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
History of the ARM Processor
ARM1 ,ARM2 .. ARM 7
ARM9, ARM10 ,ARM11
CORTEX
-
8/12/2019 ARM Winter Sem
6/112
6TM
6
T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
The ARM CoreWhat is meant by the core?
The core is the processing unit or thecomputing engine.
It has all the computing power, and thisaspect is decided by the architecture,which represents the basic design of theprocessor.
-
8/12/2019 ARM Winter Sem
7/1127TM 7T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
ARM provides hard and soft views to licenceesRTL and synthesis flowsGDSII layout
Licencees have the right to use hard or soft views of the IPsoft views include gate level netlistshard views are DSMs
OEMs must use hard viewsto protect ARM IP
Intellectual Property
-
8/12/2019 ARM Winter Sem
8/1128TM 8T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
THE RISC ARCHITECTURE
These apply to most of the instructionsof ARM, but
not necessarily to all.
i) Instructions are of the same size, thatis, 32 bits
ii) Instructions are executed in one cycleiii) Only the load and store instructionsaccess memory
-
8/12/2019 ARM Winter Sem
9/1129TM 9T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
10/11210TM 10T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
The ARM Microcontroller
It is ARM core with peripherals added toit.
-
8/12/2019 ARM Winter Sem
11/11211TM 11T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
12/11212TM 12T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
13/11213TM 13T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
14/11214TM 14T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
15/11215TM 15T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
16/11216TM 16T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Features of ARM which make it special
Data bus width
Computational capability
Low PowerPipelining
Multiple Register instructionsDSP Enhancements
-
8/12/2019 ARM Winter Sem
17/11217TM 17T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
ARCHITECTURE
A large Uniform Register File
Load Store Architecture
Uniform and Fixed Length instructions
Good speed and low power consumption
High Code density
-
8/12/2019 ARM Winter Sem
18/11218TM 18T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
ENHANCEMENT FROM RISC
Control over ALU and shifter over everydata processing instructions to maximizetheir usage
Auto increment and auto decrementaddressing modes
Multiple load store instructions
Conditional execution of instruction tomaximize throughput
-
8/12/2019 ARM Winter Sem
19/11219TM 19T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Data items are placed in register fileInstructions use two source registersand single destination register
Barrel shifter can preprocess the databefore going to ALU
Increment/Decrement logic updateregister content to provide sequentialaccess independent of ALU
Core Data Path : Overview
-
8/12/2019 ARM Winter Sem
20/112
-
8/12/2019 ARM Winter Sem
21/11221TM 21T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
22/11222TM 22T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
General purpose registers either hold data or Address
All registers:32 bit
In user mode 16 data registers and 2 status registersare visible
Data registers r0-r15
r13,r14,r15 :special functions
r13 : Stack pointerr14 : Link registerr15 :PC
REGISTERS
-
8/12/2019 ARM Winter Sem
23/112
23TM 23T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
When the processor is executing in ARM state: All instructions are 32 bits wide All instructions must be word alignedTherefore the pc value is stored in bits [31:2] with bits [1:0] undefined (asinstruction cannot be halfword or byte aligned).
When the processor is executing in Thumb state: All instructions are 16 bits wide All instructions must be halfword alignedTherefore the pc value is stored in bits [31:1] with bit [0] undefined (asinstruction cannot be byte aligned).
When the processor is executing in Jazelle state: All instructions are 8 bits wideProcessor performs a word access to read 4 instructions at once
Program Counter (r15)
-
8/12/2019 ARM Winter Sem
24/112
24TM 24T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Data Alignment
-
8/12/2019 ARM Winter Sem
25/112
25TM 25T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Data Alignment
For word (32-bit ) the specified address
have its least significant 2 bits as 0For half word (16-bit ) the specifiedaddress have its least significant bit as 0
-
8/12/2019 ARM Winter Sem
26/112
26TM 26T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
CPSR :Current program Status register
SPSR : Saved Program Status register
STATUS REGISTERS
-
8/12/2019 ARM Winter Sem
27/112
27TM 27T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Program Status Registers
Condition code flagsN = Negative result from ALUZ = Zero result from ALUC = ALU operation Carried outV = ALU operation o Verflowed
Sticky Overflow flag - Q flag Architecture 5TE/J onlyIndicates if saturation has occurred
J bit Architecture 5TEJ onlyJ = 1: Processor in Jazelle state
Interrupt Disable bits.I = 1: Disables the IRQ.F = 1: Disables the FIQ.
T Bit Architecture xT onlyT = 0: Processor in ARM stateT = 1: Processor in Thumb state
Mode bitsSpecify the processor mode
2731
N Z C V Q
28 67
I F T mode
1623 815 5 4 024
f s x c U n d e f i n e dJ
-
8/12/2019 ARM Winter Sem
28/112
28TM 28T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Processor mode determine Access rights to CPSR
Which registers are active
Each processor mode is eitherPrivileged : Full read write access to the CPSR
Non-Privileged : Only read access to the control fieldof CPSR but read write access to conditional flags
Processor Modes
-
8/12/2019 ARM Winter Sem
29/112
29TM 29T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Processor Modes
The ARM has seven basic operating modes:
User : unprivileged mode under which most tasks run
FIQ : entered when a high priority (fast) interrupt is raised
IRQ : entered when a low priority (normal) interrupt is raised
Supervisor : entered on reset and when a Software Interruptinstruction is executed
Abort : used to handle memory access violations
Undef : used to handle undefined instructions
System : privileged mode using the same registers as user mode
-
8/12/2019 ARM Winter Sem
30/112
30TM 30T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Register File contains in all 37 registers20 registers are hidden from program at different timesThese registers are called Bank ed Regis ters
Banked Registers are available onlywhen the processor in a particular mode
Processors Mode other than system mode have a setof banked register that are subset of 16 registersMaps one-to-one onto a user mode register
Banked Registers
-
8/12/2019 ARM Winter Sem
31/112
31TM 31T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
r0
r1
r2
r3
r4
r5
r6
r7
r8
r9
r10
r11
r12
r13 (sp)
r14 (lr)
r15 (pc)
cpsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r8
r9
r10
r11
r12
r13 (sp)
r14 (lr)
spsr
FIQ IRQ SVC Undef Abort
User Mode r0
r1
r2
r3
r4
r5
r6
r7
r8
r9
r10
r11
r12
r13 (sp)
r14 (lr)
r15 (pc)
cpsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r8
r9
r10
r11
r12
r13 (sp)
r14 (lr)
spsr
Current Visible Registers
Banked out Registers
FIQ IRQ SVC Undef Abort
r0
r1
r2
r3
r4
r5
r6
r7
r15 (pc)
cpsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r8
r9
r10
r11
r12
r13 (sp)
r14 (lr)
spsr
Current Visible Registers
Banked out Registers
User IRQ SVC Undef Abort
r8
r9
r10
r11
r12
r13 (sp)
r14 (lr)
FIQ Mode IRQ Mode r0
r1
r2
r3
r4
r5
r6
r7
r8
r9
r10
r11
r12
r15 (pc)
cpsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r8
r9
r10
r11
r12
r13 (sp)
r14 (lr)
spsr
Current Visible Registers
Banked out Registers
User FIQ SVC Undef Abort
r13 (sp)
r14 (lr)
Undef Mode r0
r1
r2
r3
r4
r5
r6
r7
r8
r9
r10
r11
r12
r15 (pc)
cpsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r8
r9
r10
r11
r12
r13 (sp)
r14 (lr)
spsr
Current Visible Registers
Banked out Registers
User FIQ IRQ SVC Abort
r13 (sp)
r14 (lr)
SVC Mode r0
r1
r2
r3
r4
r5
r6
r7
r8
r9
r10
r11
r12
r15 (pc)
cpsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r8
r9
r10
r11
r12
r13 (sp)
r14 (lr)
spsr
Current Visible Registers
Banked out Registers
User FIQ IRQ Undef Abort
r13 (sp)
r14 (lr)
Abort Mode r0
r1
r2
r3
r4
r5
r6
r7
r8
r9
r10
r11
r12
r15 (pc)
cpsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r13 (sp)
r14 (lr)
spsr
r8
r9
r10
r11
r12
r13 (sp)
r14 (lr)
spsr
Current Visible Registers
Banked out Registers
User FIQ IRQ SVC Undef
r13 (sp)
r14 (lr)
The ARM Register Set
-
8/12/2019 ARM Winter Sem
32/112
32TM 32T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Register Organization Summary
User moder0-r7,
r15,and
cpsr
r8
r9
r10
r11
r12
r13 (sp)
r14 (lr)
spsr
FIQ
r8
r9
r10
r11
r12
r13 (sp)
r14 (lr)r15 (pc)
cpsr
r0r1
r2
r3
r4
r5
r6
r7
User
r13 (sp)
r14 (lr)
spsr
IRQ
User mode
r0-r12,r15,
andcpsr
r13 (sp)
r14 (lr)
spsr
Undef
User mode
r0-r12,r15,
andcpsr
r13 (sp)
r14 (lr)
spsr
SVC
User mode
r0-r12,r15,
andcpsr
r13 (sp)
r14 (lr)
spsr
Abort
User mode
r0-r12,r15,
andcpsr
Thumb stateLow registers
Thumb stateHigh registers
Note: System mode uses the User mode register set
-
8/12/2019 ARM Winter Sem
33/112
-
8/12/2019 ARM Winter Sem
34/112
34TM 34T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
SPSR present in every privileged modeexcept system mode
Save the state of CPSR when theprivileged mode is entered so that theuser state is fully restored when theprocess is resumed
SPSR
-
8/12/2019 ARM Winter Sem
35/112
35TM 35T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
INTERRUPT VECTOR TABLE
-
8/12/2019 ARM Winter Sem
36/112
36TMT H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Programming with Assemblyand C .
-
8/12/2019 ARM Winter Sem
37/112
-
8/12/2019 ARM Winter Sem
38/112
38TM 38T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Data Formats
-
8/12/2019 ARM Winter Sem
39/112
39TM 39T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Instruction Set
-
8/12/2019 ARM Winter Sem
40/112
40TM 40T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Manipulate data within registersMOVE instructions
Arithmetic Instructions
Logical instructionsComparison Instructions
Suffix S on data processing instructions
updates flags in CPSR
Data processing Instructions
-
8/12/2019 ARM Winter Sem
41/112
41TM 41T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Operands are 32-bit wide come fromregisters or specified as literals in the
instruction itselfSecond operand placed in ALU via Barrelshifter
Data processing Instructions
-
8/12/2019 ARM Winter Sem
42/112
42TM 42T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
MOV and MVN-Examples
-
8/12/2019 ARM Winter Sem
43/112
43TM 43T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Shift and Rotate
-
8/12/2019 ARM Winter Sem
44/112
44TM 44T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
45/112
45TM 45T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
46/112
46TM 46T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Combining Mov and Shift
-
8/12/2019 ARM Winter Sem
47/112
47TM 47T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
48/112
48TM 48T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Conditional Execution
-
8/12/2019 ARM Winter Sem
49/112
49TM 49T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
h
-
8/12/2019 ARM Winter Sem
50/112
50TM 50T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Arithmetic Instructions
-
8/12/2019 ARM Winter Sem
51/112
51TM 51T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
52/112
52TM 52T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
53/112
53TM 53T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
54/112
54TM 54T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
L i l I i
-
8/12/2019 ARM Winter Sem
55/112
55TM 55T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Logical Instructions
-
8/12/2019 ARM Winter Sem
56/112
56TM 56T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
57/112
57TM 57T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
C I t ti
-
8/12/2019 ARM Winter Sem
58/112
58TM 58T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Compare Instructions
M lti l I t ti
-
8/12/2019 ARM Winter Sem
59/112
59TM 59T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Multiply content of a pair of registers
Long multiply generates 64 bit result
MUL r0,r1,r2Contents of r1 and r2 multiplied and put in r0
UMULL r0,r1,r2,r3Unsigned long multiply with result stored inr0 and r1
Multiply Instructions
Multiplication
-
8/12/2019 ARM Winter Sem
60/112
60TM 60T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Multiplication
Multiplication Examples
-
8/12/2019 ARM Winter Sem
61/112
61TM 61T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Multiplication -Examples
Multiply and Accumulate
-
8/12/2019 ARM Winter Sem
62/112
62TM 62T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Result of multiplication can beaccumulated with content of anotherregister
MLA Rd ,Rm,Rs,RnRd =(Rm*Rs)+Rn
UMLAL Rdlo,Rdhi,Rm,Rs[Rdlo,Rdhi] = [Rdlo,Rdhi,]+ (Rm*Rs)
Multiply and Accumulate
-
8/12/2019 ARM Winter Sem
63/112
Directives AREA and ENTRY-
-
8/12/2019 ARM Winter Sem
64/112
64TM 64T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Examples
General Structure of an assembly
-
8/12/2019 ARM Winter Sem
65/112
65TM 65T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Language Line
Directives for Defining data
-
8/12/2019 ARM Winter Sem
66/112
66TM 66T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Directives for Defining data
The EQU directive Examples
-
8/12/2019 ARM Winter Sem
67/112
67TM 67T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
The EQU directive -Examples
Constants allowed
-
8/12/2019 ARM Winter Sem
68/112
68TM 68T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Constants allowed
The RN directive-for naming
-
8/12/2019 ARM Winter Sem
69/112
69TM 69T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
registers
Assembly Programs
-
8/12/2019 ARM Winter Sem
70/112
70TM 70T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Assembly Programs
Solution
-
8/12/2019 ARM Winter Sem
71/112
71TM 71T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Solution
Branch Instructions
-
8/12/2019 ARM Winter Sem
72/112
72TM 72T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Branch Instructions
Branch instruction usage -
-
8/12/2019 ARM Winter Sem
73/112
73TM 73T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
examples
-
8/12/2019 ARM Winter Sem
74/112
Division by repeated subtraction
-
8/12/2019 ARM Winter Sem
75/112
75TM 75T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Division by repeated subtraction
Subroutines/Procedures using the Link register
-
8/12/2019 ARM Winter Sem
76/112
76TM 76T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
There is a form of the branch instruction
which is BL standing forBranch and Link.
When a BL instruction is encountered,the PC value is changed to that of thetarget, but the old PC value is copied tothe LR register.
At the end of the procedure, the LR valuecan be copied back to the PC.
-
8/12/2019 ARM Winter Sem
77/112
77TM 77T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Solution
-
8/12/2019 ARM Winter Sem
78/112
78TM 78T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Solution
Loading constants-immediated
-
8/12/2019 ARM Winter Sem
79/112
79TM 79T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
mode
Constant specified in the instruction to becopied to register or used as an operand
MOV r1,#0x7867
ADD r1,r2,#567
It is thus apparent that we cant have a 32 -bit
constant embedded in the instruction .
Loading constants
-
8/12/2019 ARM Winter Sem
80/112
80TM 80T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Loading constants
So then w hat is th e maximu m s ize of theco ns tant tha t can b e us ed in th eim m ediate m od e?
We would like to be able to useimmediate constants as large as 32 bits.
ARM uses an ingenious technique, the
idea being the use of rotation of a smallnumber to generate a large number.
Using the Barrel Shifter:Th S d O d
-
8/12/2019 ARM Winter Sem
81/112
81TM 81T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
The Second Operand
* Immediate value
8 bit number
Can be rotated right throughan even number of positions.
Assembler will calculaterotate for you from constant.
Register, optionally withshift operation applied.
Shift value can be eitherbe:
5 bit unsigned integerSpecified in bottom byteof another register.
Operand 1
Result
ALU
Barrel
Shifter
Operand 2
-
8/12/2019 ARM Winter Sem
82/112
82TM 82T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Mechanism
-
8/12/2019 ARM Winter Sem
83/112
83TM 83T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
12 bit for operand 2
12 bit modified as 8 bit immediate constand 4 bit rotate operator
Maximum possible rotation 32 bits,hence4bit rotate operand multiplied by 2 andthen rotated
8 bit shifted by even number positions8 bit will become 32 bit during dataprocessing
Generating a 32 bit constanti t ti
-
8/12/2019 ARM Winter Sem
84/112
84TM 84T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
using rotation
-
8/12/2019 ARM Winter Sem
85/112
-
8/12/2019 ARM Winter Sem
86/112
86TM 86T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
87/112
87TM 87T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
88/112
Second Operand :Immediate Value (2)
-
8/12/2019 ARM Winter Sem
89/112
89TM 89T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Immediate Value (2)This gives us:
0 - 255 [0 - 0xff]
256,260,264,..,1020 [0x100-0x3fc, step 4, 0x40-0xffror 30]1024,1040,1056,..,4080 [0x400-0xff0, step 16, 0x40-0xff ror 28]4096,4160, 4224,..,16320 [0x1000-0x3fc0, step 64, 0x40-0xff ror 26]
These can be loaded using, for example:MOV r0, #0x40, 26 ; => MOV r0, #0x1000 (ie 4096)
To make this easier, the assembler will convert to this form for usif simply given the required constant:
MOV r0, #4096 ; => MOV r0, #0x1000 (ie 0x40 ror 26)
The bitwise complements can also be formed using MVN:MOV r0, #0xFFFFFFFF ; assembles to MVN r0, #0
If the required constant cannot be generated, an error willbe reported.
Load Store Instructions
-
8/12/2019 ARM Winter Sem
90/112
90TM 90T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Transfers data between memory andprocessor registersSingle register transfer (Signed andunsigned words, half-words and bytes)
Multiple register transfer between memoryand processor in a single instruction
SWAP
swap content of a memory location withregister
-
8/12/2019 ARM Winter Sem
91/112
More addressing modes
-
8/12/2019 ARM Winter Sem
92/112
92TM 92T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Scaled Address is calculated using base register andbarrel shifter
Pre and post indexing
Pre index with write back : LDR r0,[r1,#4]!Updates the address base register with newaddress
Post Index : LDR r0,[r1],#4Updates the address register after address isused
Multiple register transfer
-
8/12/2019 ARM Winter Sem
93/112
93TM 93T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Load store multiple instructions transfermultiple register contents between the memoryand the processor in a single instruction
More efficient for moving blocks of memoryand saving and restoring context and stack
Can increase In ter rup t Latenc y
Usually these instruction execution are notinterrupted by ARM
Multiple Byte Load Store
-
8/12/2019 ARM Winter Sem
94/112
94TM 94T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Any subset of current bank of registerscan be transferred to memory or fetchedfrom memory
LDM
STM
The base register Rn determines the
source or destination
SWAP instruction
-
8/12/2019 ARM Winter Sem
95/112
95TM 95T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Special case of load store instruction
SWP
SWB
-
8/12/2019 ARM Winter Sem
96/112
Load and Store Pre-indexedAddressing
-
8/12/2019 ARM Winter Sem
97/112
97TM 97T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Addressing
STR r0, [r1,#12]
r1
0x200Base
Register
Memory
0x5
0x200
r0
0x5
SourceRegisterfor STR
Offset
120x20c
Load and Store Post-indexedAddressing
-
8/12/2019 ARM Winter Sem
98/112
98TM 98T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Addressing
STR r0, [r1], #12
r1
0x200
OriginalBase
Register
Memory
0x50x200
r0
0x5
Source
Registerfor STR
Offset
12 0x20c
r1
0x20c
Updated
BaseRegister
MULTIPLE REGISTER LOAD ANDSTORE
-
8/12/2019 ARM Winter Sem
99/112
99TM 99T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
STORE
-
8/12/2019 ARM Winter Sem
100/112
100TM 100T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
LDM{c o n d }address -mode Rn {!},reg-l is t {^}
{cond}
IA - increment after.
IB - increment before.
DA - decrement after.
DB -decrement before
-
8/12/2019 ARM Winter Sem
101/112
101TM 101T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
LDMDA R0, {R4-R9}
STMIA R1,{R2-R4}
STMIA R1!,{R2-R4}
-
8/12/2019 ARM Winter Sem
102/112
102TM 102T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
103/112
103TM 103T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
-
8/12/2019 ARM Winter Sem
104/112
READONLY AND READ/WRITEMEMORY
-
8/12/2019 ARM Winter Sem
105/112
105TM 105T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
In readonly memory ,data is written usingdirectives like DCD,DCW
From there, it is copied to readwritememory using load and storeinstructions
Literal Pools
-
8/12/2019 ARM Winter Sem
106/112
106TM 106T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
LDR R1,= 0x33333333.
AREA PROG1,CODE,READONLY
ENTRY LDR R1,=0x12400000LDR R2,=0X00555555
ADD R3,R1,R2
LTORGSPACE 4400
STOP B STOPEND
-
8/12/2019 ARM Winter Sem
107/112
STACK PROCESSING
-
8/12/2019 ARM Winter Sem
108/112
108TM 108T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
A stack is implemented as linear datastructure which grows up (ascending) ordown (descending)
Stack pointer hold the address of thecurrent top of the stack
Stacks
-
8/12/2019 ARM Winter Sem
109/112
109TM 109T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
A stack is an area of memory which grows as new data ispushed onto the top of it, and shrinks as data ispopped off the top.
Two pointers define the current limits of the stack.
A base pointerused to point to the bottom of the stack (the first location).
A stack pointerused to point the current top of the stack .
SPBASE
PUSH
{1,2,3}
1
2
3
BASE
SP
POP
1
2Result of pop = 3
BASE
SP
Stack
-
8/12/2019 ARM Winter Sem
110/112
110TM 110T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
OperationTraditionally, a stack grows down in memory, with the last pushed value atthe lowest address. The ARM also supports ascending stacks, where the stack
structure grows up through memory.The value of the stack pointer can either:
Point to the last occupied address (Full stack)and so needs pre-decrementing (ie before the push)
Point to the next occupied address (Empty stack)and so needs post-decrementing (ie after the push)
The stack type to be used is given by the postfix to the instruction:STMFD / LDMFD : Full Descending stackSTMFA / LDMFA : Full Ascending stack.STMED / LDMED : Empty Descending stackSTMEA / LDMEA : Empty Ascending stack
Note: ARM Compiler will always use a Full descending stack.
Stack Examples
-
8/12/2019 ARM Winter Sem
111/112
111TM 111T H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
Stack ExamplesSTMFD sp!,
{r0,r1,r3-r5}
r5
r4
r3r1
r0SP
Old SP
STMED sp!,{r0,r1,r3-r5}
r5
r4
r3
r1
r0
SP
Old SP
r5
r4
r3
r1
r0
STMFA sp!,{r0,r1,r3-r5}
SP
Old SP 0x400
0x418
0x3e8
STMEA sp!,{r0,r1,r3-r5}
r5
r4
r3
r1r0
SP
Old SP
STACKS ANDSUBROUTINES/PROCEDURES
-
8/12/2019 ARM Winter Sem
112/112