Thumb指令集

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

電腦鍵盤功能基礎知識打字手勢,電腦打字手該在鍵盤上怎么放
如何快速學會26鍵打字,怎么才能學會打26鍵
哪些苗木適合室內無土栽培法?
導致開關插座引發(fā)火災的十大隱患
常見海魚的種類圖片和名字,海魚 種類 快點 多少個都行
win11 分盤,惠普win11分盤
復合地板主材計算方法有哪些?
沙糖桔的運輸要求與方式
魅族2手電筒怎么打開,魅族MX2 37自帶手電筒在哪
iphone官網怎么查找序列號(進入iphone官網查序列號蘋果官網)
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos