初级会员
- 积分
- 172
- 金钱
- 172
- 注册时间
- 2018-4-20
- 在线时间
- 24 小时
|
发表于 2018-10-27 09:24:21
|
显示全部楼层
怎么会?什么叫没条件??
堆栈的长度,是用户定义的,例如,长度定义为OSTaskStkSize,我理解为一个数组,只是和一般的数组从下标0到N(0---1---2--- ---N)不一样,因为还涉及堆栈的宽度,例如stm32中的堆栈宽度为4字节,没说错此时就可以理解为一个多维数组:
0 1 2 3 OSTaskStk[ OSTaskStkSize -X ] low memory
4 5 6 7
8 9 A B
C D E F
. . . .
. . . .
. . . . OSTaskStk[ OSTaskStkSize -1] high memory
其中涉及到“堆栈的生长方向”即数据入栈是从高地址-->低地址 ,还是 低地址-->高地址,也是需要定义;
还涉及到堆栈的用处,就知道 OSTaskStk[ OSTaskStkSize - X]中的X是什么了,堆栈就是用来存放 CPU 的寄存器的数据的,而且是对应位置那样存放CPU寄存器的数据。
再就是堆栈指针,堆栈指针就涉及出栈和入栈的时候应该怎么移动.........
以上,都是要看书,仔细看才会记着。
|
|