2016-09-30 115 views

回答

0

您还没有指定哪个ARM指令的版本设置你使用,但 你几乎肯定会发现它在保存的程序状态寄存器(SPSR)。

具体来说,你想知道T-bit的价值。

T位

T位反映了操作状态:

  • 当T比特被设置,则处理器在Thumb状态
  • 执行当T位是清楚,处理器在ARM状态下执行。

运行状态由CPTBIT外部信号反映。

就像旁边一样,如果您尝试从中断返回,您通常不需要担心中断是否来自拇指代码或ARM代码。有特殊的中断返回指令,应该为您处理。

在最后的ARM平台,我的工作,你可以简单地做movs pc, lr从中断返回,同时恢复先前的执行状态。

+0

使用lpc2378的进程 – tracy00

+1

它唯一的例外是_does_,它来自哪个状态,是一个未定义的指令,其中LR偏移量是来自ARM的+4而来自Thumb的+2。对于其他任何情况,LR偏移量完全取决于异常类型(特别是对于SVC,确实为0)。 – Notlikethat

相关问题