SRS作用:
存储返回状态。
语法
SRSaddr_mode #mode{!}
其中:
addr_mode 是以下指令之一:
IA 在每次传送后增加地址;
IB 在每次传送之前增加地址;
DA 在每次传送后减小地址;
DB 在每次传送之前减小地址;
FD 满的降序栈;
ED 空的降序栈;
FA 满的升序栈;
EA 空的升序栈。
mode 指定模式的编号,该模式所编组的 r13 被用作基址寄存器
注ARM处理器模式
ARM 处理器支持多达七个处理器模式,具体要取决于体系结构的版本。这些模
式是:
0b10000 User ;
0b10001 FIQ — 快速中断请求;
0b10010 IRQ — 中断请求;
0b10011 Supervisor ;
0b10111 Abort ;
0b11011 Undefined ;
0b11111 System (ARM 体系结构 v4 及以上版本)。
除User 模式外的所有模式称为特权 模式。
要求任务保护的应用程序通常在 [User] 模式下执行。有些嵌入式应用程序可能
完全运行在 [Supervisor] 或 [System] 模式下。
进入除 [User] 模式外的所有模式是为了处理异常或访问特许的资源
! 是一个可选的后缀。如果存在 !,则最终地址被写回到 r13 为基址
寄存器的编组寄存器中。
操作
SRS 在由 mode 指定的模式的 r13 所含地址及后续地址处,存储当前模式的 r14 和
SPSR。也可选择是否更新由 mode 指定的模式下的 r13。这与用于访问栈的 STM 指
令的常规用法兼容,请参阅第 4-20 页的LDM 和 STM。
可以从一个自动选择的状态中,使用 SRS 指令来存储一个不同栈上的异常处理程
序的返回状态。
体系结构
SRS 指令在 v6 及更高版本 ARM 体系结构中有效。
示例
R13_usr EQU 16
SRSFD #R13_usr
不正确的示例
SRSFD #32! ; there is no mode 32
SRSEQFD #R13_usr ; SRS is always unconditional