4.4.3. SUBS pc, LR

从异常中返回,无出栈。

Note

这是 Thumb-2 中的特殊情况指令。 这一指令也可以 ADD、SUB、RSB、ADC、SBC 和 RSC 中所描述的 SUB 指令的常规格式,用于 ARM 代码中。

语法


SUBS{cond} pc, LR, #imm

其中:

imm

是一个立即数。 在 Thumb-2 中,该立即数的范围为 0-255。 在 ARM 代码中,它可为灵活的第二个操作数。 有关详细信息,请参阅灵活的第二操作数

cond

是一个可选的条件代码(请参阅条件执行)。

用法

如果堆栈中无返回状态,则您就可利用 SUBS pc, LR 从异常中返回。

SUBS pc, LR 可从链接寄存器的值中减去一个值,并将结果加载到 pc,然后再将 SPSR 复制到 CPSR。

注释

SUBS pc, LR 可将地址写入 pc。 对于从异常中返回后所使用的指令集,此地址的对齐必须正确:

  • 如果是返回到 ARM,写入 pc 的地址必须为字对齐。

  • 如果是返回到 Thumb-2,写入 pc 的地址必须为半字对齐。

  • 如果是返回到 Jazelle,则对写入 pc 的地址没有任何地址对齐限制。

如果违反这些规则,则其后果将是不可预知的。 但如果指令是用于从有效的异常输入机制返回,则对于软件没有特别注意事项。

在 Thumb-2 中,MOVS pc, lrSUBS pc, lr, #0 是同义词。

体系结构

此 32 位 Thumb 指令可用于 ARMv6T2 和 ARMv7,但 ARMv7-M 架构要除外。

此 ARM 指令可用于所有版本的 ARM 体系结构。

此指令无 16 位 Thumb 版本。

Copyright © 2002-2007 ARM Limited. All rights reserved. ARM DUI 0204HC
Non-Confidential