中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 高效的C編程之:寄存器分配

        高效的C編程之:寄存器分配

        作者: 時間:2013-09-30 來源:網絡 收藏

        本文引用地址:http://www.antipu.com.cn/article/257018.htm

        比較下面兩個完成同樣功能的函數,分析全局的操作對程序性能的影響。

        intf(void);

        intg(void);

        interrs;

        voidtest1(void)

        {

        errs+=f();

        errs+=g();

        }

        voidtest2(void)

        {

        intlocalerrs=errs;

        localerrs+=f();

        localerrs+=g();

        errs=localerrs;

        }

        編譯結果如下。

        test1

        STMDBsp!,{v1,lr}

        BLf

        LDRv1,[pc,#L00002c-.-8]

        LDRa2,[v1,#0]

        ADDa1,a1,a2

        STRa1,[v1,#0]

        BLg

        LDRa2,[v1,#0]

        ADDa1,a1,a2

        STRa1,[v1,#0]

        LDMIAsp!,{v1,pc}

        L00002c

        DCD|x$dataseg|

        test2

        STMDBsp!,{v1,v2,lr}

        LDRv1,[pc,#L00002c-.-8]

        LDRv2,[v1,#0]

        BLf

        ADDv2,a1,v2

        BLg

        ADDa1,a1,v2

        STRa1,[v1,#0]

        LDMIAsp!,{v1,v2,pc}

        從編譯的結果中可以看出,test1中每次對全局errs的訪問都會使用耗時的Load/Store指令;而test2只使用了一次內存訪問指令。這對提高程序的整體性能有很大幫助。

        3.指針鏈

        指針鏈(PointerChains)常被用來訪問結構體內部。下面的例子顯示了一個典型的指針鏈的使用。

        typedefstruct{intx,y,z;}Point3;

        typedefstruct{Point3*pos,*direction;}Object;

        voidInitPos1(Object*p)

        {

        p->pos->x=0;

        p->pos->y=0;

        p->pos->z=0;

        }

        上面的代碼每次使用“p->pos”時都會對變量重新取值。為了提高代碼效率,將程序改寫如下。

        voidInitPos2(Object*p)

        {

        Point3*pos=p->pos;

        pos->x=0;

        pos->y=0;

        pos->z=0;

        }

        經過改寫的代碼,減少了內存訪問次數,提高程序的執(zhí)行效率,另外也可以在object結構體中增加一個point3域,專門作為指向p->pos的指針。

        塵埃粒子計數器相關文章:塵埃粒子計數器原理

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區(qū)

        關閉