1. 程式人生 > >arm彙編指令總結(不斷更新)

arm彙編指令總結(不斷更新)

/** ****************************************************************************** * @author    Maoxiao Hu * @version   V1.0.1 * @date       Jan-2015 ****************************************************************************** * < COPYRIGHT 2015 ISE of SHANDONG UNIVERSITY > ******************************************************************************
**/ ARM的指令集去哪裡查才最權威最詳細呢? 一般ARM官方網站上會有針對你手上晶片對應指令集的《架構參考手冊》,可以免費下載。例如我手上的exynos4412是ARM v7-A指令集,那麼對應的手冊就是《arm_architecture_reference_manual ARMv7-A and ARMv7-R edition.pdf》。 在這個手冊的第A8節:Instruction Details 按照字母順序詳細介紹了ARMv7-A的各種指令語法,700頁之多,用到時詳查即可。 下面說一下查閱文件需要注意的幾個地方。

一、指令格式

當我們查詢一些指令比如ldrle movne,發現無法在手冊中搜索到,其實並不是沒有這些指令,而是這些指令是在原始指令ldr mov後面加上了條件碼(Condition Code)le ne,然後被寫到了一起。 舉個例子: LDR的第一種指令格式如下,LDR後面的<c>就表示可以選擇後接條件碼,當然也可以不接。 NewImage
條件碼如下,如果不附加條件碼,就代表AL,無條件執行: NewImage 這樣一來,一個簡單的ldr就可以派生出ldreq ldrne ldrcs ldrcc……各種指令,其它簡單指令也類同。 知道了這點,99%的指令就都可以讀得懂了,還有極小一部分特殊指令在這裡暫且不說。 二、常用指令 列一下uboot中經常出現的一些指令,作為練習,按字母順序依次列出。 而且平常所說的什麼位置無關碼,其實不用死記,可以直接用指令格式進行解釋。 ---------- b NewImage 舉例: NewImage 第一行 b 7de016d0的彙編碼是ea000002,與上表對照後發現imm24為2,也就是說目的地址為當前PC+4+2*4 = 7de016d0 即彙編碼裡只儲存了偏移地址,所以b是位置無關碼,至於b的跳轉範圍,很明顯就是24位有符號數能表示的範圍。 ----------- bl NewImage
只不過bl會把當前地址+4放到LR暫存器中以備程式返回。 ------------ bx bx指令跳轉到指令中所指定的目標地址。一般這條指令用於程式返回,比如:bx lr NewImage 舉例: ------------ blx blx將跳轉到Rm暫存器指向的地址,並將當前PC值儲存到LR。低四位代表Rx的暫存器號。 NewImage 舉例: NewImage 既然跳轉到r4指向的暫存器,那麼低四位就是4,高28位一般固定為e12fff3。 ------------- ldr ldr是把逗號後面地址指向的值,放到逗號前面的暫存器裡去。 NewImage 舉例: NewImage  r1 + 4 -> r5 NewImage r3 -> r2 NewImage r3 - 36 -> r2 NewImage pc + 292 -> r0 -------------- str str的作用是把逗號前面暫存器的值,放到逗號後面指示的地址裡去。 NewImage 舉例: NewImage r3 -> sp + 28 NewImage r3 -> r2 + r1<<5

相關推薦

arm彙編指令總結不斷更新

