在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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) > 設計應用 > 高效的C編程之: 變量類型

            高效的C編程之: 變量類型

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

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

            14.8

            C支持基本的數(shù)據(jù)類型:char、short、int、longlong、float和double。表14.2說明了對C語言所使用的數(shù)據(jù)類型的映射。

            表14.2 C數(shù)據(jù)類型映射

            C數(shù)據(jù)類型

            表示的意義

            char

            無符號8位字節(jié)數(shù)據(jù)

            short

            有符號16位半字數(shù)據(jù)

            int

            有符號32位字數(shù)據(jù)

            long

            有符號32位字數(shù)據(jù)

            longlong

            有符號64位雙字數(shù)據(jù)

            指令集中,無論是數(shù)據(jù)處理指令還是數(shù)據(jù)加載/存儲指令,處理的數(shù)據(jù)類型不同,指令的執(zhí)行效率是不一樣的。本章將詳細討論,如何在程序中為變量分配合理的數(shù)據(jù)類型,來提高代碼的執(zhí)行效率。

            14.8.1局部變量

            屬于RISC的體系結(jié)構(gòu),所有大多數(shù)的數(shù)據(jù)處理都是在32位的寄存器中進行的。基于這個原因,局部變量應盡可能使用32位數(shù)據(jù)類型int或long。

            注意

            一些情況下不得不使用char或short類型,例如要使用char或short類型的數(shù)據(jù)溢出指令時歸零特性時,如模運算255+1=0,就要使用char類型。

            為了說明局部的影響,先來看一個簡單的例子。

            charcharinc(chara)

            {

            returna+1;

            }

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

            charinc

            ADDa1,a1,#1

            ANDa1,a1,#ff

            MOVpc,lr

            再把上面的程序段中變量a聲明位int型,代碼如下。

            intwordinc(inta)

            {

            returna+1;

            }

            比較一下輸出結(jié)果。

            wordinc

            ADDa1,a1,#1

            MOVpc,lr

            分析上面的兩段代碼不難發(fā)現(xiàn),當把變量聲明為char型時,編譯器增加了額外的ADD指令來保證其范圍在0~255之間。

            14.8.2有符號數(shù)和無符號數(shù)

            上一節(jié)討論了對于局部變量和函數(shù)參數(shù),使用int型比使用char或short型要好。本節(jié)將對程序中的有符號整數(shù)(signedint)和無符號整數(shù)(unsignedint)的執(zhí)行效率進行分析比較。

            首先來看上一節(jié)的例子,如果將變量指定為有符號的半字類型(編譯器默認short型為有符號類型),程序的源代碼如下。

            shortshortinc(shorta)

            {

            returna+1;

            }

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

            shortinc

            ADDa1,a1,#1

            MOVa1,a1,LSL#16

            MOVa1,a1,ASR#16

            MOVpc,lr

            分析發(fā)現(xiàn),該結(jié)果比使用int型的變量多增加了兩條指令(LSL和ASR)。編譯器先將變量左移16位,然后右移16位,以實現(xiàn)一個16位符號擴展。右移是符號位擴展移位,它復制了符號位來填充高16位。

            通常情況下,如果程序中只有加法、減法和乘法,那么有符號和無符號數(shù)的執(zhí)行效率相差不大。但是,如果有了除法,情況就不一樣了。詳細內(nèi)容可參加除法運算優(yōu)化一節(jié)。

            c語言相關(guān)文章:c語言教程



            上一頁 1 2 3 下一頁

            關(guān)鍵詞: C編程 變量類型 armcc ARM 編譯器

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