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

ADS下C語(yǔ)言中局部變量的存儲(chǔ)位置分配

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

這一段代碼,唯一的用途,就是分配變量。  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。
先看看剛進(jìn)入main()函數(shù)的時(shí)候,R13=0x08000000。  

  
單步執(zhí)行一步后,R13=0x07FFFFC。減少了4字節(jié),PC入棧引起。  

  
進(jìn)入fun1()后,R13=0x07FFFFC。沒(méi)有變化,說(shuō)明這幾個(gè)變量沒(méi)有入棧,實(shí)際上他們分別分配在R0-R3。  

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

  
進(jìn)入fun3()后,R13=0x07FFFF0。比0x07FFFFC少12字節(jié),除了數(shù)組入棧外,還有PC。  

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

  
進(jìn)入fun5()后,R13=0x07FFFE8。比f(wàn)un4()少8字節(jié),說(shuō)明分支中的數(shù)組也入棧了。  

  
進(jìn)入fun10()后,R13=0x07FFFFC。4個(gè)函數(shù)形參也是分配在R0-R3。  

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

  
進(jìn)入fun12()后,R13=0x07FFFF0。跟func4()一樣,結(jié)構(gòu)體變量也是入棧的。  

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

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • Dev Tool Bits——使用MPLAB® Discover瀏覽資源
  • Dev Tool Bits——使用條件軟件斷點(diǎn)宏來(lái)節(jié)省時(shí)間和空間
  • Dev Tool Bits——使用DVRT協(xié)議查看項(xiàng)目中的數(shù)據(jù)
  • Dev Tool Bits——使用MPLAB® Data Visualizer進(jìn)行功率監(jiān)視
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 9984四虎永久免费网站 | 日本高清免费一本视频在线观看 | 99久久国产| 天天在线精品视频在线观看 | 91青青草视频 | 黄色45分钟 | 一二三四日本手机高清视频 | 国产中日韩一区二区三区 | 欧洲97色综合成人网 | 我不卡在线 | 天天操夜夜操狠狠操 | 亚洲国产成人久久99精品 | 四虎在线最新地址公告 | 日韩一区在线播放 | 视频麻豆| 免费大片国产在线观看下载 | 久久99综合 | 在线成人免费观看国产精品 | 日本无遮挡吸乳视频看看 | 91精品国产免费青青碰在线观看 | 青青伊人网 | 日本中文字幕一区 | 精品在线一区 | 日日操操| 久久午夜羞羞影院免费观看 | 黄大色大片免费久久 | 重口调教女虐女长篇小说 | 日韩在线免费播放 | 欧美三及| 国产一区二区三区在线观看免费 | 99尹人香蕉国产免费天天在线 | 青草热在线精品视频99app | 99热在线精品播放 | 欧美黄视频 | 大伊香蕉 | 落跑甜心电视剧全集免费观看在线 | 免费观看又黄又刺激的视频网站 | 俄罗斯丰满护士乱 | avove在线播放 | 日韩大片免费观看视频播放 | 亚洲视频重口味 |