10650|7

67

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

taskSpawn( )的详解 [复制链接]

尤其是1st of 10 req'd task args to pass to func ,就是最后输入参数的10个有什么作用,刚看了英语解释,不是很懂,谢谢

最新回复

有点懂了,哈要多学习  详情 回复 发表于 2009-10-28 16:10
点赞 关注

回复
举报

74

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这10个参数是为了最多限度的兼容不同的任务原型:允许任务最多可传入10个参数.也就是只要你的任务函数的参数是10个及以下,都可以用taskSpawn.

当然,大多数时候不需要这么多,所有就把后面的不需要的置0即可.在调用taskSpawn的时候,事实上也是把它们入栈的,不过任务不使用就行了,除了"浪费"点stack,没有影响.

这个建议看一下编译器手册或是那个vxworks_architecture_supplement手册,了解一下函数是如何入栈的,这样就能更清除的知道为什么在调用时多传入参数对被调用函数没有影响.

一般是这样的,调用规则中,c函数是从右往左进行参数入栈,然后再是返回地址之类(如果有的话),如在向下生长的堆栈中,可能是这样的:

参数9
参数8
...
参数0
返回地址/帧栈之类
局部变量之类

这样取参数的时候,没用到的参数显然不会有影响.

当然,更深一层,还涉及到是由调用者还是被调用者去参数进行出栈(减sp)的问题,这样的方式只适合于从右向左进行参数入栈,而且是由调用者出栈(如果是由被调用者出栈,那么返回时就会有参数没有完全出栈,造成堆栈的真正的浪费!).而c调用是满足这些规则的,像windows中的stdcall和delphi的调用方式好像就不一样了.
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
还是有点不明白,“允许任务最多可传入10个参数.也就是只要你的任务函数的参数是10个及以下”
这里的参数是什么意思??是像普通函数那样FUNC(int,int)里面的输入参数一样还是什么??它的参数是如何作用和变化的??
谢谢
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

4
 
恩,我刚才又看了一下,差不多明白了,谢谢你哈
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

5
 
学习学习,呵呵
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

6
 
学习一下~~
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

7
 
怎么看不到啊?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
有点懂了,哈要多学习
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表