/** ****************************************************************************** * @author    Maoxiao Hu * @version   V1.0.1 * @date       Jan-2015 *****

JAVA問題與總結不斷更新

一.面試問題列表 點選連結檢視相應解答。 (1)過載和重寫的區別 (2)HASHMAP和HASHTABLE的區別 3.怎麼優化sql 4.怎麼處理百萬條資料 5.java多執行緒處理 6.什麼情況下記憶體溢位 7.java 堆 棧stack類 8.java自定義連結串列的

Android之平時遇見的異常和錯誤總結不斷更新

安卓錯誤經驗累積  1、當出現下面錯誤時候     08-21 03:43:16.679: E/AndroidRuntime(1087): java.lang.RuntimeException: Unable to start activity ComponentInfo{

Nobleman__ ACM 比賽模板 C++ && Java個人總結 不斷更新 自用

宣告 : 本人剛學演算法一年,都是自己做題常用的模板,不時總結下。 大致分為:亂七八糟, 數論,圖論,動態規劃,幾何,Java 還有一些奇葩定理, 奇葩定理: 【1】高效求出n的約數的個

ARM-彙編指令總結

https://www.cnblogs.com/wxb20/p/6249580.html ARM彙編指令集 指令、偽指令 (彙編)指令: 是機器碼的助記符,經過彙編器編譯後,由CPU執行。 (彙編)偽指令:用來指導指令執行,是彙編器的產物,最終不會生成機器碼。 有兩種不同風格

python基礎知識總結不斷更新。。。。

python可以簡便的方法:(1)lambda x,y:x*y(2)list1 = list(filter(lambda x:x%3 == 0,range(100)))filter 第一個參數是過濾條件,第二個是要過濾的內容返回值是個Object,得轉換為其他類型(3)map: list1 = map(lam

Unity3d修煉之路:遊戲開發中,3d數學知識的練習【1】不斷更新.......

turn tor rdo pre 長度 scrip 縮放 unity3d float #pragma strict public var m_pA : Vector3 = new Vector3(2.0f, 4.0f, 0.0f); public var m_pB :

python類相關總結持續更新

屬於 模塊 error pan 類成員 pro 相關 ror __str__ __init__   構造函數 __dict__   vars()函數,獲取命名空間裏面的名稱 __str__   str()函數,輸出成員相關信息的內容 __repr__   repl()函數,

資源列表下載不斷更新

5% images splay rar http bsp jpg get 資源 [中譯本][算法精解:C語言描述]源代碼 http://files.cnblogs.com/files/hdu-2010/[中譯本][算法精解:C語言描述]源代碼.rar 資源列表下載

C++編程規範不斷更新

系統 must 那是 一點 class xxx 編程規範 自己 ++ 本文總結一些經驗教訓,以使編出來的代碼更為健壯。 1、定義類/結構體的時候不要和系統函數沖突(尤其是不同系統/平臺之間移植的時候)   有時候在windows系統下編譯沒問題,但是在linux系統下就

tensorflow安裝調試總結持續更新

做的 更新 但我 secure 軟件 tar -o cal ipconfig 這段時間需要部署tensorflow到linux上,由於堡壘機不能連外網,所以pip、apt-get、wget、git統統不能用,然後就是各種調試了,下面整理了一些遇到的問題和解決方案,供大家參考

HttpSession的一點總結持續更新

ida https 服務器 一點 生命周期 max false ssi ive 1.HttpSessio的生命周期 1).什麽時候創建HttpSession對象 JSP:若當前的JSP是客戶端訪問的WEB應用的第一個資源,且JSP的page指定的session屬性為fal

selenium總結持續更新

blog elif wait sele code class nts span 語句 1.怎麽 判斷元素是否存在? 如果這個元素不存在, 就會拋出NoSuchElementException,可以通過使用try catch,如果catch到NoSuchElementExce

24.C語言最全排序方法小結不斷更新

http 希爾 找到 sin -s arr span 計算機 gpo 希爾排序: 該方法的基本思想是:先將整個待排元素序列切割成若幹個子序列(由相隔某個“增量”的元素組成的)分別進行直接插入排序,然後依次縮減增量再進行排序,待整個序列中的元素基本有序(增量足夠小)時,再對全

《算法 4th》程序運行相關問題不斷更新

blank .html 4th binarys 程序包 blog lan log div 2018.3.9 1. 示例代碼都未導入作者自己開發的庫,需要添加相關導入:   import edu.princeton.cs.algs4.*;   如:import edu.pri

IDEA學習系列之剖析IDEA裏的Code Style適合各種語言不斷更新圖文詳解

ESS javascrip 挖掘 python pre scrip 學習 裏的 yaml   不多說,直接上幹貨!   File -> Settings -> Editor -> Code Style

Python Selenium 常用方法總結不斷補充

hand 常用方法 ctrl str 但是 最後一個元素 orm 選擇 輸入 還有此篇內容也豐富Selenium常見元素定位方法和操作的學習介紹 selenium Python 總結一些工作中可能會經常使用到的API。 1.獲取當前頁面的Url 方法:current_u

臨時記錄不斷更新

mage extension min home mis \n war tel -s 1、查看windows的激活狀態(CMD下) slmgr.vbs -dlv slmgr.vbs -dli 2、virtual box安裝報錯 安裝擴展包 C:/vbox/Orac

linux常用命令不斷更新

1、下載對應資料夾下的所有檔案 scp -r [email protected]:/data/notebooks/test/file/s ./file/s 2、代理 vim ~/.zshrc alias proxy='export all_proxy=so

長距離單曆元非差GNSS網路RTK理論與方法總結長期更新

1.狀態空間: 狀態空間是控制工程中的一個名詞。狀態是指在系統中可決定系統狀態、最小數目變數的有序集合。    而所謂狀態空間則是指該系統全部可能狀態的集合。簡單來說,狀態空間可以視為一個以狀態變數為座標軸的空間,因此係統的狀態可以表示為此空間中的一個向量。  狀