Формат 13: Сложение SP с непосредстенным значением со знаком и сохранением результата в SP
Рис. 51. Формат 13
Действие
Команды этой группы выполняют сложение содержимого регистра SP (указатель вершины стека) и 9-битной константы со знаком, результат помещается обратно в регистр SP. Синтаксис этих команд в ассемблере приведен в таблице 24.
Табл. 24. Команды сложения SP и константы
S |
THUMB ассемблер |
ARM эквивалент |
Действия |
0 |
ADD SP, #Imm |
ADD R13, R13, #Imm |
Сложить SP и #Imm, результат поместить в SP |
1 |
ADD SP, #-Imm |
SUB R13, R13, #Imm |
Сложить SP и #Imm, результат поместить в SP |
Примечание: : Смещение, заданное в #Imm, может находится в диапазоне +508, у которого биты 1 и 0 должны быть равны нулю (выравнивание по границе целого слова). При этом ассемблер при формировании команды фактически выполнить деление на 4 (#Imm >> 2), чтобы получить верное значение поля 7-битного смещения, в котором старший бит - знак.
Команды этого формата не оказывают влияния на флаги регистра CPSR.
Число машинных тактов при выполнении команд
Все команды этого формата эквивалентны командам в режиме ARM согласно таблице 24. Число машинных тактов выполнения этой команды в режиме THUMB идентично с числом тактов выполнения ее в режиме ARM. Примечание: для более подробной информации см. соответствующую главу.
Примеры
ADD SP, #268 ; SP (R13) = SP + 268, флаги CPSR не изменяются
; Примечание: в код команды будет помещено число 67 при S=0.
ADD SP, #-104 ; SP (R13) = SP - 104, флаги CPSR не изменяются
; Примечание: в код команды будет помещено число 26 при S=1.
|
|