Instruction set examples – Samsung S3C2440A User Manual

Page 161

Advertising
background image

THUMB INSTRUCTION SET

S3C2440A RISC MICROPROCESSOR

4-40

INSTRUCTION SET EXAMPLES

The following examples show ways in which the THUMB instructions may be used to generate small and efficient
code. Each example also shows the ARM equivalent so these may be compared.

MULTIPLICATION BY A CONSTANT USING SHIFTS AND ADDS

The following instructions are the code to multiply by various constants using 1, 2 or 3 Thumb instructions
alongside the ARM equivalents. For other constants it is generally better to use the built-in MUL instruction rather
than using a sequence of 4 or more instructions.

Thumb

ARM

1. Multiplication by 2^n (1,2,4,8,...)

LSL

Ra, Rb, LSL #n

; MOV Ra, Rb, LSL #n

2. Multiplication by 2^n+1 (3,5,9,17,...)

LSL

Rt, Rb, #n

; ADD Ra, Rb, Rb, LSL #n

ADD

Ra, Rt, Rb

3. Multiplication by 2^n-1 (3,7,15,...)

LSL

Rt, Rb, #n

; RSB Ra, Rb, Rb, LSL #n

SUB

Ra, Rt, Rb

4. Multiplication by -2^n (-2, -4, -8, ...)

LSL

Ra, Rb, #n

; MOV Ra, Rb, LSL #n

MVN

Ra, Ra

; RSB Ra, Ra, #0

5. Multiplication by -2^n-1 (-3, -7, -15, ...)

LSL

Rt, Rb, #n

; SUB Ra, Rb, Rb, LSL #n

SUB

Ra, Rb, Rt

Multiplication by any C = {2^n+1, 2^n-1, -2^n or -2^n-1} * 2^n
Effectively this is any of the multiplications in 2 to 5 followed by a final shift. This allows the following additional
constants to be multiplied. 6, 10, 12, 14, 18, 20, 24, 28, 30, 34, 36, 40, 48, 56, 60, 62 .....

(2..5)

;

(2..5)

LSL

Ra, Ra, #n

; MOV Ra, Ra, LSL #n

Advertising