色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ARM匯編語言代碼節中的文字池是什么

電子工程師 ? 來源:單片機匠人 ? 作者:蔡琰老師 ? 2021-08-13 15:14 ? 次閱讀

說到文字池,首先第一個問題:什么是文字池?文字池又叫literal pool,它的本質就是ARM匯編語言代碼節中的一塊用來存放常量數據而非可執行代碼的內存塊。

那為什么要使用文字池呢?當想要在一條指令中使用一個 4字節長度的常量數據(這個數據可能是內存地址,可能是數字常量)的時候,由于ARM指令集是定長的(ARM指令4字節或Thumb指令2字節),就無法把這個4字節的常量數據編碼在一條編譯后的指令中。此時,ARM編譯器(編譯C源程序)/匯編器(編譯匯編程序) 就會在代碼節中分配一塊內存,并把這個4字節的數據常量保存起來,之后,再使用一條指令把這個4 字節的數字常量加載到寄存器中參與運算。 在寫C程序中,文字池的分配是由編譯器在編譯時自行分配安排的,但是,在寫匯編程序時,開發者可以自己進行文字池的分配,當然如果沒有自己分配匯編器也會代勞。不管何種情況,這不影響我們來了解學習一下文字池的知識。

LDR Rd,=const 偽指令可在單個指令中構造任何 32 位數字常數。使用此偽指令可生成超出MOV和MVN指令范圍的常數。LDR 偽指令可為特定的常數生成最高效的單個指令:如果可以用單個MOV或MVN 指令構造該常數,則匯編器會生成適當的指令。如果不能用單個MOV或MVN 指令構造該常數,則匯編器會執行下列操作:將該值放入文字池中,生成一個使用程序相對地址的 LDR 指令,用于從文字池中讀取該常數。說的通俗一點,如果LDR Rd, =const能夠被轉換成MOV 或者MVN指令,則匯編器將轉換成它成為相應的指令,如果不能被轉換,則匯編器會將value存放在文字池中,并且產生一個LDR指令操作。

匯編器默認把文字池放在每一個代碼節的末尾處。代碼節的末尾的確定或者是由匯編源文件尾部的指示符END確定,或者由相鄰代碼節的起始行AREA確定。在大的代碼節中(通俗理解為這個節中的代碼量比較大),默認文字池在最后,可能與代碼節中一條或多條LDR偽指令的距離很遠,可能超出LDR偽指令操作數的尋址范圍。

當偽指令是32位時,在ARM或Thumb代碼中,必須小于4K字節,文字池常量數據的位置可以是在偽指令的前面,也可以是在偽指令的后面。當偽指令是16位Thumb指令時,必須小于1K字節,且文字池必須位于偽指令的后面。

LDR Rd, =const 偽指令需要一個文字池來存放立即數常量時,匯編器會檢查已經存在的文字池中是否有相同的常量并且檢查文字池是否在偽指令允許尋址的范圍內。如果條件滿足,匯編器引用這個滿足條件的常量,否則匯編器會嘗試把該常量值放到文字池未用的空間中。如果空間地址超出偽指令的尋址范圍,匯編器會產生一條錯誤信息。這種情況下,程序員必須得自己用指示符LTORG在代碼中設置增加一個文字池。指示符LTORG放在導致錯誤的偽指令后面,并且位于偽指令LDR的有效尋址范圍內(一般節的代碼量不是特別大的情況下,可以放于中間位置)。而且要保證設置的這個文字池,處理器執行代碼的時候不會執行到這個地址。它們應放在無條件跳轉指令的后面,或者放在子例程末尾處的返回指令的后面。

應用舉例如下:

Fun1

LDR R0, =0X12345678

ADD R1, R1, R0

BX LR ;子程序返回

LTORG ;聲明文字池,存儲0x12345678

POOL SPACE 20

好了,關于文字池,本片文章就講到這里了,大家有不明白的地方可以留言提問哦,謝謝大家。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9107

    瀏覽量

    367976
  • 編程
    +關注

    關注

    88

    文章

    3627

    瀏覽量

    93809

原文標題:一文帶你讀懂ARM文字池

