Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Atmel ARM7TDMI datasheet.1999.pdf
Скачиваний:
30
Добавлен:
23.08.2013
Размер:
1.45 Mб
Скачать

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 shows 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

 

6. 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

110 Instruction Set

Соседние файлы в предмете Электротехника