Re: [问题] Keil C sizeof function

楼主: ksmrt0123 (ksmrt)   2013-03-30 13:22:09
这个问题只要知道function的结束位址就能解决,
所以要想办法在function结尾做出一个label,
一个方法如下:
int foo(void)
{
char gg = 1;
//
// function body
//
if(gg) return(1);
#pragma asm
foo_last:
PUBLIC foo_last
#pragma endasm
}
这样就可在function结尾处安置了一个label.
而gg的目的是要骗compiler最佳化不要把 return() 后的东西化简掉.
有了foo_last后, 就可用下列方法算出function size:
宣告:
extern int foo(void);
extern void * foo_last(void);
计算:
len = (unsigned char code *)foo_last - (unsigned char code *)foo;
作者: MaxHaru (懂得放手..才是王道)   2013-03-31 00:23:00
谢谢
作者: maxpower (先)   2013-04-01 14:04:00
利害,学习了

Links booklink

Contact Us: admin [ a t ] ucptt.com