文章出處:【微信號:CanaanTech,微信公眾號:嘉楠科技】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    ARM的啟動代碼為什么要用匯編語言

    ARM的啟動代碼為什么要用匯編語言
    發表于 02-26 07:17

    【原創】一文帶你讀懂ARM文字

    作者:蔡琰老師(張飛實戰電子高級工程師)說到文字,首先第一個問題:什么是文字文字又叫li
    發表于 08-11 15:05

    ARM匯編語言與指令格式資料分享

    1、ARM匯編語言與指令格式介紹匯編語言介紹概念指的是用助記符代替操作碼,用地址符號或標簽(:#&)代替地址碼的編程語言。優缺點優點:可以直接訪問硬件目標,
    發表于 04-22 16:10

    ARM匯編語言入門

    ,我們可以在函數編寫自己的匯編代碼,而無需擔心運行程序所需的所有其他代碼。 然后,我們將使用這種方法來查看用Arm
    發表于 08-08 07:28

    匯編語言代碼分析

    匯編語言代碼分析 查看源代碼將發現它由4 4個文件組成,其中:• 兩個是匯編語言文件,它們的名字帶后綴“ . s”;• 28個是用“C”
    發表于 02-09 16:18 ?26次下載

    匯編語言自學教程

    匯編語言自學教程 匯編語言(AssemblyLanguage)是面向機器的程序設計語言。在匯編語合,用助記符(Memoni)代替操作碼,
    發表于 03-15 14:24 ?511次下載

    Linux匯編語言

    在閱讀Linux源代碼時,你可能碰到一些匯編語言片段,有些匯編語言出現在以.S為擴展名的匯編文件,在這種文件
    發表于 04-07 20:43 ?55次下載

    Assemble匯編語言設計技術

    匯編語言 設計程序,是所有程序語言的基本資源。我們不管你使用除匯編語言或指令代碼以外的程序語言編程,僅僅是編程表達、編程規則和變成環境的變化
    發表于 07-07 15:47 ?0次下載

    ARM匯編語言官方手冊(中文)

    ARM匯編語言官方手冊(中文)匯編語言ARM匯編語言官方手冊(中文)
    發表于 12-28 15:02 ?212次下載

    匯編語言

    匯編語言舉例,比如讀寄存器內容的源代碼匯編語言制作的光帶菜單及源程序、獲得操作系統版本的匯編代碼
    發表于 12-31 10:40 ?33次下載

    ARM匯編程序設計之匯編語言文件格式

    10.3.1 ARM匯編語言語句格式 ARM(Thumb)匯編語法語句格式如下所示。 {symbol}{instruction|directive|pseudo-instruction
    發表于 10-19 10:14 ?7次下載

    ARM匯編語言工具V5.1用戶指南

    這本書幫助你學習如何使用德克薩斯儀器匯編語言工具專門為ARM的32位設備設計。
    發表于 04-13 15:41 ?6次下載
    <b class='flag-5'>ARM</b><b class='flag-5'>匯編語言</b>工具V5.1用戶指南

    CPU如何執行代碼 匯編語言教程

    的是低級語言,它專門用來控制硬件。匯編語言就是低級語言,直接描述/控制 CPU 的運行。如果你想了解 CPU 到底干了些什么,以及代碼的運行步驟,就一定要學習
    的頭像 發表于 08-25 11:14 ?3579次閱讀
    CPU如何執行<b class='flag-5'>代碼</b> <b class='flag-5'>匯編語言</b>教程

    ARM匯編語言官方手冊

    ARM匯編語言官方手冊
    發表于 10-10 10:44 ?30次下載

    ARM匯編語言工具

    電子發燒友網站提供《ARM匯編語言工具.pdf》資料免費下載
    發表于 11-06 09:12 ?0次下載
    <b class='flag-5'>ARM</b><b class='flag-5'>匯編語言</b>工具
    主站蜘蛛池模板: 蜜臀AV熟女人妻中文字幕| 国产在线一区二区AV视频| 国产超碰人人爱被IOS解锁 | 伧理片午夜伧理片| 欧美成人猛片aaaaaaa| 97色伦图片7778久久| 美女裸露100%奶头视频| 5278欧美一区二区三区| 乱淫67194| a视频在线看| 亲胸揉胸膜下刺激视频网站APP| 99久久国产免费福利| 欧美日韩视频一区二区三区| yy8090韩国理伦片在线| 日韩欧美视频一区| 国产成人精品综合在线观看| 午夜亚洲WWW湿好大| 国偷自产AV一区二区三区健身房| 亚洲中文无码亚洲人在线观看-| 精品无码乱码AV| 中文字幕一区二区三区在线观看| 美国caopo超碰在线视频| 99久久免费看少妇高潮A片| 青草在线观看视频| 国产高清亚洲| 亚洲视频区| 麻豆婷婷狠狠色18禁久久| AV色蜜桃一区二区三区| 色翁荡息又大又硬又粗又爽电影| 国产喷水1区2区3区咪咪爱AV| 亚洲精品久久久久久久蜜臀老牛| 久久AV无码AV高潮AV不卡| 78m成人亚洲| 色欲AV亚洲永久无码精品| 国产一区二区三区内射高清| 中文字幕蜜臀AV熟女人妻| 日韩精品人成在线播放| 国自产拍 高清精品| 99精品免费久久久久久久久日本 | 麻豆乱码一卡二卡三卡视频| 啊灬啊灬啊灬快高潮视频|