特此聲明 |
---|
本文不是作者原著,只是做的讀書筆記 |
ARM指令長度概述
32 bits 長 (ARM狀態下) 16 bits 長 (Thumb狀態)
ARM7TDMI 支持3種數據類型 : 字節(8-bit) 、半字 (16-bit)、字(32-bit) , 字必須被排成4個字節邊界對齊, 半字必須被排列成2個字節邊界對齊
向后兼容 : 新版本增加指令, 并保持指令向后兼容;
Load-store結構 : load/store 從存儲器中讀取某個值, 操作完后再將其放回存儲器中; 只對存放在寄存器的數據進行處理; 對于存儲器中的數據, 只能使用load/store指令進行存取;
簡介
具有32位ARM指令集和16位Thumb指令集, ARM指令集效率高, 代碼密度低, Thumb指令集有較高的代碼密度;
一. ARM處理器尋址方式
1. 寄存器尋址
如 :
MOV R1, R2 //將R2的值存入R1中;
R1叫:寄存器編號, R1所在位置叫: 地址碼字段
2. 立即尋址
立即尋址指令中: 操作碼
字段后面的地址碼部分既是操作數本身
, 也就是說, 數據就是包含在指令當中, 取出指令也就取出了可以立即使用的操作數(立即數
)
如:
SUBS R0,R0,#1; //R0減1, 結果放入R0, 并且影響
標志位 what?(暫時不理解, 有個單獨的寄存器標記進位,溢出)
MOV R0,#0xFF000; //將立即數0xFF000裝入R0寄存器