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

<s id="cmphk"><label id="cmphk"></label></s>
    <span id="cmphk"><var id="cmphk"></var></span>
    <dfn id="cmphk"><var id="cmphk"></var></dfn>
    <menu id="cmphk"><thead id="cmphk"></thead></menu>

    <address id="cmphk"></address>

      <dfn id="cmphk"></dfn>
      
      
      <span id="cmphk"></span>

      <object id="cmphk"><tt id="cmphk"></tt></object>
      1. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM匯編----偽指令LTORG

        ARM匯編----偽指令LTORG

        作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
        LTORG用于聲明一個數(shù)據(jù)緩沖池,(也稱為文字池)的開始。在使用偽指令LDR時,常常需要在適當(dāng)?shù)牡胤郊尤隠TORG聲明數(shù)據(jù)緩沖池,LDR加載的數(shù)據(jù)暫時放于數(shù)據(jù)緩沖池。

        語法LTORG

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

        使用說明:

        當(dāng)程序中使用LDR之類的指令時,數(shù)據(jù)緩沖池的使用可能越界。為防止越界發(fā)生,可使用LTONG偽操作定義數(shù)據(jù)緩沖池。通常大的代碼段可以使用多個數(shù)據(jù)緩沖池。ARM匯編編譯器一般把數(shù)據(jù)緩沖池放在代碼段的最后面,即下一代碼段開始之前,或者END偽操作之前。LTORG偽操作通常放在無條件跳轉(zhuǎn)指令之后,或者子程序返回指令之后,這樣處理器就不會錯誤的將數(shù)據(jù)緩沖池中的數(shù)據(jù)當(dāng)作指令來執(zhí)行。

        LDR偽指令在匯編時,如果立即數(shù)可以用表示的話就替換為MOV或MVN指令;如果不能用其表示則需要將該立即數(shù)放到一個文字池中,并生成一條將該文字池內(nèi)容加載到目標(biāo)寄存器的LDR指令。而使用LDR指令必須保證文字池在其可以訪問的地址范圍之內(nèi),對于ARM指令集來說就是4KB,所以必須在LDR指令前后4KB的范圍內(nèi)用LTORG顯式地在代碼段中添加一個文字池。

        LTORG是在此指令出現(xiàn)的地方放一個文本池(literal pool).在ARM匯編中常用到

        ldr r0, =instruction將地址instruction載入r0.

        此時編譯器將ldr盡可能的轉(zhuǎn)變成mov或mvn指令。

        如果轉(zhuǎn)變不成,將產(chǎn)生一個ldr指令,通過pc相對地址從一塊保存常數(shù)的內(nèi)存區(qū)讀出instruction的值。此內(nèi)存區(qū)既是文本池。一般的,文本池放在END指令之后的地方。但是,如果偏移地址大于4k空間, ldr指令會出錯(因為ldr的相對偏移地址為12-bit的值).此時使用LTORG放到會出錯的ldr指令附近,以解決此問題。編譯器會收集沒有分配的ldr的值放到此文本池中。



        關(guān)鍵詞: ARM匯編偽指令LTOR

        評論


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

        關(guān)閉