1.CM3每个寄存器有什么作用?
2.进入函数时,函数的局部变量,形参,执行到哪,都怎么存放在内存中的?形参太多怎么处理的?
3.还有函数调用时,上面这些东东又是如何保存的?
4.多级函数调用时,这些又是怎么保存的?
5.堆栈指针SP好像就是栈空间和栈顶的处理,是向下生长的,SP主要是用来压栈和出栈的。
然后堆呢?堆不是向上生长,主要用来C库的melloc等函数吗?堆是怎么处理的?
还有就是看了stm32的gcc的链接脚本,没有定义堆空间,只有定义栈空间,然后直接把栈顶放在第一个地址去,
这时要用melloc怎么处理的,直接用没被使用的内存?
即使是stm32的MDK中定义了堆空间和堆地址,也进行对堆地址保存,但实际用时编译器是自动去调用这个堆地址的吗?
6.CM3有一部分寄存器是自动压栈的?为什么是那一部分寄存器?为什么要留其他的手动压栈?
目前还没开始看CM3的权威指南,只是带着这些疑惑准备详细读下CM3的权威指南,有些问题可能问得很白,希望大神们可以帮忙解答一下
离线
本人第一个贴,学习完CM3内核后,准备学习CM7和ARM920T内核,如果大家对内核的学习有什么建议可以畅所欲言,比如为什么要学习内核知识,内核知识主要了解哪一部分就可以了等等。
离线
@aozima 芯片厂家提供的库?我所说的寄存器是R0-R15,不是那些GPIO寄存器之类的
ATPCS有我要的一些答案,谢谢。
好的,堆和栈是两个东西,堆栈指针SP只是栈处理。
GCC如果没有定义堆空间,使用melloc时怎么分配空间?直接使用没被使用的内存空间?为什么不想MDK那样定义个堆空间呢?
最近编辑记录 lt56 (2020-04-22 10:12:30)
离线
楼主的这些问题基本上在权威指南里面都有解答。这本书蛮好的,值得反复看。
准备详细看权威指南
离线
1. 去下载ARM的技术手册啊,实际用的时候有CMSIS的库,还有芯片厂家提供的库,不用自己抠寄存器。
2. 看ATPCS
5. 堆和栈 没有任何关系
6. 1
芯片厂家提供的库?我所说的寄存器是R0-R15,不是那些GPIO寄存器之类的
ATPCS有我要的一些答案,谢谢。
好的,堆和栈是两个东西,堆栈指针SP只是栈处理。
GCC如果没有定义堆空间,使用melloc时怎么分配空间?直接使用没被使用的内存空间?为什么不想MDK那样定义个堆空间呢?
离线
既然你在学习这些通常被其它人忽略的基础,这几本书推荐给你【画框的那些】,最后都买上,真的很有帮助!
https://whycan.cn/files/members/1592/QQ图片20200424163435.jpg
https://whycan.cn/files/members/1592/QQ图片20200424163429.jpg
大神的书好多,我也要加油了。
离线
既然你在学习这些通常被其它人忽略的基础,这几本书推荐给你【画框的那些】,最后都买上,真的很有帮助!
https://whycan.cn/files/members/1592/QQ图片20200424163435.jpg
https://whycan.cn/files/members/1592/QQ图片20200424163429.jpg
周六有在看CM3权威指南和ATPCS规则,CM3权威指南没看完,还是学习到了很多。
离线