Thumb指令集

發布時間:2023-11-28
thumb指令集可以看做arm指令集的一個子集,其用于支持存儲系統數據總線為16位的應用系統。thumb指令長度為16位,這樣,與32位的arm指令集相比,有效地節省了系統的存儲空間。但thumb指令集中的數據處理指令的操作數仍然是32位的,指令尋址地址也是32位的。
在實際應用中,若對系統的性能有較高要求,則選arm指令集和32位的memory;若對系統的功耗有較高要求時,則選thumb指令集和16位的memory;一般將兩者混合使用,根據系統不同部分的不同需求,選用合適的指令,發揮兩者的優勢。
thumb指令集由數據處理指令、跳轉指令、load/store指令和軟件中斷指令4大類構成。
數據處理指令 格 式 功 能
mov rd,imm_8; rd=imm_8;rd為r0~r7,imm_8為8位立即數
mov rd,rn; rd=rn;rd、rn為r0~r15
mvn rd,rn; rd=~rn;rd、rn為r0~r7
neg rd,rn; rd=-rn;rd、rn為r0~r7
add rd,rn,imm; rd=rn+imm;rd為r0~r7,rn為r0~r7或pc或sp;
rn為pc或sp時,imm為10位立即數;
否則,imm為3位立即數
add rd,rn,rm; rd=rn+rm;rd、rn、rm為r0~r7
add rd,imm; rd=rd+imm;rd為r0~r7或sp
rd為sp時,imm為-508~+508間的4整數倍的數
否則,imm為8位立即數
add rd,rn; rd=rd+rn;rd、rn為r0~r15
adc rd,rn; rd=rd+rn+carry;rd、rn為r0~r7,carry為進位標志值
sub rd,rn,imm_3; rd=rn-imm_3;rd、rn為r0~r7,imm_3為3位立即數
sub rd,rn,rm; rd=rn-rm;rd、rn、rm為r0~r7,
sub rd,imm; rd=rd-imm;rd為r0~r7或sp
rd為sp時,imm為-508~+508間的4整數倍的數
否則,imm為8位立即數
sbc rd,rn; rd=rd-rn-!carry;rd、rn為r0~r7,carry為進位標志值
mul rd,rn; rd=rd×rn;rd、rn為r0~r7
and rd,rn; rd=rd&rn;rd、rn為r0~r7
orr rd,rn; rd=rd|rn;rd、rn為r0~r7
eor rd,rn; rd=rd^rn;rd、rn為r0~r7
bic rd,rn; rd=rd&(~rn);rd、rn為r0~r7
asr rd,rn; rd=rd算術右移rn位;rd、rn為r0~r7
asr rd,rn,imm_5; rd=rn算術右移imm_5位;rd、rn為r0~r7,
imm_5為1~32間的數值
lsl rd,rn; rd=rd邏輯左移rn位;rd、rn為r0~r7
lsl rd,rn,imm_5; rd=rn邏輯左移imm_5位;rd、rn為r0~r7
lsr rd,rn; rd=rd邏輯右移rn位;rd、rn為r0~r7
lsr rd,rn,imm_5; rd=rn邏輯右移imm_5位;rd、rn為r0~r7
ror rd,rn; rd=rd循環右移rn位;rd、rn為r0~r7
cmp rn,rm; 根據rn-rm的值,修改cpsr的狀態標志位;
rn、rm為r0~r7
cmp rn,imm_8; 根據rn-imm_8的值,修改cpsr的狀態標志位;
rn為r0~r7
cmn rn,rm; 根據rn+rm的值,修改cpsr的狀態標志位;
rn、rm為r0~r7
tst rn,rm; 根據rn&rm的值,修改cpsr的狀態標志位;
rn、rm為r0~r7
跳轉指令 格 式 功 能
b{cond} label pc=label;
若有cond,則label必須在當前指令的-256~+256字節范圍內;
否則,label必須在當前指令的-2kb~+2kb范圍內
bl label r14=pc+4,pc=label;
label必須在當前指令的-4mb~+4mb范圍內
bx rn pc=rn,且切換處理器狀態
load/store指令 格 式 功 能
ldr rd,[rn,imm]; rd=地址(rn+imm)中的字數據;rd為r0~r7,rn為r0~r7或sp或pc;若rn為pc或sp,imm為5位立即數,否則imm為8位立即數
ldr rd,[rn,rm]; rd=地址(rn+rm)中的字數據;rd、rn、rm為r0~r7
ldrh rd,[rn,imm_5]; rd=地址(rn+imm_5)中的無符號半字數據;rd、rn為r0~r7,imm_5為5位立即數
ldrh rd,[rn,rm]; rd=地址(rn+rm)中的無符號半字數據;rd,rn,rm為r0~r7
ldrb rd,[rn,imm_5]; rd=地址(rn+imm_5)中的無符號字節數據;rd、rn為r0~r7
ldrb rd,[rn,rm]; rd=地址(rn+rm)中的無符號字節數據;rd,rn,rm為r0~r7
ldrsh rd,[rn,rm]; rd=地址(rn+rm)中的有符號半字數據;rd,rn,rm為r0~r7
ldrsb rd,[rn,rm]; rd=地址(rn+rm)中的有符號字節數據;rd,rn,rm為r0~r7
ldr rd,label; rd=地址(label)中的字數據;rd為r0~r7
str rd,[rn,imm]; 地址(rn+imm)處的字數據=rd;rd為r0~r7,rn為r0~r7或sp或pc;若rn為pc或sp,imm為5位立即數,否則imm為8位立即數
軟件中斷指令 格 式 功 能
swi 8位立即數 8位立即數為中斷號
上一個:如何將安卓的數據傳到蘋果上(如何把安卓數據導入iphone)
下一個:oppoa59怎么看像素,oppoa59像素從哪里看

電腦鍵盤功能基礎知識打字手勢,電腦打字手該在鍵盤上怎么放
如何快速學會26鍵打字,怎么才能學會打26鍵
哪些苗木適合室內無土栽培法?
導致開關插座引發火災的十大隱患
常見海魚的種類圖片和名字,海魚 種類 快點 多少個都行
win11 分盤,惠普win11分盤
復合地板主材計算方法有哪些?
沙糖桔的運輸要求與方式
魅族2手電筒怎么打開,魅族MX2 37自帶手電筒在哪
iphone官網怎么查找序列號(進入iphone官網查序列號蘋果官網)
日韩免费Av中文字幕人妻_黃色AV片三級三級三級免费看_精品国产sm最大网站在线_国产综合色产免费视频_亚洲精品无码毛毛毛.....