byjove 发表于 2011-6-25 09:30:45

请教一个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]
查看完整版本: 请教一个IAR堆栈的问题。