ECE 5465 Advanced Microcomputers Group 11: Brian Knight Benjamin Moore Alex Williams Outline Review Basic Data Processing Instructions Arithmetic, Bit-wise, Movement, Comparison Instructions ADC, SBC, and RSB Operand2 Multiply Instructions Immediate Values Binary.
Download
Report
Transcript ECE 5465 Advanced Microcomputers Group 11: Brian Knight Benjamin Moore Alex Williams Outline Review Basic Data Processing Instructions Arithmetic, Bit-wise, Movement, Comparison Instructions ADC, SBC, and RSB Operand2 Multiply Instructions Immediate Values Binary.
ECE 5465
Advanced Microcomputers
Group 11:
Brian Knight
Benjamin Moore
Alex Williams
1
Outline
Review Basic Data Processing Instructions
Arithmetic, Bit-wise, Movement, Comparison
Instructions
ADC, SBC, and RSB
Operand2
Multiply Instructions
Immediate Values
Binary Encoding
2
Review Data Processing Instructions
Arm data processing instructions
Perform arithmetic operations
Perform logical operations
Operate on data values in Registers
The only instructions that modify data values
Typically require two operands and produce
single result
3
Arithmetic & Bit-wise Operations
op{cond}{S} Rd, Rn, Operand2, where
op: ADD, SUB, RSB, ADC, SBC, RSC, AND, ORR,
EOR, or BIC
cond: optional condition code
S: optional suffix that causes condition codes to be
updated
Rd: ARM register that stores the result
Rn: ARM register holding first Operand
Operand2: flexible second operand
4
Arithmetic & Bit-wise Operations
5
Purpose of ADC and SBC
ADC and SBC can be used to perform 64-bit
operations
64-bit Add Example:
1st number : r0,r1
2nd number: r2,r3
6
Operand2
Operand2 is a flexible operand with two
possible forms
#immed_8r: Expression evaluating to numeric constant
Rm{,shift}, where
Rm: ARM Register holding data for second operand
shift: Optional shift to be applied to Rm
(LSL,LSR,ASL,ASR,ROR, or RRX)
Why do we need both SUB and RSB?
RSB
r4, r4, #1280 ; r4:= 1280 – r4
7
Outline
Review Basic Data Processing Instructions
Arithmetic, Bit-wise, Movement, Comparison
Instructions
ADC, SBC, and RSB
Operand2
Multiply Instructions
Immediate Values
Binary Encoding
8
Register Movement Operations
op{cond}{S} Rd, Operand2
9
Comparison Operations
op{cond} Rn, Operand2
10
Multiplies
Immediate second operands not supported
Result register must be different than first
source
Only the least significant 32 bits are saved
11
Multiply Long
Opcode [23:21] Mnemonic
0MUL
1MLA
100UMULL
101UMLAL
110 SMULL
111SMLAL
Meaning
Multiply(32-bit result)
Multiply-accumulate(32-bit result)
Unsigned multiply long
Unsigned multiply-accumulate long
Signed multiply long
Signed multiply-accumulate long
Effect
Rd:=(Rm*Rs)[31:0]
Rd:=(Rm*Rs+Rn)[31:0]
RdHi:RdLo:=Rm*Rs
RdHi:RdLo+=Rm*Rs
RdHi:RdLo:=Rm*Rs
RdHi:RdLo+=Rm*Rs
‘RdHi:RdLo’ is the 64-bit result from long
multiplication
Assignment is denoted with ‘:=‘,
Accumulation is denoted by ‘+=‘
12
Outline
Review Basic Data Processing Instructions
Arithmetic, Bit-wise, Movement, Comparison
Instructions
ADC, SBC, and RSB
Operand2
Multiply Instructions
Immediate Values
Binary Encoding
13
Immediate Values
Most immediate values that can be used in ARM data
processing instructions are of the form:
2𝑛
Immediate = (0 → 255) × 2 , where 0≤ n ≤ 12
Binary encoding :
The assembler will report if a user attempts to use an
immediate value which cannot be encoded.
14
Binary Encoding
For Data Processing Instructions
Condition Codes
15
Binary Encoding
For Data Processing Instructions
Opcode:
16
Binary Encoding
For Multiply Instructions
17
BACK-UP SLIDES
18
How long multiply works
19
Supported Immediate Values
00000000 00000000 00000000 XXXXXXXX
00000000 00000000 000000XX XXXXXX00
00000000 00000000 0000XXXX XXXX0000
….
XXXXXXXX 00000000 00000000 00000000
XXXXXX00 00000000 00000000 000000XX
XXXX0000 00000000 00000000 0000XXXX
XX000000 00000000 00000000 00XXXXXX
20
Supported Immediate Values
What if you want an immediate number of the form
following form?
00000000 00000000 XX000000 XXXXXXXX
Note that this is just …
00000000 00000000 XX000000 00000000 +
00000000 00000000 00000000 XXXXXXXX
21