Arm Instructions
Transcript of Arm Instructions
![Page 1: Arm Instructions](https://reader030.fdocuments.net/reader030/viewer/2022021122/577cdbdb1a28ab9e78a943da/html5/thumbnails/1.jpg)
7/28/2019 Arm Instructions
http://slidepdf.com/reader/full/arm-instructions 1/13
ARM INSTRUCTIONS
![Page 2: Arm Instructions](https://reader030.fdocuments.net/reader030/viewer/2022021122/577cdbdb1a28ab9e78a943da/html5/thumbnails/2.jpg)
7/28/2019 Arm Instructions
http://slidepdf.com/reader/full/arm-instructions 2/13
• Being a RISC architecture it has only Load
Store type instructions.
• Data is manipulated within registers
![Page 3: Arm Instructions](https://reader030.fdocuments.net/reader030/viewer/2022021122/577cdbdb1a28ab9e78a943da/html5/thumbnails/3.jpg)
7/28/2019 Arm Instructions
http://slidepdf.com/reader/full/arm-instructions 3/13
• Data Processing Instructions
– MOVE instructions
– Arithmetic Instructions
• Multiply Instructions
• Logical Instructions
• Comparison Instructions
• Suffix S on data processing instructions
updates flag in CPSR.
![Page 4: Arm Instructions](https://reader030.fdocuments.net/reader030/viewer/2022021122/577cdbdb1a28ab9e78a943da/html5/thumbnails/4.jpg)
7/28/2019 Arm Instructions
http://slidepdf.com/reader/full/arm-instructions 4/13
• Instructions are 32 –
Bit wide; comes fromregisters or specified as literals in instruction
itself
•Second operand sent to ALU via Barrel Shifter
• 32 – Bit wide result placed in register ; long
multiply instruction produces a 64 – Bit result
![Page 5: Arm Instructions](https://reader030.fdocuments.net/reader030/viewer/2022021122/577cdbdb1a28ab9e78a943da/html5/thumbnails/5.jpg)
7/28/2019 Arm Instructions
http://slidepdf.com/reader/full/arm-instructions 5/13
• Move Instructions
• MOV Rd,N
– Rd : Destination Register
– N : Can be immediate value or source register
– Example: mov r7,r5
• MVN Rd,N
• Move into Rd the not value of source
![Page 6: Arm Instructions](https://reader030.fdocuments.net/reader030/viewer/2022021122/577cdbdb1a28ab9e78a943da/html5/thumbnails/6.jpg)
7/28/2019 Arm Instructions
http://slidepdf.com/reader/full/arm-instructions 6/13
• Using Barrel Shifter
– Enables 32 bit shifting in source registers left or
right by specific positions within the cycle time of
instruction
• Basic Barrel Shifter operations
• Shift Left• Shift Right
• Rotate Right
• Facilitates fast multiply, divide and hence increases code
density
• Example:
– Mov r7,r5,LSL#2
![Page 7: Arm Instructions](https://reader030.fdocuments.net/reader030/viewer/2022021122/577cdbdb1a28ab9e78a943da/html5/thumbnails/7.jpg)
7/28/2019 Arm Instructions
http://slidepdf.com/reader/full/arm-instructions 7/13
•
Arithmetic Instructions – Implements 32 bit addition and subtraction
• 3 – operands form
• Example
– Sub r0,r1,r2
– Subs r1,r1,#2
• With Barrel Shifter
•add r0,r1,r1LSL#1
![Page 8: Arm Instructions](https://reader030.fdocuments.net/reader030/viewer/2022021122/577cdbdb1a28ab9e78a943da/html5/thumbnails/8.jpg)
7/28/2019 Arm Instructions
http://slidepdf.com/reader/full/arm-instructions 8/13
• Multiply instruction
– Multiplies a pair of registers
– Long multiply generates a 64 bit result
• Examples:
• Mul r0,r1,r2
• Umul r0,r1,r2,r3 – Unsigned multiply with result stored in r0 and r1
• Multiply and Accumulate• MLA rd,rm,rs,rn
• Rd=(rm*rs) + rn
• UMLAL rdlo,rdhi,rm,rs• [Rdhi,rdlo] = [rdhi,rdlo] + (rm*rs)
![Page 9: Arm Instructions](https://reader030.fdocuments.net/reader030/viewer/2022021122/577cdbdb1a28ab9e78a943da/html5/thumbnails/9.jpg)
7/28/2019 Arm Instructions
http://slidepdf.com/reader/full/arm-instructions 9/13
• Logical Instructions – Bitwise logical operations on two source registers
• AND, OR, XOR, bit clear
•
ExampleBIC r0,r1,r2
• Compare Instructions
– Comp r0,r9
– Teq r0,r9
![Page 10: Arm Instructions](https://reader030.fdocuments.net/reader030/viewer/2022021122/577cdbdb1a28ab9e78a943da/html5/thumbnails/10.jpg)
7/28/2019 Arm Instructions
http://slidepdf.com/reader/full/arm-instructions 10/13
• Load Store Instructions
– There are 3 types of load store instructions
• Single register transfer
• Multiple register transfer
• Swap
–
LDR – LDRH
– LDRB
– STR
– STRH
– STRB
![Page 11: Arm Instructions](https://reader030.fdocuments.net/reader030/viewer/2022021122/577cdbdb1a28ab9e78a943da/html5/thumbnails/11.jpg)
7/28/2019 Arm Instructions
http://slidepdf.com/reader/full/arm-instructions 11/13
•
Supports different addressing modes – Register indirect: LDR r0,[r1]
– Immediate: LDR r0,[r1,#4]
–
Register operation: LDR r0,[r1,-r2]• More Addressing Modes
• Scaled Addressing Modes
• Pre & Post Indexing
– Pre Index with write back: LDR r0,[r1,#4]
• Post Index: LDR r0,[r1],#4
![Page 12: Arm Instructions](https://reader030.fdocuments.net/reader030/viewer/2022021122/577cdbdb1a28ab9e78a943da/html5/thumbnails/12.jpg)
7/28/2019 Arm Instructions
http://slidepdf.com/reader/full/arm-instructions 12/13
• Multiple Register Transfer
– Load – Store multiple instructions transfers
multiple register contents between memory and
processor in a single instruction
– More Efficient
– These instructions can increase interrupt latency
![Page 13: Arm Instructions](https://reader030.fdocuments.net/reader030/viewer/2022021122/577cdbdb1a28ab9e78a943da/html5/thumbnails/13.jpg)
7/28/2019 Arm Instructions
http://slidepdf.com/reader/full/arm-instructions 13/13
• LDM
•
SDM – Mnemonics used for multiple data transfer