在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 高效的C編程之:Switch語句

            高效的C編程之:Switch語句

            作者: 時(shí)間:2013-09-30 來源:網(wǎng)絡(luò) 收藏

            14.6

            編譯器通常將C語言中的編譯一個(gè)(TableLookup)以便跳轉(zhuǎn)到合適的入口處。

            本文引用地址:http://www.biyoush.com/article/257019.htm

            下面的例子顯示了編譯器如何處理程序中的Switch語言的。

            C源程序如下。

            char*ConditionStr1(intcondition)

            {

            switch(condition)

            {

            case0:returnEQ;

            case1:returnNE;

            case2:returnCS;

            case3:returnCC;

            case4:returnMI;

            case5:returnPL;

            case6:returnVS;

            case7:returnVC;

            case8:returnHI;

            case9:returnLS;

            case10:returnGE;

            case11:returnLT;

            case12:returnGT;

            case13:returnLE;

            case14:return;

            default:return0;

            }

            }

            編譯后的結(jié)果如下。

            ConditionStr1:

            0000807CE1A01000MOVr1,r0

            >>>SWITCH#3switch(condition)

            00008080E351000ECMPr1,#0xe

            00008084908FF101ADDLSpc,pc,r1,LSL#2

            00008088EA00003BB0x817cSWITCH#20>

            0000808CEA00000DB0x80c8SWITCH#5>

            00008090EA00000FB0x80d4SWITCH#6>

            00008094EA000011B0x80e0SWITCH#7>

            00008098EA000013B0x80ecSWITCH#8>

            0000809CEA000015B0x80f8SWITCH#9>

            000080A0EA000017B0x8104SWITCH#10>

            000080A4EA000019B0x8110SWITCH#11>

            000080A8EA00001BB0x811cSWITCH#12>

            000080ACEA00001DB0x8128SWITCH#13>

            000080B0EA00001FB0x8134SWITCH#14>

            000080B4EA000021B0x8140SWITCH#15>

            000080B8EA000023B0x814cSWITCH#16>

            000080BCEA000025B0x8158SWITCH#17>

            000080C0EA000027B0x8164SWITCH#18>

            000080C4EA000029B0x8170SWITCH#19>

            對(duì)于代碼,的入口為4字節(jié);Thumb代碼的入口為1或2個(gè)字節(jié)(當(dāng)Case情況小于32時(shí),使用入口為1字節(jié)的查找表)。所以當(dāng)使用時(shí),應(yīng)盡量較少Case分支。

            另外,為了提高系統(tǒng)性能,也可以手工編寫代碼,形成程序跳轉(zhuǎn)來避免使用Switch語句。

            下面的例子顯示對(duì)上面Switch分支語句的改寫。

            char*ConditionStr2(intcondition)

            {

            if((unsigned)condition>=15)return0;

            return

            EQ