请问,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。
请求高手们给予帮助,非常感谢哦! http://www.amobbs.com/forum.php?mod=viewthread&tid=5525680&highlight=%E5%87%BD%E6%95%B0%E6%8C%87%E9%92%88 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首地址,把这个地址存储到某一个整型变量单元中。 你那三种写法都是对的!或许是编译器不支持,你看看map文件。 {:mad:}我用的是IAR 编译器,无法调试,发帖都没人回 我现在上图,给予更详细的描述。 问题太简单了,高手们不屑一顾? 用 插入汇编语句试试看。{:lol:} wugang_1213 发表于 2013-4-23 09:28 static/image/common/back.gif
用 插入汇编语句试试看。
我可以在在汇编层面找出函数的首地址,然后直接赋这个地址值。理论上这没有问题,但是总不能在每个设计中都这样折腾吧。可移植性可就丢失了。 qiu452555846 发表于 2013-4-23 10:59 static/image/common/back.gif
我可以在在汇编层面找出函数的首地址,然后直接赋这个地址值。理论上这没有问题,但是总不能在每个设计中 ...
怎么解决的,我也有这个问题啊。 同问啊,别沉了!楼主用的ICC哪个版本 所谓高手也不过浪得虚名,真正的问题还是只有自己解决;也许这里压根儿就没有高手! lizihui 发表于 2014-7-11 10:16
所谓高手也不过浪得虚名,真正的问题还是只有自己解决;也许这里压根儿就没有高手! ...
不是什么有没有高手的问题,这个问题没有什么好办法,换编译器吧,所有标准C或者其它C里面的方法,ICC里都无效:http://www.amobbs.com/thread-4356530-1-1.html 最后还是只能用汇编搞定,移植性当然就不好了,没办法! lizihui 发表于 2014-7-11 10:16
所谓高手也不过浪得虚名,真正的问题还是只有自己解决;也许这里压根儿就没有高手! ...
我不知道怎么说你好! 你给钱人家了吗?凭什么要别人上论坛帮你解决问题,不用干活啊。
qiu452555846 发表于 2013-4-21 23:38
感谢你的回复,刚才已经拜读你所链接的文章。但是该文不能解决我所遇到的问题。我的目的并非利用一个指向 ...
这样做有意义吗?不是为了调用函数,知道它的位置也没什么用处吧!或许换另一种方式,修改链接文件等参数,直接指定函数的地址。
页:
[1]