<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 高效的C編程之:Switch語(yǔ)句

高效的C編程之:Switch語(yǔ)句

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

14.6

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

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

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

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;

}

}

編譯后的結果如下。

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>

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

另外,為了提高系統性能,也可以手工編寫(xiě)代碼,形成程序跳轉來(lái)避免使用Switch語(yǔ)句。

下面的例子顯示對上面Switch分支語(yǔ)句的改寫(xiě)。

char*ConditionStr2(intcondition)

{

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

return

EQ国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放

<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>