Формат 14: Поместить/извлечь регистры из стека
Рис. 52. Формат 14
Действие
Команды этой группы позволяют одновременно регистры 0…7 и опционально регистр LR разместить (push) в вершине стека, и регистры 0…7 и опционально регистр PC извлечь (pop) из вершины стека. Синтаксис этих команд в ассемблере приведен в таблице 25.
Табл. 25. Команды размещения / извлечения регистров из стека
L |
R |
THUMB ассемблер |
ARM эквивалент |
Действия |
0 |
0 |
PUSH { Rlist } |
STMDB R13!, { Rlist } |
Разместить в вершине стека регистры из списка Rlist, соответственно обновив указатель на вершину стека. |
0 |
1 |
PUSH { Rlist, LR } |
STMDB R13!, { Rlist, R14 } |
Разместить в вершине стека регистры из списка Rlist (если не пустой) и регистр ссылки LR, соответственно обновив указатель на вершину стека. |
1 |
0 |
POP { Rlist } |
LDMIA R13!, { Rlist } |
Извлечь из вершины стека регистры из списка Rlist, соответственно обновив указатель на вершину стека. |
1 |
1 |
POP { Rlist, PC } |
LDMIA R13!, { Rlist, R15 } |
Извлечь из вершины стека регистры из списка Rlist и затем регистр PC, соответственно обновив указатель на вершину стека. |
Число машинных тактов при выполнении команд
Все команды этого формата эквивалентны командам в режиме ARM согласно таблице 25. Число машинных тактов выполнения этой команды в режиме THUMB идентично с числом тактов выполнения ее в режиме ARM. Примечание: для более подробной информации см. соответствующую главу.
Примеры
PUSH {R0-R4,LR} ; Поместить в стек регистры R0,R1,R2,R3,R4 и R14 (LR)
; обновив соответственно указатель на вершину стека R13 (SP).
; Эта команда удобна для вызова подпрограмм,
; давая возможность сохранить необходимые рабочие регистры
; и адрес возврата из самой подпрограммы.
POP {R2,R6,PC} ; Извлечь из стека регистры R2,R6 и R15 (PC)
; обновив соответственно указатель на вершину стека R13 (SP).
; Эта команда удобна для возврата из подпрограмм,
; давая возможность восстановить необходимые рабочие регистры
; и из подпрограммы в то место, откуда она была вызвана.
|
|