搜索
bottom↓
回复: 15

请问,ICC AVR下如何利用C语言获取函数的首地址?

[复制链接]

出0入0汤圆

发表于 2013-4-21 18:12:34 | 显示全部楼层 |阅读模式
void task0(void)
{
...
}

void main(void)
{
    unsigned int TaskAddr= (unsigned int)task0;
    unsigned int TaskAddr =* (unsigned int *)task0;
    unsigned int TaskAddr = (unsigned int)(&task0);
}

我的目的是让TaskAddr保存task0函数的程序段首地址。但仿真发现,TaskAddr的值并非task0程序段的首地址。程序段的首地址应当为0x0070,但是我试了很多种方法(包括上述这三种),都无法使TashAddr的值为0x0070。
请求高手们给予帮助,非常感谢哦!

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

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2013-4-21 18:55:03 | 显示全部楼层
http://www.amobbs.com/forum.php? ... 0%E6%8C%87%E9%92%88

出0入0汤圆

 楼主| 发表于 2013-4-21 23:38:16 | 显示全部楼层
easier 发表于 2013-4-21 18:55
http://www.amobbs.com/forum.php?mod=viewthread&tid=5525680&highlight=%E5%87%BD%E6%95%B0%E6%8C%87%E9% ...

感谢你的回复,刚才已经拜读你所链接的文章。但是该文不能解决我所遇到的问题。我的目的并非利用一个指向函数的指针来调用某个函数,而是要获取某个函数的FLASH首地址,把这个地址存储到某一个整型变量单元中。

出70入0汤圆

发表于 2013-4-22 09:24:46 | 显示全部楼层
你那三种写法都是对的!或许是编译器不支持,你看看map文件。

出0入0汤圆

发表于 2013-4-22 09:26:06 | 显示全部楼层
我用的是IAR 编译器,无法调试,发帖都没人回

出0入0汤圆

 楼主| 发表于 2013-4-22 15:26:32 | 显示全部楼层
我现在上图,给予更详细的描述。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-4-23 08:53:21 | 显示全部楼层
问题太简单了,高手们不屑一顾?

出0入0汤圆

发表于 2013-4-23 09:28:40 | 显示全部楼层
用 插入汇编语句试试看。

出0入0汤圆

 楼主| 发表于 2013-4-23 10:59:33 | 显示全部楼层
wugang_1213 发表于 2013-4-23 09:28
用 插入汇编语句试试看。

我可以在在汇编层面找出函数的首地址,然后直接赋这个地址值。理论上这没有问题,但是总不能在每个设计中都这样折腾吧。可移植性可就丢失了。

出0入0汤圆

发表于 2013-9-14 18:01:48 | 显示全部楼层
qiu452555846 发表于 2013-4-23 10:59
我可以在在汇编层面找出函数的首地址,然后直接赋这个地址值。理论上这没有问题,但是总不能在每个设计中 ...

怎么解决的,我也有这个问题啊。

出0入0汤圆

发表于 2014-7-9 11:58:07 | 显示全部楼层
同问啊,别沉了!楼主用的ICC哪个版本

出0入0汤圆

发表于 2014-7-11 10:16:54 | 显示全部楼层
所谓高手也不过浪得虚名,真正的问题还是只有自己解决;也许这里压根儿就没有高手!

出0入0汤圆

发表于 2014-7-16 20:19:37 | 显示全部楼层
lizihui 发表于 2014-7-11 10:16
所谓高手也不过浪得虚名,真正的问题还是只有自己解决;也许这里压根儿就没有高手! ...

不是什么有没有高手的问题,这个问题没有什么好办法,换编译器吧,所有标准C或者其它C里面的方法,ICC里都无效:  http://www.amobbs.com/thread-4356530-1-1.html

出0入0汤圆

发表于 2014-8-1 10:57:27 | 显示全部楼层
最后还是只能用汇编搞定,移植性当然就不好了,没办法!

出0入0汤圆

发表于 2014-8-1 13:51:23 | 显示全部楼层
lizihui 发表于 2014-7-11 10:16
所谓高手也不过浪得虚名,真正的问题还是只有自己解决;也许这里压根儿就没有高手! ...

我不知道怎么说你好! 你给钱人家了吗?凭什么要别人上论坛帮你解决问题,不用干活啊。

出0入0汤圆

发表于 2014-8-1 13:56:58 | 显示全部楼层
qiu452555846 发表于 2013-4-21 23:38
感谢你的回复,刚才已经拜读你所链接的文章。但是该文不能解决我所遇到的问题。我的目的并非利用一个指向 ...

这样做有意义吗?不是为了调用函数,知道它的位置也没什么用处吧!或许换另一种方式,修改链接文件等参数,直接指定函数的地址。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-7-23 17:21

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

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