娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年06月16日(星期一)

2021年06月16日 | ARM匯編語言入門(三)

發布者:EnigmaticCharm 來源: eefocus關鍵字:ARM  匯編語言  入門 手機看文章 掃描二維碼
隨時隨地手機看文章

Part 3 ARM指令集

ARM模式和Thumb模式

ARM處理器主要有兩種工作模式(先不算Jazelle)-ARM狀態和Thumb狀態。這些狀態模式與權限級別無關,它們主要區別是指令集,在ARM模式下指令集始終是32-bit,但是在Thumb模式下可以是16-bit或者32-bit。學會怎么使用Thumb模式對于ARM開發很重要。編寫ARM殼代碼時,我們需要避免NULL字節,使用16位Thumb指令而不是32位ARM指令可以降低這種風險。ARM各版本的調用規范容易讓人混淆,不是所有的ARM版本都支持相同的Thumb指令集。后來,ARM 引入了增強的 Thumb 指令集(偽名稱:Thumbv2),它允許 32 位 Thumb 指令甚至允許條件執行,在之前的版本中是不行的。為了在Thumb模式中支持條件執行,引入了“it”指令。但是,該指令隨后又在更高版本中刪除了,被一種更簡單的方式所替換。不同ARM/Thumb指令集的有各種不同變體,一般不同關心這些。只需要知道的是你的目標設備的 ARM 版本及其特定的 Thumb 支持,然后再調整代碼。ARM 信息中可以幫助您確定ARM 版本的細節(http://infocenter.arm.com/help/index.jsp)。


Thumb-1(16 位指令):在ARMv6和更早的體系結構中使用。

Thumb-2(16 位和 32 位指令):在Thumb-1基礎上添加更多指令并允許它們為 16 位或 32 位寬(ARMv6T2、ARMv7)。

ThumbEE:更改和添加了一些支持動態生成代碼的功能(在執行之前或執行期間在設備上編譯代碼)。

ARM模式和Thumb模式的態區別:


條件執行:在ARM模式下所有的指令都支持條件執行。一些版本的ARM處理器可以通過it指令在Thumb工作模式下支持條件執行。

ARM和Thumb模式下的32-bit指令:在Thumb模式下的32-bit指令有.w后綴。

桶型位移器(barrel shifter)是ARM模式下的另一個特點。它可以將多條指令縮減為一條。例如,你可以通過向左位移1位的指令后綴將乘法運算直接包含在一條MOV指令中(將一個寄存器的值乘以2,再將結果MOV到另一個寄存器):

MOV R1, R0, LSL#1 ;R1 = R0 * 2,而不需要使用專門的乘法指令來運算。


要切換處理器在其中執行的狀態,必須滿足以下兩個條件之一:

我們可以使用分支指令 BX(分支和切換狀態)或 BLX(分支、鏈接和切換狀態),并將目標寄存器的最小有效位設置為 1。可以通過偏移量加1來實現,例如0x5530+1。您可能會認為這將導致對齊問題,因為指令是 2 或 4 字節對齊的。這不是問題,因為處理器將忽略最低有效位。詳見Part 6:條件執行和分支。

如果當前程序狀態寄存器的T位被置位,就說明工作在Thumb模式下。



ARM指令簡介

本節簡單介紹ARM指令集以及基本用法。了解匯編語言中的最小部分如何操作,它們之間如何銜接,它們之間能組合成什么樣的功能。


ARM指令后面通常跟著兩個操作數,像下面這樣的形式:


MNEMONIC{S}{condition} {Rd}, Operand1, Operand2

由于ARM指令集的靈活性,并不是所有的指令都用到這些字段。這些字段的解釋如下:


MNEMONIC     - 操作指令(機器碼對應的助記符)。

{S}          - 可選后綴. 如果指定了該后綴,那么條件標志將根據操作結果進行更新。

{condition}  - 執行指令所需滿足的條件。

{Rd}         - 目標寄存器,存儲操作結果。

Operand1     - 第一操作數(寄存器或者立即數)

Operand2     - 第二操作數. 立即數或者帶有位移操作后綴(可選)的寄存器。

MNEMONIC, S, Rd和Operand1字段比較明了,condition 和 Operand2字段需要再解釋一下。condition字段與CPSR寄存器的值有關,準確的說是和CPSR某些位有關。Operand2也叫可變操作數,因為它可以有多種形式--立即數、寄存器、帶有位移操作的寄存器。例如Operand2可以有以下多種形式:


#123                    - 立即數。

Rx                      - 寄存器x (如 R1, R2, R3 ...)。

Rx, ASR n               - 寄存器x,算術右移n位 (1 = n = 32)。

Rx, LSL n               - 寄存器x,邏輯左移n位 (0 = n = 31)。

Rx, LSR n               - 寄存器x,邏輯右移n位 (1 = n = 32)。

Rx, ROR n               - 寄存器x,循環右移n位 (1 = n = 31)。

Rx, RRX                 - 寄存器x,擴展的循環位移,右移1位。

讓我們以一個簡單的例子看一下這些指令的不同:


ADD   R0, R1, R2         - 將寄存器R1內的值與寄存器R2內的值相加,結果存儲到R0。

ADD   R0, R1, #2         - 將寄存器R1內的值加上立即數2,結果存儲到R0。

MOVLE R0, #5             - 僅當滿足條件LE(小于或等于)時,才將立即數5移動到R0(編譯器會把它看作MOVLE R0, R0, #5)。

MOV   R0, R1, LSL #1     - 將寄存器R1的內容向左移動一位然后移動到R0(Rd)。因此,如果R1值是2,它將向左移動一位,并變為4。然后將4移動到R0。

來快速總結一下,看一下后續示例中將涉及的一些常用指令:


關鍵字:ARM  匯編語言  入門 引用地址:ARM匯編語言入門(三)

上一篇:ARM匯編語言入門(四)
下一篇:ARM匯編語言入門

推薦閱讀

中國上海,2018年6月15日——東芝電子(中國)有限公司(以下簡稱“東芝”)宣布,將參加2018年6月26日至28日于上海世博展覽館舉辦的上海國際電力元件、可再生能源管理展覽會(PCIM Asia 2018),本次展會上東芝將在2號館E01展位向現場觀眾展示其面向電力能源方面提供的尖端技術、產品以及系統級解決方案。日前,國際能源署及聯合國聯合發布的《追蹤...
  據消息報道,安徽省煤礦井下機器人產需對接會近日在合肥召開。會議旨在加快安徽省煤礦井下機器人的應用,推動安徽省煤炭生產少人化、無人化工作,提高生產安全和生產效率,同時為安徽省裝備制造業企業相互交流、對接合作搭建服務平臺,進一步提升安徽省智能制造水平。   本次對接會由安徽省經信廳、省能源局主辦。2018年,安徽省出臺《機器人產...
智能手機上有多少個攝像頭才夠?隨著五顆鏡頭開始出現在一些旗艦智能手機上,這個數字似乎正在上升。現在,三星的一個專利顯示該公司欲將這個數字提高到六枚。 據Let‘sGoDigital報道,三星最近公布了一項專利,該專利名為 “用于數碼攝影的多臺相機的操作設備和方法”,專利描述了一個由五個廣角鏡頭與一個變焦鏡頭組成的橫排相...
韓國唯一一家純晶圓代工公司啟方半導體(Key Foundry)宣布,該公司為ABOV Semiconductor提供適用于汽車功率半導體應用的第二代0.13微米嵌入式閃存BCD工藝。功率半導體是一種為電視、燈、筆記本電腦和智能手機等各種應用轉換、分配和控制電源供應的半導體器件。第四次工業革命涌現的產品,如人工智能,物聯網和自動駕駛汽車需要多個功率部件,因此功率半導...

史海拾趣

問答坊 | AI 解惑

歷年電子設計大賽賽題(2001—2007)

本帖最后由 paulhyde 于 2014-9-15 09:27 編輯 大家需要的話,可以發幾個論文學習學習!~!  …

查看全部問答∨

步進電機

[local]1[/local]…

查看全部問答∨

Verilog超詳細教程

Verilog超詳細教程…

查看全部問答∨

如何保證LED固晶質量

replyreload += \',\' + 385102;Timson,如果您要查看本帖隱藏內容請回復…

查看全部問答∨

請教一下PCF8563與24C02通信問題?

我開發了一款溫控器,選的是PCF8563與24C02,但有些型號的24C02,系統能正常工作.有些型號的24C02卻不能正常工作,具體是時間亂跳.這到底什么回事,高手指點一下啊. CSI/24C02WI/40919G 能正常工作, CSI/24C02WI/0851C 不能正常工作, …

查看全部問答∨

windows ce下如何對u盤進行讀寫編程

我需要檢測一下自己移植完了的USB驅動是否完全工作正常,因此我想在windows ce下編寫一個小應用程序,實現對插入板子usb port的u盤的讀寫。 沒有經驗,請高手執教,指點一下。…

查看全部問答∨

PDA用無線CF卡

   最近完成了一個小項目, 主要解決PDA與下面單片機無線通信的問題, 最先考慮直接使用PDA上內置的藍牙或WIFI, 但這樣的無線通信的方案在單片機端實現起來又比較麻煩, 軟件工作量大大增加, 同時隨著軟件復雜度的增加, 對硬件的要求也在增 ...…

查看全部問答∨

usb攝像頭上按鈕的相應

大家好,現在很多usb攝像頭上面都有一個按鈕,請問當這個按鈕按下時出發什么事件,如何使用程序相應這個按鈕事件。 謝謝!!!…

查看全部問答∨

wince怎么學 ? 要學哪些東西啊? 還有是不是可以用 .Net 的 C# 做

本人很羨慕做wince開發的,自己沒接觸過wince,所以問題比較多:請有經驗或是知道的能告訴小弟啊,謝謝啦 本人是做c#的web開發的,現在想學wince ? 要學哪些東西啊? 還有是不是可以用 .Net 的 C# 做開發,如果可以用C#開發,那么對 c/c++ 有沒有要求呢? ...…

查看全部問答∨

STM32迷你套件!

                                 今天收到了ST的<<STM32迷你套件>>,武漢力源寄過來的,有點失望,但一樣感謝!…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 三明市| 新源县| 天台县| 德安县| 景宁| 岳阳市| 瑞安市| 丹寨县| 闸北区| 汝南县| 冷水江市| 乌鲁木齐市| 房山区| 扎鲁特旗| 龙南县| 安乡县| 怀宁县| 东明县| 太康县| 凤凰县| 绥滨县| 西吉县| 尼勒克县| 育儿| 房山区| 岐山县| 红河县| 西林县| 洞口县| 赣榆县| 五寨县| 娱乐| 亚东县| 淮阳县| 辽中县| 镇宁| 汉源县| 揭西县| 南京市| 尖扎县| 高州市|