搜索
bottom↓
回复: 5

关于*OSTaskStkInit()中寄存器保存问题

[复制链接]

出0入0汤圆

发表于 2008-8-30 11:37:00 | 显示全部楼层 |阅读模式
在OSTaskStkInit()中,有一段堆栈初始化代码:

...
    *psoft_stk--  = (INT8U)0x00;            /* R0    = 0x00                                             */
    *psoft_stk--  = (INT8U)0x01;            /* R1    = 0x01                                             */
    *psoft_stk--  = (INT8U)0x02;            /* R2    = 0x02                                             */
    *psoft_stk--  = (INT8U)0x03;            /* R3    = 0x03                                             */
    *psoft_stk--  = (INT8U)0x04;            /* R4    = 0x04                                             */
    *psoft_stk--  = (INT8U)0x05;            /* R5    = 0x05                                             */
    *psoft_stk--  = (INT8U)0x06;            /* R6    = 0x06                                             */
    *psoft_stk--  = (INT8U)0x07;            /* R7    = 0x07                                             */
...
这段代码的目的是要把R0、R1...等寄存器的内容保存在堆栈里面,然后在OS_CPU_A.S文件中,通过汇编POP操作取出,那为什么不用在(INT8U)0x00 前面加 *号呢  *(INT8U)0x00,这样不才是保存寄存器?请问哪位可以解释一下

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2008-8-30 11:39:14 | 显示全部楼层
这里不是保存寄存器内容, 是模仿中断给推荐初始化

出0入0汤圆

 楼主| 发表于 2008-8-30 11:39:30 | 显示全部楼层
以上例子是UCOS网站上的M128在IAR下的程序,同时也看了下其它网友在M16 winavr下的例子,也是这样写法。因此只能怀疑是自己哪里理解错了,

出0入0汤圆

 楼主| 发表于 2008-8-30 11:48:08 | 显示全部楼层
先谢了,如果只是初始化,它把寄存器原地址保存在堆栈里面,有何意义?因为在OS_CPU_A.S中,好像只有PUSH、POP,这些操作都是直接把堆栈数据保存或者取出啊

出0入0汤圆

发表于 2008-8-30 13:05:13 | 显示全部楼层
初始化是让堆栈指针指向正确的位置。
任务经过初始化后,堆栈中已经有寄存器的位置了,任务第一次运行时,这些值会从堆弹出。
里面的具体值无所谓,因为任务还没有运行过,任务的寄存器的值也没意义。
你可以直接 *psoft_stk = *psoft_stk - 8。写固定的值可能是为了调试方便。

我记得ucos可以传一个参数给任务,只有那个参数的值有意义。

出0入0汤圆

 楼主| 发表于 2008-8-30 14:51:42 | 显示全部楼层
原来是这样,那明白了,谢谢。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 17:42

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表