公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

XMC实验分享之四十九: Cortex M0的Stack对齐研究

XMC实验分享之四十九: Cortex M0的Stack对齐研究

User12775
Level 5
Level 5
First solution authored First like received

对于Cortex M系列内核而言, Stack的以word(32bit)为单位.

即使push一个byte,或者一个half word, stack也会占用一个word. 只是多用一些空间.

但是如果发生异常, 硬件会自动入栈一个frame.

cm0_stack_frame.png

Cortex M内核的手册也表示在入栈时stack要以8byte, 也就是2 word对齐.

cm0_stk_alignment_ccr.png

对于Cortex M0, STKALIGN不可写. 那么如果在发生异常时,stack并非8byte对齐, 而是4Byte对齐, 处理器会怎么应对. 本贴做了个小实验来看看.

0 点赞
1872 次查看
2 评论