ucos-ii移植到44b0上时,OS_STK占几个字节?

来源:百度知道 编辑:UC知道 时间:2024/06/04 06:46:28
这是ucos-ii文件OS_CPU.H中关于OS_STK的定义:

typedef unsigned int INT16U; /* Unsigned 16 bit quantity */
typedef unsigned int OS_STK; /* Each stack entry is 16-bit wide */

通过这些定义可以认为OS_STK数据类型占2个字节,即16-bit,但是调试程序时,发现OS_STK占了4个字节。
这是哪出了问题?请高手指点一二,谢谢!

对arm7来说
unsigned int 应该是32位的,
所以INT16U应为
typedef unsigned short INT16U,
而OS_STK为了能保存代码,其大小最好为指令的长度,即32位,所以OS_STK的设置是正确的。
这段代码可能是根据其他芯片的设置修改过来的,所以注释部分不正确。

没了解过,估摸着理解为:
1. 代码历史悠久,还处于DOS的16位时代,当时int就是2个字节的
2. 特定的(古老)编译环境。比如32位机下的TC,int就是2个字节的
3. 板子跟电脑的调试环境不一致,板子(可能)是16位型的,电脑用的是现代编译器进行调试
4. 最不可能的一点:注释有误,及INT16U书写有误