国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

ADS下C語言中局部變量的存儲位置分配

發布時間:2010-8-7 09:50    發布者:lavida
按照一般教科書上的說法,C語言中的局部變量應該是分配在"棧"中的。而實際情況,有些出入錄,肯能更容易理解。  

這一段代碼,唯一的用途,就是分配變量。  int func1(void)
{
    volatile int father;
    volatile int mother;
    volatile int boy;
    volatile int girl;
    father = 30;
    mother = boy = girl = father;
    return father;
}
int func2(void)
{
    volatile int father;
    volatile int mother;
    volatile int boy;
    volatile int girl;
    volatile int unnecessary;
    father = 30;
    mother = boy = girl = father;
    unnecessary = 0;
    return father;
}
int func3(void)
{
    volatile int stone[2];
    stone[0] = 30;
    return stone[0];
}
int func4(void)
{
    volatile int stone[2];
    stone[0] = 30;
    if(stone[0] == 30)
    {
        volatile int father;
        father = 91;
    }   
    else
    {
        volatile int mother;
        mother = 90;
    }
    return stone[0];
}
int func5(void)
{
    volatile int stone[2];
    stone[0] = 30;
    if(stone[0] == 30)
    {
        volatile int boy[2];
        boy[0] = 91;
    }   
    else
    {
        volatile int girl[2];
        girl[0] = 90;
    }
    return stone[0];
}
int func10(int a, int b, int c, int d)
{
    return a + b + c + d;
}
int func11(int a, int b, int c, int d)
{
    volatile int father = a;
    volatile int mother = b;
    volatile int boy = c;
    volatile int girl = d;
    return father + mother + boy + girl;
}
typedef struct Home
{
    int father;
    int mother;
} THome;
int func12()
{
    THome home;
    home.father= 12;
    home.mother = 12;
    return home.father + home.mother;
}
typedef int uint32;
int func13()
{
    uint32 home = 2;
    home *= 2;
    return home;
}
int main(void)
{
    func1();
    func2();
    func3();
    func4();
    func5();
   
    func10(1,2,3,4);
    func11(1,2,3,4);
    func12();
    func13();
}

  
通常,ADS編譯的代碼使用R13作為堆棧指針,也就是SP。
先看看剛進入main()函數的時候,R13=0x08000000。  

  
單步執行一步后,R13=0x07FFFFC。減少了4字節,PC入棧引起。  

  
進入fun1()后,R13=0x07FFFFC。沒有變化,說明這幾個變量沒有入棧,實際上他們分別分配在R0-R3。  

  
進入fun2()后,R13=0x07FFFF8。比0x07FFFFC少4字節,前4個仍然分配在R0-R3,第5個變量入棧。  

  
進入fun3()后,R13=0x07FFFF0。比0x07FFFFC少12字節,除了數組入棧外,還有PC。  

  
進入fun4()后,R13=0x07FFFF0。跟func4()一樣,數組和PC入棧,分支中的變量放在R0中。  

  
進入fun5()后,R13=0x07FFFE8。比fun4()少8字節,說明分支中的數組也入棧了。  

  
進入fun10()后,R13=0x07FFFFC。4個函數形參也是分配在R0-R3。  

  
進入fun11()后,R13=0x07FFFEC。比0x07FFFFC少16字節,4個形參仍然分配在R0-R3,另外4個變量入棧。  

  
進入fun12()后,R13=0x07FFFF0。跟func4()一樣,結構體變量也是入棧的。  

  
進入fun13()后,R13=0x07FFFFC。沒有變化,char、int這些變量即使經過typedef,其處理方法仍然不變。  
本文地址:http://www.qingdxww.cn/thread-19985-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • Cortex-M4外設 —— TC&TCC結合事件系統&DMA優化任務培訓教程
  • 我們是Microchip
  • 利用模擬開發工具生態系統進行安全電路設計
  • 更佳設計的解決方案——Microchip模擬開發生態系統
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产日韩视频一区 | 亚洲视频在线播放 | 妈妈的朋友伦理片在线观看 | 免费看片aⅴ免费大片 | 成人深爱网 | 久久窝窝国产精品午夜看15 | 看免费人成va视频全 | 中文国产成人精品久久一区 | 成人高清网站 | 91中文视频 | 精品久久久久久久久久香蕉 | 三级在线国产 | 91香蕉视频免费在线观看 | 国产伦精一区二区三区视频 | 一级毛片aaaaaa视频免费看 | 欧美不卡一区二区三区免 | 欧美性视频在线播放 | 久久精品这里只有精品 | 热99精品只有里视频最新 | 久久婷五月综合 | 国产不卡免费视频 | 国产成人综合91精品 | 91精品久久久久久久久久小网站 | 国产福利三区 | 免费一级做a爰片久久毛片潮 | 狠狠干综合网 | jizz日本美女 | 成人免费午间影院在线观看 | 妖精视频一区二区三区 | 国产区精品福利在线社区 | 亚洲欧美成人综合久久久 | 天堂网国产 | 免费观看毛片的网站 | 国产麻豆精品高清在线播放 | 亚洲欧洲自拍偷拍 | 日本精品在线视频 | 国产精品一区二区综合 | 亚洲精品国产v片在线观看 亚洲精品高清在线 | 99久女女精品视频在线观看 | 岛国大片免费观看 | 中文字幕日本在线 |