请教一个IAR堆栈的问题。
//测试程序如下:void x3(char nn)
{
char temp;
char i;
for(i=0;i<100;i++)
temp=0;
}
void x2(char nn)
{
char temp;
char i;
for(i=0;i<100;i++) temp=i;
x3(3);
}
void x1(char nn)
{
char temp;
char i;
for(i=0;i<100;i++) temp=i;
x2(2);
}
int main( void )
{
x1(0);
return 0;
}
//////////////////////////////////////////////
//IAR生成的MAP文件的调用关系如下:
->Sub-tree of type: Function tree
CSTACK
| Stack used (prev) :00000000
04 x3
| Stack used (prev) :00000000
| + function block:000000CC
03 x2
| Stack used (prev) :000000CC
| + function block:00000132
02 x1
| Stack used (prev) :000001FE
| + function block:000000CC
01main
| Stack used (prev) :000002CA
| + function block:00000000
<-Sub-tree of type: Function tree
| Stack used :000002CA
显示主程序用了:0x2CA个字节的堆栈?
如果CALL用的是2字节,那参数是一字节的,加上临时变量101字节,算起来是:104+104+104+3=0x13B
请高人解释下。。。
页:
[1]