qiu452555846 发表于 2013-4-21 18:12:34

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

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。
请求高手们给予帮助,非常感谢哦!

easier 发表于 2013-4-21 18:55:03

http://www.amobbs.com/forum.php?mod=viewthread&tid=5525680&highlight=%E5%87%BD%E6%95%B0%E6%8C%87%E9%92%88

qiu452555846 发表于 2013-4-21 23:38:16

easier 发表于 2013-4-21 18:55 static/image/common/back.gif
http://www.amobbs.com/forum.php?mod=viewthread&tid=5525680&highlight=%E5%87%BD%E6%95%B0%E6%8C%87%E9% ...

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

绿茶山人 发表于 2013-4-22 09:24:46

你那三种写法都是对的!或许是编译器不支持,你看看map文件。

huangshuyi 发表于 2013-4-22 09:26:06

{:mad:}我用的是IAR 编译器,无法调试,发帖都没人回

qiu452555846 发表于 2013-4-22 15:26:32

我现在上图,给予更详细的描述。

qiu452555846 发表于 2013-4-23 08:53:21

问题太简单了,高手们不屑一顾?

wugang_1213 发表于 2013-4-23 09:28:40

用 插入汇编语句试试看。{:lol:}

qiu452555846 发表于 2013-4-23 10:59:33

wugang_1213 发表于 2013-4-23 09:28 static/image/common/back.gif
用 插入汇编语句试试看。

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

zend 发表于 2013-9-14 18:01:48

qiu452555846 发表于 2013-4-23 10:59 static/image/common/back.gif
我可以在在汇编层面找出函数的首地址,然后直接赋这个地址值。理论上这没有问题,但是总不能在每个设计中 ...

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

lizihui 发表于 2014-7-9 11:58:07

同问啊,别沉了!楼主用的ICC哪个版本

lizihui 发表于 2014-7-11 10:16:54

所谓高手也不过浪得虚名,真正的问题还是只有自己解决;也许这里压根儿就没有高手!

liang-s 发表于 2014-7-16 20:19:37

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

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

lizihui 发表于 2014-8-1 10:57:27

最后还是只能用汇编搞定,移植性当然就不好了,没办法!

not_at_all 发表于 2014-8-1 13:51:23

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

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

not_at_all 发表于 2014-8-1 13:56:58

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

这样做有意义吗?不是为了调用函数,知道它的位置也没什么用处吧!或许换另一种方式,修改链接文件等参数,直接指定函数的地址。
页: [1]
查看完整版本: 请问,ICC AVR下如何利用C语言获取函数的首地址?