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