臂和拇指汇编器说明::
Push将多个寄存器推到拇指状态的堆栈(手臂 状态使用STM)
如上所述,推动指示在拇指状态下使用,而STM则在ARM状态中使用。Q1:为什么使用推送指令在手臂模式下使用而不是STM?Q2:堆栈指针的值由谁决定?我还注意到,在程序开始运行之前,已经设置了堆栈指针的值。
程序:
int main(void)
{ // program stops here
OS_ERR err = OS_ERR_NONE;
/*rest of code are omitted*/
}
disAssembly:
main():
805dce18: E92D4008 push {r3, lr}
17 OS_ERR err = OS_ERR_NONE;
805dce1c: E3A0C000 mov r12, #0
805dce20: E58DC000 str r12, [sp]
登记:
Name Value Description
CPSR 0x6000019F current program status registers
T 0 If set ARM is in Thumb mode
SP 0x88000F30 stack pointer
对于Q1)请注意,您给出的链接是针对ARMV6 Architecture。 如果您的情况在该案件中保持不变,请小心。
,也是ARM信息中心
给出答案: