0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

講講ARM指令集格式以及常用的ARM匯編指令

嵌入式那些事 ? 來源:嵌入式那些事 ? 2023-11-08 12:34 ? 次閱讀

對(duì)于搞嵌入式驅(qū)動(dòng)或者操作系統(tǒng)的人來說,掌握匯編語言的使用還是比較重要的,畢竟有時(shí)候在分析定位問題的時(shí)候,多多少少都會(huì)有匯編的身影。本文主要講講ARM指令集格式以及常用的ARM匯編指令(主要包括LDR和STR指令,LDM和STM指令,push和pop指令,MOV指令,CPS指令,MRS和MSR指令,MRC和MCR指令,其余指令暫時(shí)沒列出來,用到時(shí)可以查看ARM手冊進(jìn)行了解)。

ARM指令集格式

ARMv7架構(gòu)是一個(gè)32位的處理器架構(gòu)。同時(shí)ARM架構(gòu)是一個(gè)加載/存儲(chǔ)體系結(jié)構(gòu),所有的數(shù)據(jù)處理操作需要在通用寄存器中完成。

要學(xué)習(xí)了解處理器的匯編指令,那么首先可以看看匯編指令的通用表達(dá)式,具體的指令也就是使用具體的指令和參數(shù)代替通用表達(dá)式的參數(shù)。ARM指令集的指令表達(dá)如下所示:

opcode{}{S} ,  {, }

opcode:指令助記符,比如LDR,STR,MOV等。

{}:大括號(hào)括起來的內(nèi)容表示可選。

<>:<>括起來的內(nèi)容是必須的。

cond:條件碼,比如EQ,NE,CS等,條件碼的內(nèi)容如下圖所示:

b6e541d4-7dee-11ee-939d-92fbcf53809c.png

Snipaste_2023-09-22_20-22-54

b6fb2b20-7dee-11ee-939d-92fbcf53809c.png

Snipaste_2023-09-22_20-25-47

S:可選的后綴,如果指令中添加了S,那么指令的執(zhí)行結(jié)果將會(huì)影響到CPSR寄存器的標(biāo)志位域。

Rd:目標(biāo)寄存器。

Rn:第一個(gè)操作數(shù)寄存器。

Rm:第二個(gè)操作數(shù)寄存器。

在了解了ARM指令的表達(dá)式之后,下面就講講常用的匯編指令。

LDR和STR指令

LDR指令用于從內(nèi)存中讀取數(shù)據(jù)存儲(chǔ)到通用寄存器中。STR指令用于將通用寄存器中的值存儲(chǔ)到內(nèi)存中。LDR指令的語法如下所示:

LDR{type}{T}{cond} Rt, [Rn {, #offset}]
LDR{type}{cond} Rt, [Rn, #offset]!
LDR{type}{T}{cond} Rt, [Rn], #offset
LDR{type}{cond} Rt, [Rn, +/-Rm]
LDR{type}{cond} Rt, [Rn, +/-Rm]!
LDR{type}{T}{cond} Rt, [Rn], +/-Rm

STR指令的語法如下所示:

STR{type}{T}{cond} Rt, [Rn {, #offset}]
STR{type}{cond} Rt, [Rn, #offset]!
STR{type}{T}{cond} Rt, [Rn], #offset
STR{type}{cond} Rt, [Rn, +/-Rm]
STR{type}{cond} Rt, [Rn, +/-Rm]!
STR{type}{T}{cond} Rt, [Rn], +/-Rm

type:操作的數(shù)據(jù)寬度,可以是:B(unsigned byte),SB(signed byte),H(unsigned halfword),SH(signed halfword)。

cond:條件碼。

Rt:目標(biāo)寄存器。

Rn:存儲(chǔ)內(nèi)存操作基地址的寄存器。

Rm:存儲(chǔ)偏移量的寄存器。

offset:立即數(shù)。

!:如果存在,表示最終的地址要寫回Rn。

T:表示處理器是在用戶模式下訪問內(nèi)存地址。

加載存儲(chǔ)指令有4種尋址方式,LDR的操作描述如下(STR指令的操作類似):

寄存器尋址:要尋址的地址存放在寄存器中。

前變基尋址:在內(nèi)存訪問之前,將寄存器中的內(nèi)存地址加上偏移量之后作為新的內(nèi)存地址進(jìn)行內(nèi)存訪問。指令形式為:LDR Rt, [Rn, Op2]。偏移量Op2可以是正數(shù)或者是負(fù)數(shù),可以是一個(gè)立即數(shù),可以是另一個(gè)寄存器的值,可以是另一個(gè)寄存器中的數(shù)據(jù)進(jìn)行移位之后的值。

帶寫回的前變基尋址:指令形式為:LDR Rt, [Rn, Op2]!。該尋址模式和前變基尋址一樣,只是在訪問完內(nèi)存之后Rn寄存器中的值就更新為運(yùn)算之后得到的新內(nèi)存地址的值。

帶寫回的后變基尋址:指令形式為:LDR Rt, [Rn], #offset和LDR Rt, [Rn], +/-Rm。將寄存器Rn中存儲(chǔ)的數(shù)值作為內(nèi)存地址,將該內(nèi)存地址中的數(shù)據(jù)讀出來存儲(chǔ)到Rt寄存器中,然后將內(nèi)存地址加減立即數(shù)offset或者Rm寄存器中的數(shù)值得到新的內(nèi)存地址存儲(chǔ)到Rn寄存器中。

上面說的這些有可能不太好懂,下面簡單的列舉幾個(gè)例子吧:

# 寄存器尋址
# 將R1地址處的數(shù)據(jù)讀出,保存到R0中
LDR R0, [R1]

# 前變基尋址
# 將(R1+0x4)地址處的數(shù)據(jù)讀出,保存到R0中
LDR R0, [R1, #0x4]
# 將(R1-0x4)地址處的數(shù)據(jù)讀出,保存到R0中
LDR R0, [R1, #-0x4]
# 將(R1+R2)地址處的數(shù)據(jù)讀出,保存到R0中
LDR R0, [R1, R2]
# 將((R1+(R2<<2))地址處的數(shù)據(jù)讀出,保存到R0中
LDR R0, [R1, R2, LSL #2]

# 帶寫回的前變基尋址
# 將(R1+R2)地址處的數(shù)據(jù)讀出,保存到R0中,然后更新R1=R1+R2
LDR R0, [R1, R2]!
# 將((R1+(R2<<2))地址處的數(shù)據(jù)讀出,保存到R0中,然后更新R1=((R1+(R2<<2))
LDR R0, [R1, R2, LSL #2]!

# 帶寫回的后變基尋址
# 將R1地址處的數(shù)據(jù)讀出,保存到R0中,然后更新R1=R1+0x4
LDR R0, [R1], #0x4
# 將R1地址處的數(shù)據(jù)讀出,保存到R0中,然后更新R1=R1-0x4
LDR R0, [R1], #-0x4
# 將R1地址處的數(shù)據(jù)讀出,保存到R0中,然后更新R1=R1+R2
LDR R0, [R1], R2
# 將R1地址處的數(shù)據(jù)讀出,保存到R0中,然后更新R1=R1-R2
LDR R0, [R1], -R2

STR指令的操作和LDR指令類似,這里就不列舉了。

LDR偽指令

LDR相關(guān)的偽指令語法如下所示:

# 將數(shù)據(jù) constant 加載到 Rt 寄存器中
LDR Rt, =constant

# 將 label 所代表的地址加載到 Rt 寄存器中
LDR Rt, =label

下面是LDR偽指令簡單的使用:

# 將 0xaa 加載到 R0 寄存器
LDR R0, =0xaa

# 將 _start 所代表的地址加載到 R0 寄存器
LDR R0, =_start

LDM和STM指令

LDM指令用于加載指定地址上的數(shù)據(jù)保存到一個(gè)或者多個(gè)寄存器中。STM指令用于將一個(gè)或者多個(gè)寄存器中的數(shù)據(jù)存儲(chǔ)到指定地址上。LDM和STM指令主要用于現(xiàn)場保護(hù)和數(shù)據(jù)復(fù)制。

LDM指令的語法如下所示:

LDM{addr_mode}{cond} Rn{!},reglist{^}

STM指令的語法如下所示:

STM{addr_mode}{cond} Rn{!},reglist{^}

addr_mode:地址模式,用于數(shù)據(jù)塊傳輸?shù)牡刂纺J?,如下所示?/p>

IA:每次傳送后地址加4。
IB:每次傳送前地址加4。
DA:每次傳送后地址減4。
DB:每次傳送前地址減4。

也可以使用相應(yīng)的面向堆棧的尋址模式,如下所示:

FD:滿遞減堆棧(每次傳送前地址減4)。
ED:空遞增堆棧(每次傳送前地址加4)。
FA:滿遞增堆棧(每次傳送后地址減4)。
EA:空遞增堆棧(每次傳送后地址加4)。

cond:條件碼。

Rn:Rn存儲(chǔ)了用于傳輸?shù)某跏嫉刂贰?/p>

!:如果存在,表示最終的地址要寫回Rn。

reglist:用{}括起來的一個(gè)寄存器或者多個(gè)寄存器組成的列表。它可以是一個(gè)寄存器范圍。如果{}中的寄存器超過一個(gè),那么寄存器或者寄存器范圍之間通過逗號(hào)(,)分隔。

^:如果在除了USR模式和SYS模式下存在該符號(hào),意味著將發(fā)生下述的兩個(gè)動(dòng)作:

當(dāng)寄存器列表中不包含PC時(shí),加載/存儲(chǔ)的是USR模式的寄存器,而不是當(dāng)前模式的寄存器。

在使用LDM指令時(shí),如果寄存器列表中包含PC時(shí),那么除了正常的多寄存器傳送外,會(huì)將SPSR 拷貝到CPSR 中,這可用于異常處理返回。

上面的內(nèi)容可能不是很好理解,下面簡單的列舉寫例子:

LDMIA和STMIA例子

LDMIA例子如下所示:

# IA:每次傳送后地址加4,下面是指令執(zhí)行流程的分解:
# R0=[R1]
# R2=[R1+4]
# R3=[R1+8]
# R4=[R1+12]
LDMIA R1, {R0, R2-R4}

# IA:每次傳送后地址加4,最終地址要寫回R1,下面是指令執(zhí)行流程的分解:
# R0=[R1], R1=R1+4
# R2=[R1], R1=R1+4
# R3=[R1], R1=R1+4
# R4=[R1], R1=R1+4
LDMIA R1!, {R0, R2-R4}

STMIA例子如下所示:

# IA:每次傳送后地址加4,下面是指令執(zhí)行流程的分解:
# [R1]=R0
# [R1+4]=R2
# [R1+8]=R3
# [R1+12]=R4
STMIA R1, {R0, R2-R4}

# IA:每次傳送后地址加4,最終地址要寫回R1,下面是指令執(zhí)行流程的分解:
# [R1]=R0, R1=R1+4
# [R1]=R2, R1=R1+4
# [R1]=R3, R1=R1+4
# [R1]=R4, R1=R1+4
STMIA R1!, {R0, R2-R4}

LDMIB和STMIB例子

LDMIB例子如下所示:

# IB:每次傳送前地址加4,下面是指令執(zhí)行流程的分解:
# R0=[R1+4]
# R2=[R1+8]
# R3=[R1+12]
# R4=[R1+16]
LDMIB R1, {R0, R2-R4}

# IB:每次傳送前地址加4,最終地址要寫回R1,下面是指令執(zhí)行流程的分解:
# R1=R1+4, R0=[R1]
# R1=R1+4, R2=[R1]
# R1=R1+4, R3=[R1]
# R1=R1+4, R4=[R1]
LDMIB R1!, {R0, R2-R4}

STMIB例子如下所示:

# IB:每次傳送前地址加4,下面是指令執(zhí)行流程的分解:
# [R1+4]=R0
# [R1+8]=R2
# [R1+12]=R3
# [R1+16]=R4
STMIB R1, {R0, R2-R4}

# IB:每次傳送前地址加4,最終地址要寫回R1,下面是指令執(zhí)行流程的分解:
# R1=R1+4, [R1]=R0
# R1=R1+4, [R1]=R2
# R1=R1+4, [R1]=R3
# R1=R1+4, [R1]=R4
STMIB R1!, {R0, R2-R4}

LDMDA和STMDA例子

LDMDA例子如下所示:

# DA:每次傳送后地址減4,下面是指令執(zhí)行流程的分解:
# R4=[R1]
# R3=[R1-4]
# R2=[R1-8]
# R0=[R1-12]
LDMDA R1, {R0, R2-R4}

# DA:每次傳送后地址減4,最終地址要寫回R1,下面是指令執(zhí)行流程的分解:
# R4=[R1], R1=R1-4
# R3=[R1], R1=R1-4
# R2=[R1], R1=R1-4
# R0=[R1], R1=R1-4
LDMDA R1!, {R0, R2-R4}

STMDA例子如下所示:

# DA:每次傳送后地址減4,下面是指令執(zhí)行流程的分解:
# [R1]=R4
# [R1-4]=R3
# [R1-8]=R2
# [R1-12]=R0
STMDA R1, {R0, R2-R4}

# DA:每次傳送后地址減4,最終地址要寫回R1,下面是指令執(zhí)行流程的分解:
# [R1]=R4, R1=R1-4
# [R1]=R3, R1=R1-4
# [R1]=R2, R1=R1-4
# [R1]=R0, R1=R1-4
STMDA R1!, {R0, R2-R4}

LDMDB和STMDB例子

LDMDB例子如下所示:

# DB:每次傳送前地址減4,下面是指令執(zhí)行流程的分解:
# R4=[R1-4]
# R3=[R1-8]
# R2=[R1-12]
# R0=[R1-16]
LDMDB R1, {R0, R2-R4}

# DB:每次傳送前地址減4,最終地址要寫回R1,下面是指令執(zhí)行流程的分解:
# R1=R1-4, R4=[R1]
# R1=R1-4, R3=[R1]
# R1=R1-4, R2=[R1]
# R1=R1-4, R0=[R1]
LDMDB R1!, {R0, R2-R4}

STMDB例子如下所示:

# DB:每次傳送前地址減4,下面是指令執(zhí)行流程的分解:
# [R1-4]=R4
# [R1-8]=R3
# [R1-12]=R2
# [R1-16]=R0
STMDB R1, {R0, R2-R4}

# DB:每次傳送前地址減4,最終地址要寫回R1,下面是指令執(zhí)行流程的分解:
# R1=R1-4, [R1]=R4
# R1=R1-4, [R1]=R3
# R1=R1-4, [R1]=R2
# R1=R1-4, [R1]=R0
STMDB R1!, {R0, R2-R4}

現(xiàn)場保護(hù)

在數(shù)據(jù)塊的傳輸中:STMDB和LDMIA對(duì)應(yīng)使用,STMIA和LDMDB對(duì)應(yīng)使用。

在堆棧操作中:STMFD和LDMFD對(duì)應(yīng)使用,STMFA和LDMFA對(duì)應(yīng)使用。

在子程序或者異常處理時(shí),使用LDMFD和STMFD進(jìn)行現(xiàn)場保護(hù)的例子如下:

# 將R0-R7和LR入棧
STMFD SP!, {R0-R7, LR}

# 功能代碼
MOV R0, #0x00
MOV R1, #0x11
MOV R2, #0x22

# 將R0-R7和LR出棧
LDMFD SP!, {R0-R7, LR}

同樣的可以使用STMDB和LDMIA指令進(jìn)行現(xiàn)場保護(hù),因此上述代碼可以修改成下述形式:

# 將R0-R7和LR入棧
STMDB SP!, {R0-R7, LR}

# 功能代碼
MOV R0, #0x00
MOV R1, #0x11
MOV R2, #0x22

# 將R0-R7和LR出棧
LDMIA SP!, {R0-R7, LR}

push和pop指令

push和pop指令主要用于子程序或者異常的現(xiàn)場保護(hù)。push指令用于將寄存器內(nèi)容壓入堆棧。pop指令用于將堆棧中的內(nèi)容恢復(fù)到寄存器中。

push指令的語法如下所示:

PUSH{cond} reglist

pop指令的語法如下所示:

POP{cond} reglist

cond:條件碼。

reglist:用{}括起來的一個(gè)寄存器或者多個(gè)寄存器組成的列表。它可以是一個(gè)寄存器范圍。如果{}中的寄存器超過一個(gè),那么寄存器或者寄存器范圍之間通過逗號(hào)(,)分隔。

push指令等價(jià)于STMDB指令。pop指令等價(jià)于LDMIA指令。

使用push指令和pop指令保護(hù)現(xiàn)場的例子如下所示:

# 將R0-R7和LR入棧
push {R0-R7, LR}

# 功能代碼
MOV R0, #0x00
MOV R1, #0x11
MOV R2, #0x22

# 將R0-R7和LR出棧
pop {R0-R7, LR}

MOV指令

MOV指令主要用于將數(shù)據(jù)搬移到寄存器中。MOV指令的語法如下所示:

MOV{S}{cond} Rn, Rm
MOV{cond} Rn, #imm

S:可選的后綴,如果指令中添加了S,那么指令的執(zhí)行結(jié)果將會(huì)影響到CPSR寄存器的標(biāo)志位域。

cond:條件碼。

Rn:目標(biāo)寄存器。

Rm:源寄存器。

imm:立即數(shù)。

MOV指令的使用例子如下:

# 將 R1 寄存器中的內(nèi)容搬移到 R0 寄存器
MOV R0, R1

# 將 0xaa 搬移到 R0 寄存器
MOV R0, #0xaa

CPS指令

可以通過CPS(Change Processor State)指令來修改處理器模式。CPS指令也可以用來使能或者禁止異常。

CPS指令的語法如下所示:

CPS #mode
CPSIE iflags{, #mode}
CPSID iflags{, #mode}

mode是處理器的模式編碼,比如在從其他模式下切換到SYS模式,使用下述代碼即可:

# 切換到SYS模式
CPS #0x1f

IE使能中斷或者終止。

ID禁止中斷或者終止。

iflags由下面的一種或者幾種組成:

a:表示異步終止(asynchronous abort);

i:表示中斷(IRQ);

f:表示快中斷(FIQ);

下述代碼是CPS指令的一些簡單用法:

# 使能中斷
CPSIE I

# 禁止中斷
CPSID I

# 使能異步終止和快中斷
CPSIE AF

# 禁止異步終止和快中斷
CPSID AF

# 使能中斷并切換到SYS模式
CPSIE I, #0x1f

MRS與MSR指令

MRS和MSR指令可用于讀寫程序狀態(tài)寄存器CPSR,APSR和SPSR。

在ARM處理器中,只有MRS指令可以從程序狀態(tài)寄存器CPSR,APSR和SPSR中讀出數(shù)據(jù)到通用寄存器中。MRS指令操作程序狀態(tài)寄存器的語法如下:

MRS{cond} Rd, psr

cond為條件碼。

Rd為目標(biāo)寄存器,Rd不允許為R15。

psr為程序狀態(tài)寄存器CPSR,APSR或者SPSR。

MRS指令的示例代碼如下所示:

# 將CPSR寄存器的值讀取到R0中
MRS R0, CPSR

# 將SPSR寄存器的值讀取到R1中
MRS R1, SPSR

# 將APSR寄存器的值讀取到R2中
MRS R2, APSR

MSR指令可以用來寫程序狀態(tài)寄存器CPSR,APSR和SPSR的全部或者部分域。MSR指令操作程序狀態(tài)寄存器的語法如下:

MSR{cond} psr, #constant
MSR{cond} psr, Rm
MSR{cond} psr_fields, #constant
MSR{cond} psr_fields, Rm

cond為條件碼。

psr為程序狀態(tài)寄存器CPSR或者SPSR。

constant是一個(gè)8位立即數(shù)。ARM文檔對(duì)于constant的介紹如下:

constant is an 8-bit pattern rotated by an even number of bits within a 32-bit word. (Not available in Thumb.)

Rm是源寄存器。

fields由下面的一個(gè)或者多個(gè)組合而成:

c:xPSR[7:0],控制位域;

x:xPSR[15:8],擴(kuò)展位域;

s:xPSR[23:16],狀態(tài)位域;

f:xPSR[31:24],標(biāo)志位域;

MSR指令的示例代碼如下所示:

# 切換到SYS模式
MRS R0, CPSR
ORR R0, R0, #0x1f
MSR CPSR, R0

# 切換到SYS模式
MSR CPSR_c, #0xDF

只有在除用戶模式外的其他模式下才能夠修改狀態(tài)寄存器。

MRC和MCR指令

ARMv7-A體系結(jié)構(gòu)的處理器提供了MRC和MCR指令用于對(duì)協(xié)處理器進(jìn)行讀寫操作。MRC指令用于將協(xié)處理器中的寄存器數(shù)據(jù)讀取到ARM通用寄存器中。MCR指令用于將ARM通用寄存器中的數(shù)據(jù)寫入到協(xié)處理器的寄存器中。

MRC

MRC指令的語法如下所示:

MRC{cond} coproc, opc1, Rt, CRn, CRm{, opc2}

cond為條件碼。

coproc為協(xié)處理器名稱,CP0~CP15協(xié)處理器分別對(duì)應(yīng)名稱p0~p15。

opc1為協(xié)處理器要執(zhí)行的操作碼,取指范圍為0~7。

Rt為ARM通用寄存器,用于存儲(chǔ)讀取到的協(xié)處理器寄存器數(shù)據(jù)。

CRn為協(xié)處理器寄存器,對(duì)于CP15協(xié)處理器來說,CRn取值范圍為c0~c15。

CRm為協(xié)處理器寄存器,對(duì)于CP15協(xié)處理器來說,通過CRm和opc2一起來確定CRn對(duì)應(yīng)的具體寄存器。

opc2為可選的協(xié)處理器執(zhí)行操作碼,取指范圍為0~7,當(dāng)不需要的時(shí)候要設(shè)置為0。

MRC指令使用示例如下:

# 讀取主ID寄存器 MIDR 的數(shù)據(jù)到 R0 中.
MRC p15, 0, R0, c0, c0, 0

MCR

MCR指令的語法如下所示:

MCR{cond} coproc, opc1, Rt, CRn, CRm{, opc2}

cond為條件碼。

coproc為協(xié)處理器名稱,CP0~CP15協(xié)處理器分別對(duì)應(yīng)名稱p0~p15。

opc1為協(xié)處理器要執(zhí)行的操作碼,取指范圍為0~7。

Rt為ARM通用寄存器,用于存儲(chǔ)要寫入到協(xié)處理器寄存器中的數(shù)據(jù)。

CRn為協(xié)處理器寄存器,對(duì)于CP15協(xié)處理器來說,CRn取值范圍為c0~c15。

CRm為協(xié)處理器寄存器,對(duì)于CP15協(xié)處理器來說,通過CRm和opc2一起來確定CRn對(duì)應(yīng)的具體寄存器。

opc2為可選的協(xié)處理器執(zhí)行操作碼,取指范圍為0~7,當(dāng)不需要的時(shí)候要設(shè)置為0。

MCR指令使用示例如下:

# 將 R0 中的配置數(shù)據(jù)寫入到 SCTLR
MCR p15, 0, R0, c1, c0, 0

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19286

    瀏覽量

    229838
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9097

    瀏覽量

    367552
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6825

    瀏覽量

    123331
  • 匯編指令
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    11458
  • 指令集
    +關(guān)注

    關(guān)注

    0

    文章

    224

    瀏覽量

    23384

原文標(biāo)題:ARMv7-A 那些事 - 6.常用匯編指令

文章出處:【微信號(hào):嵌入式那些事,微信公眾號(hào):嵌入式那些事】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    常用ARM指令集匯編

    常用ARM指令集匯編ARM處理器是基于精簡指令集計(jì)算機(jī)(RISC)原理設(shè)計(jì)的,
    發(fā)表于 11-23 09:38

    常用ARM指令集匯編

    常用ARM指令集匯編
    發(fā)表于 08-08 14:55

    ARM常用指令集

    宛城布衣的 ARM常用指令集
    發(fā)表于 04-22 18:19

    ARM匯編指令集匯編調(diào)用C語言總結(jié)

    常用ARM匯編指令集匯編調(diào)用C語言
    發(fā)表于 03-26 06:58

    常用ARM指令集匯編

    常用ARM指令集匯編
    發(fā)表于 05-15 09:03

    ARM指令集文章集合

    三、指令集如果你想要集中學(xué)習(xí)一下關(guān)于ARM指令集方面的知識(shí)(比如下面幾個(gè)知識(shí)點(diǎn)),可以看下下面的文章1、機(jī)器碼2、運(yùn)算指令3、控制指令4、
    發(fā)表于 09-07 22:06

    常用ARM匯編指令集有哪些?

    常用ARM匯編指令集有哪些?
    發(fā)表于 10-25 07:06

    常用ARM指令集匯編

    常用ARM指令集匯編 好資料,與你供享。只供學(xué)習(xí)!
    發(fā)表于 03-25 16:34 ?74次下載

    ARM指令集下載 arm指令集參考手冊

    ARM指令集下載 arm指令集參考手冊, ARM 指令集 寄存器和處理器模式(26-bi
    發(fā)表于 12-25 09:20 ?118次下載

    常用arm指令集匯編

    常用arm指令集匯編
    發(fā)表于 09-09 14:22 ?34次下載
    <b class='flag-5'>常用</b><b class='flag-5'>arm</b><b class='flag-5'>指令集</b>及<b class='flag-5'>匯編</b>

    arm指令集(1)

    arm指令集(1)  ARM跳轉(zhuǎn)指令可以從當(dāng)前指令向前或向后的32MB地址空間跳轉(zhuǎn)。這類跳轉(zhuǎn)指令
    發(fā)表于 03-02 15:46 ?79次下載

    ARM指令集詳解

    ARM指令集詳解 內(nèi)容提要 ARM指令集 ARM指令集分類與
    發(fā)表于 03-09 09:39 ?263次下載
    <b class='flag-5'>ARM</b><b class='flag-5'>指令集</b>詳解

    常用ARM指令集匯編

    常用ARM指令集匯編
    發(fā)表于 10-30 10:07 ?24次下載
    <b class='flag-5'>常用</b>的<b class='flag-5'>ARM</b><b class='flag-5'>指令集</b>及<b class='flag-5'>匯編</b>

    thumb指令集是什么_thumb指令集arm指令集的區(qū)別

    。thumb不是一個(gè)完整的體系結(jié)構(gòu),不能指望處理器只執(zhí)行thumb指令集而不支持arm指令集。 thumb指令集分為:分支指令、數(shù)據(jù)傳送
    發(fā)表于 11-03 17:34 ?1.8w次閱讀
    thumb<b class='flag-5'>指令集</b>是什么_thumb<b class='flag-5'>指令集</b>與<b class='flag-5'>arm</b><b class='flag-5'>指令集</b>的區(qū)別

    ARM架構(gòu)及ARM指令集 Thumb指令集你了解多少?

    ARM架構(gòu)及ARM指令集、Thumb指令集你了解多少?
    的頭像 發(fā)表于 02-26 16:09 ?7143次閱讀