带LR的跳转
LOAD /读内存
STORE/写内存
栈是一种具有特殊的访问方式的存储空间,他的特殊性就在于最后一个进入这个空间的数据,是最先出去的
空栈(Empty)
栈指针指向的地址是空的,在栈中存储数据时,可以直接存储,存储完成之后需要将栈指针再次指向空的位置。
满栈(Full)
栈指针指向的地址有数据,在栈中存储数据时,需要先将栈指针,指向一个空的位置,然后在存储数据。
增栈(Ascending)
栈指针向高地址方向移动
减栈(Descending)
栈指针向低地址方向移动
空增栈,空减栈
满增栈,满减栈
ARM默认采用的是满减栈
来一个数据,栈指针先移动,再放数据。指针的移动是地址的降低
栈的基本操作
栈有两种基本的操作:入栈和出栈
1.入栈:将一个新的元素放到栈顶
2.出栈:从栈顶取出一个元素
栈顶元素总是最后一个入栈的,需要出的时候,又会是第一个被取出的
操作规则:LIFO (Last in first out)后进先出
1.主程序给R1,R2,R3,R4分别存入:0x 0x 0x 0x
然后跳入函数JUMP
2.函数JUMP,函数内修改R1为0x R3为0x00000000
3.修改结束后返回主函数继续跑
4.主函数再使R1和R3相加后存入R1
5.跳出主程序进入死循环
子程序返回主程序时,不可以使用MOV指令和B BL BX BXL
-栈的应用-》叶子函数的调用过程
叶子函数是指一个函数内部没有调用其他函数的函数,也就是说,它是程序调用树的末端节点,不依赖于其他函数。
-栈的应用-》非叶子函数的调用过程
非叶子函数是指一个函数内部调用了其他函数的函数,也就是说,它不是程序调用树的末端节点,可以被其他函数调用。
到此这篇如何读取单片机程序源码(如何读取单片机程序源码数据)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sjkxydsj/73522.html