设置栈顶地址函数理解
//设置栈顶地址
//addr:栈顶地址
__asm void MSR_MSP(uint32_t addr)
{
MSR MSP, r0 //set Main Stack value
BX r14
}
问题1分解回答
1、__asm 是什么?
答:__asm 是表示汇编的关键字,告诉编译器接下来的代码是汇编代码。
2、addr为什么在函数内部没有用,但实际的地址确成功设置了?
答:实际上 addr 的值会默认存储到 r0 中;
3、MSR MSP, r0 这条汇编语句是什么作用?
答:MSR 的作用是将通用寄存器的值传给状态寄存器,也就是将 r0 的值传给 MSP,而MSP是主堆栈指针,也就是说,将 r0 存的值传给主堆栈指针,实现设置栈顶地址。
4、BX r14 这条汇编语句是什么作用?
答:R14称为子程序链接寄存器,将子程序或是函数调用执行完成后 ,通过BX r14返回到函数调用处。

浙公网安备 33010602011771号