章節列表
之一:ARM彙編語言開篇
之二:C/C++程序生成ARM彙編程序的過程分析
之三:ARM彙編語言程序結構
之四:ARM處理器的尋址方式
之五:ARM指令集與Thumb指令集
之六:NEON指令集與VFP指令集
寫在前面:本篇文章旨在大致介紹下ARM指令集的相關內容,這裡也同時提供一個有詳細解釋和用例的待書籤的PDF版本,方便大家查閱。
ARM指令集詳解
指令集是處理器的核心,ARM指令的基本格式如下所示:
opcode {cond}{S}{.W\.N}Rd, Rn{.operand2}
一 跳轉指令
1.1 B
跳轉指令。
1.2 BL
帶連結的跳轉指令。
1.3 BX
帶狀態切換的跳轉指令。
二 存儲器訪問指令
2.1 LDR
從存儲器中加載數據到寄存器。
2.2 STR
存儲數據到指定的存儲單元。
2.3 LDM
從指定的存儲單元加載多個數據到一個寄存器列表。
2.4 STM
將一個寄存器列表的數據的數據存儲到指定的存儲單元。
2.5 PUSH
將寄存器推入滿遞減堆棧。
2.6 POP
從遞減堆棧中彈出數據到寄存器。
2.7 SWP
用於寄存器和存儲器之間的數據交換。
三 數據處理指令
將8位立即數或寄存器裡的內容送到目標寄存器中。
將8位立即數或寄存器裡的內容按位取反後送到目標寄存器中。
加法指令。
帶進位的加法指令。
減法指令。
逆向減法指令。
帶進位的減法指令。
帶進位的逆向減法指令。
乘法指令。
有符號數除法指令。
無符號數除法指令。
算術右移指令。
邏輯與指令。
邏輯或指令。
異或指令。
位清除指令。
邏輯左移指令。
邏輯右移指令。
循環右移指令。
帶擴展的循環右移指令。
位測試指令。
四 其他指令
軟中斷指令。
空操作指令。
讀狀態寄存器指令。
寫狀態寄存器指令。