在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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) > 設計應用 > ARM中的對齊問題

            ARM中的對齊問題

            作者: 時間:2016-11-11 來源:網絡 收藏
            ARM中,當吧一個內存區(qū)域初始化為某個結構體時,必須注意字節(jié)對齊情況。

            1. 簡介

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

            在ARM中,有ARM和Thumb兩種指令。
            ARM指令 :每執(zhí)行一條指令,PC的值加4個字節(jié)(32bits).一次訪問4字節(jié)內容,該字節(jié)的起始地址必須是4字節(jié)對齊的位置上,

            即地址的低兩位為bits[0b00],也就是說地址必須是4的倍數(shù)。
            Thumb指令:每執(zhí)行一條指令,PC的值加2個字節(jié)(16bits).).一次訪問2字節(jié)內容,該字節(jié)的起始地址必須是2字節(jié)對齊的位置上,

            即地址的低兩位為bits=0,也就是說地址必須是2的倍數(shù)。

            遵循以上方式叫對齊(aligned)方式,不遵守這樣方式稱為非對齊(unaligned)的存儲訪問操作。

            ARM CPU不支持未對齊雙字(8 bytes)訪問。

            雙字訪問必須是8字節(jié)/4字節(jié)對齊.

            2. ARM平臺中的字節(jié)對齊關鍵字

            (1) __align(num)

            (2) __packed

            進行一字節(jié)對齊。

            (3) __unaligned

            用于修飾某個變量,可按照非對齊方式訪問。

            3. __packed與#pragma pack(1)的區(qū)別

            4. __attribute__((aligned))

            用于指定類型的最低對齊要求.

            5. --unaligned_access / --no_unaligned_access

            用于啟用/禁止:CPU上的未對齊數(shù)據(jù)訪問.

            ARMv6 / ARMv7-AR : 默認值為--unaligned_access

            ARMv6之前的/ARMv7-M : 默認值為--no_unaligned_access

            EDK中RVCT_ALL_CC_FLAGS設為:--no_unaligned_access

            ARMGCC沒有設。

            6. 內存分配函數(shù)

            盡量保證返回的地址,都是4字節(jié)對齊的。

            7. 如何查找與字節(jié)對齊方面的問題

            (1) 編譯器的big little 設置

            EDK中ARMGCC的flag設為:-mlittle-endian

            (2) CPU是否支持非對齊訪問


            ===================

            字節(jié)對齊的故障只能出現(xiàn)在“引用”的使用過程中。當使用“對象名”來操作對象時,根本不用擔心字節(jié)對齊問題。

            在ADS環(huán)境下,有“ALIGN” 、“__align(x)” 、“__packed”關鍵字用于字節(jié)對齊處理。ALIGN用于匯編語言,__align(x)用于C語言,

            __packed用于放棄字節(jié)對齊。

            單字節(jié)對齊類型的引用可以操作任何對象,雙字節(jié)對齊類型的引用可以操作雙字節(jié)、四字節(jié)、八字節(jié)對齊的對象,…………。

            只有遵守這個規(guī)則,程序才可能是健壯的。

            如果我們想使用雙字節(jié)對齊類型的引用來操作單字節(jié)對齊對象,那么你在定義該引用時必須使用__packed關鍵字!

            ============================



            關鍵詞: ARM對齊問

            評論


            技術專區(qū)

            關閉