ARM指令集2

ARM指令集2

ARM微處理器支持加載/存儲指令用于在寄存器和存儲器之間傳送數據,加載指令用于將存儲器中的數據傳送到寄存器,存儲指令則完成相反的操作。

LDR指令(與MOV有區別,MOV只能操作通用寄存器)

LDR指令格式為:

LDR{條件}目的寄存器,<存儲器地址>

LDR指令用于從存儲器中將一個32位的字數據傳送到目的寄存器中。該指令通常用于從存儲器中讀取32位的字數據到通用寄存器,然后對數據進行處理。

LDR? R0, [R1]

將存儲器地址為R1的字數據讀入寄存器R0。

LDR? R0, [R1,R2]

將存儲器地址為R1+R2的字數據讀入寄存器R0。

LDR? R0, [R1,? #8]

將存儲器地址為R1+8的字數據讀入寄存器R0。

LDR? R0, [R1,R2]!

將存儲器地址為R1+R2的字數據讀入寄存器R0。并將新地址R1+R2寫入R1。

LDR? R0, [R1, #8]!

將存儲器地址為R1+8的字數據讀入寄存器R0,并將新地址R1+8寫入R1。

LDR? R0, [R1],R2

將存儲器地址為R1的字數據讀入寄存器R0。并將新地址R1+R2寫入R1。

LDR? R0, [R1,R2,LSL#2]!

將存儲器地址為R1+R2*4的字數據讀入寄存器R0。并將新地址R1+R2*4寫入R1。

LDR? R0, [R1],R2,LSL#2

將存儲器地址為R1的字數據讀入寄存器R0。并將新地址R1+R2*4寫入R1。

?

LDRB指令

LDRB指令格式為:

LDR{條件}B目的寄存器,<存儲寄存器>

LDRB指令用于從寄存器中將一個低8位的字節數據傳送到目的寄存器中,同時將寄存器的高24位清零。該指令通常用于從存儲器中讀取8位的字節數到通用寄存器,然后對數據進行處理。

指令示例:

LDRB? R0,[R1];將存儲器地址為R1的字節數讀入寄存器R0,并將R0的高24位清零。

LDRB??? R0,[R1,#8];將存儲器地址為R1+8的字節數據讀入寄存器R0,并將R0的高24位清零。

?

LDRH指令

LDRH指令格式為:

LDR{條件}H目的寄存器,<存儲寄存器>

LDRH指令用于從寄存器中將一個低16位的半字節數據傳送到目的寄存器中,同時將寄存器的高16位清零。該指令通常用于從存儲器中讀取16位的半字節數到通用寄存器,然后對數據進行處理。

指令示例:

LDRB? R0,[R1];將存儲器地址為R1的半字節數讀入寄存器R0,并將R0的高16位清零。

LDRB??? R0,[R1,R2];將存儲器地址為R1+R2的半字節數據讀入寄存器R0,并將R0的高16位清零。

?

STR指令

STR指令的格式為:

STR{條件}源寄存器,<存儲器地址>

?????? STR指令用于從源寄存器中將一個32位的字數據傳送到存儲器中。

指令示例:

STR R0,[R1],#8;將R0中的字數據寫入以R1為地址的存儲器中,并將新地址R1+8寫入R1。

STR R0,[R1,#8];將R0中的字數據寫入以R1+8為地址的存儲器中。

?

批量加載/存儲指令

ARM微處理器所支持的批量數據加載/存儲指令可以一次在一片連續的存儲單元和多個寄存器之間傳送數據,批量加載指令用于將一片連續的存儲器中的數據傳送到多個寄存器,批量數據存儲指令則完成相反的操作。常用的加載存儲指令如下:

LDM???????????? 批量數據加載指令

STM????????????? 批量數據存儲指令

?

LDM指令

LDM指令格式為:

LDM{條件}{類型}指令用于從由基址寄存器{! },寄存器列表{}

?????? LDM(或STM)指令用于從基址寄存器所指示的一片連續的存儲器到存儲器所指示的多個寄存器之間傳送數據,該指令的常見用途是將多個寄存器的內容入棧或出棧。其中,{類型}為以下幾種情況:

? ? ? ? ? ? ? ? ? ? ? ?

{! }為可選后綴,若選用該后綴,則當數據傳送完畢之后,將最后的地址寫入基址寄存器,否則基址寄存器的內容不變。基址寄存器不允許為R15,寄存器列表可以為R0~R15的任意組合。

寄存器列表{}為可選后綴,當指令為LDM且寄存器列表中包含R15,選用該后綴時表示:除了正常的數據傳送之外,還將SPSR復制到CPSR。

指令示例:

STMFD???????? R13!,{R0,R4-R12,LR}

將寄存器列表中的寄存器(R0,R4到R12,LR)存入堆棧。

LDMFD    R13!,{R0,R4-R12,PC}

?????? 將堆棧內容恢復到寄存器(R0,R4到R12,LR)。

?

數據交換指令

ARM微處理器所支持數據交換指令能在存儲器和寄存器之間交換數據。數據交換指令有如下兩條:

SWP??? 字數據交換指令

SWPB??? 字節數據交換指令

?

SWP指令

SWP指令格式為:

SWP{條件}目的寄存器,源寄存器1,[源寄存器2] or LDR 和 STR 兩個指令也能實現SWP指令。

SWP指令用于將源寄存器2所指向的存儲器中的字數據傳送到目的寄存器中,同時將源寄存器1中的字數據傳送到源寄存器2所指向的存儲器中。顯然,當元寄存器1和目的寄存器為同一個寄存器時,指令交換該寄存器和存儲器的內容。

指令示例:

SWP  R0,R1,[R2];將R2所指向的存儲器中的字數據傳送到R0,同時將R1中的字數據傳送到R2所指向的存儲單元。

SWP?????? R0, R0, [R1];該指令完成將R1所指向的存儲器中的字數據與R0中的字數據交換。

?

移位指令

ARM微處理器支持數據的移位操作,移位操作在ARM指令集中不作為單獨的指令使用,它只能作為指令格式中是一個字段,在匯編語言中表示為指令中的選項。移位操作包括如下幾種類型,ASL和LSL是等價的,可以自由互換:

LSL??????? 邏輯左移

ASL????????????? 算術左移

LSR?????? 邏輯右移

ASR????????????? 算術右移

ROR?????? 循環右移

異常產生指令

ARM微處理器所支持的異常指令有如下兩條:

SWI?????? 軟件中斷指令

BKPT???? 斷點中斷指令 ????

SWI指令格式為:

SWI{條件}24位的立即數

?????? SWI指令用于產生軟件中斷,以便用戶程序能調用操作系統的系統API。操作系統在SWI的異常處理程序中提供相應的系統服務,指令中24位的立即數指定用戶程序調用的API類型。

指令示例:

SWI?????? 0x02

該指令調用操作系統編號位02的系統例程。

?

轉載于:https://www.cnblogs.com/Bright-Ho/p/5457964.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255401.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255401.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255401.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SylixOS中select原理及使用分析

2019獨角獸企業重金招聘Python工程師標準>>> 1. select接口簡介 1.1 select接口使用用例 select是操作系統多路I/O復用技術實現的方式之一。 多路I/O復用技術大致使用場景為&#xff1a;構造一張感興趣的文件描述符列表&#xff0c;然后調用多路復用的IO接口&#x…

【pyqt5學習】——QLineEdit學習(回顯模式)

目錄 1、回顯模式 2、成果顯示 3、知識點 1&#xff09;FormLayout布局添加addRow方法 2&#xff09;在輸入框顯示灰色提示字體&#xff0c;輸入內容時消失setPlaceholderText 3&#xff09;設置回顯模式setEchoMode 4、完整代碼 1、回顯模式 QLineEdit控件的主要功能是輸…

有關機械手臂控制中的兩個重要輸入參數

1.在機械手臂中有兩個重要參數。一個是編碼器的值&#xff0c;另外一個是馬達的電流值。根據這兩個可以獲得機械手臂的運動學&#xff0c;動力學的一些數據。第一重要特征參數 是DH參數&#xff0c;另外一個就是每個軸的質心參數。

MySQL的權限分配

MySQL 賦予用戶權限命令的簡單格式可概括為&#xff1a;grant 權限 on 數據庫對象 to 用戶&#xff0c;如 GRANT PRIVILEGES ON datebase.* to user% IDENTIFIED by passwd;一、給表數據賦權 grant 普通數據用戶&#xff0c;查詢、插入、更新、刪除 數據庫中所有表數據的權利。…

用HttpURLConnection發送http請求

//發送http請求try {//1.使用網址構造一個URL對象 URL url new URL(path);//2.獲取連接對象 HttpURLConnection conn (HttpURLConnection) url.openConnection();//3.設置一些屬性 //設置請求方式&#xff0c;注意大寫conn.setRequestMethod("GET");//設置請求超時…

【pyqt5學習】——QLineEdit控件輸入校驗器Validator、掩碼setInputMask限制輸入、textChanged信號

目錄 1、輸入校驗器——限制輸入框輸入的內容 1&#xff09;校驗器類型——整數、浮點數、數字字母結合&#xff08;正則&#xff09; 2&#xff09;步驟 3&#xff09;結果 ?編輯 ?編輯 4&#xff09;完整代碼 2、利用掩碼進行輸入的限制 0&#xff09;掩碼對照表 1…

Call requires API level 3 (current min is 1)

結果出現“Call requires API level 3 (current min is 1): 解決方法&#xff1a; 在工程上點擊右鍵 -> Android Tools -> Clear Lint Markers&#xff0c;即可。轉載于:https://www.cnblogs.com/qianyukun/p/5458331.html

Product文本格式說明

使用txt進行產品信息的說明。 Product文本格式說明 //**************************************************** //產品信息 //固定標識符全部大寫&#xff0c;全部在等號&#xff08;&#xff09;前面 //****************************************************** PRODUCTTest //…

PyOpenCL圖像處理:Box模糊

為什么80%的碼農都做不了架構師&#xff1f;>>> # -*- coding: utf-8 -*-from __future__ import absolute_import, print_function import numpy as np import pyopencl as cl import cv2 from PIL import Imagedef RoundUp(groupSize, globalSize): r globalSi…

【python bug修復】——Script file ‘D:\softwares_install\Anaconda3\envs\PartTimes\Scripts\pip-scrip

目錄 1、問題描述 2、問題解決 1&#xff09;下載pip安裝腳本 2&#xff09; 運行安裝pip腳本 3&#xff09; 下載庫 1、問題描述 利用pip命令進行庫的安裝時&#xff0c;突然出現這個問題&#xff0c;之前使用還好好的 Script file D:\softwares_install\Anaconda3\envs\P…

項目中的那些事---下載pdf文件

最近做了一個下載pdf文檔的需求&#xff0c;本以為使用HTML5中<a>標簽的屬性download就能簡單搞定&#xff0c;不料IE竟然不支持這一簡單粗暴的H5新特性&#xff0c;而是直接在網頁中打開&#xff0c; 于是各種搜索之后得出以下結論&#xff1a;IE中下載文檔時&#xff0…

MySQL日志分類及性能分析你應該知道的知識

為什么80%的碼農都做不了架構師&#xff1f;>>> MySQL日志記錄了MySQL數據庫日常操作和錯誤信息&#xff0c;MySQL總共有四種類型的日志&#xff0c;通過分析這些日志可以查詢到MySQL的運行情況、用戶操作、錯誤信息等&#xff0c;可以為MySQL的管理和優化提供必要…

利用三個點(trsf)來實現各種規則圖形的實現

在Val3,是使用trsf(x,y,z,rx,ry,rz)來實現三維空間點的位置與方向。 其中第一點和第二點位置很重要&#xff0c;第三點是用來確定方向。根據這三個點先確定一個用戶坐標系。 在這個坐標系中&#xff0c;實現圓&#xff0c;三角形&#xff0c;矩形&#xff0c;腰圓&#xff0c;正…

android基礎組件----Button的使用

按鈕由文本或圖標&#xff08;或文本和一個圖標&#xff09;組成&#xff0c;當用戶觸摸到它時&#xff0c;會發生一些動作。今天我們開始Button的學習。少年的愛情永遠不夠用&#xff0c;一杯酒足以了卻一件心事。 Button的簡要說明 根據你是否想要一個帶有文本的按鈕&#xf…

@Repository、@Service、@Controller 和 @Component

Repository 、Service 、 Controller 、Component 這四個Spring注解 ,用于把加了注解的 類 加入到Spring 容器中管理&#xff0c;節省了xml 的繁重的配置&#xff0c;盡管如此xml 同樣可以實現&#xff08;一般建議先搞懂xml&#xff09;。 Repository Repository注解便屬于最先…

【pyqt5學習】——QTextEdit控件學習:獲取文本、添加文本

目錄 1、QTextEdit控件介紹 2、QTextEdit控件添加文本、添加HTML格式 3、QTextEdit控件獲取文本、獲取HTML格式文本 4、案例 1&#xff09;完整代碼 2&#xff09;效果 1、QTextEdit控件介紹 QTextEdit控件是一個支持多行輸入的輸入框&#xff0c;支持HTML進行格式的設置 2…

空間變化

空間變化 第一種&#xff1a;圓 第二種: 矩形 第三種&#xff1a;正五邊形 第四種:正六邊形 第五種&#xff1a;腰圓 算法&#xff1a; 在規則圖形&#xff08;不包括圓心-直徑法&#xff09;中&#xff0c;等于或者超過三個點。一般的&#xff0c;利用p1,p2,p3來建立一個用戶…

【pyqt5學習】——QAbstractButton學習(普通按鈕QPushButton、工具按鈕QToolButton、單選按鈕QRadioButton、復選框按鈕QCheckBox)

目錄 1、按鈕介紹 2、普通按鈕QPushButton學習 1&#xff09;特殊模式——開關按鈕&#xff08;toggle&#xff09; ①將按鈕設置為可選擇的 ②將按鈕按下 判斷按鈕是否被按下 isChecked() 2&#xff09;給按鈕設置前置圖標setIcon() ?編輯 3&#xff09;按鈕信號 4)完…

java 企業 網站源碼 模版 屏幕自適應 有前后臺 springmvc SSM 生成靜態化

前臺&#xff1a; 支持四套模版&#xff0c; 可以在后臺切換點擊&#xff1a;獲取地址QQ 313596790官網 http://www.fhadmin.org/系統介紹&#xff1a;1.網站后臺采用主流的 SSM 框架 jsp JSTL&#xff0c;網站后臺采用freemaker靜態化模版引擎生成html2.因為是生成的html&…

挖財后端架構簡介

挖財后端技術用的主要是比較大眾的東西&#xff0c;Web容器用Tomcat&#xff0c;框架主要是Spring MVC&#xff0c;也有少量的Play&#xff0c;中間服務層是Dubbo&#xff0c;微容器用Spring Boot&#xff0c;服務注冊這一塊是用ZooKeeper&#xff0c;核心業務開發方式還是圍繞…