www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 智能硬件 > 智能硬件
[導(dǎo)讀]ARM微處理器的指令集是加載/存儲型的,也即指令集僅能處理寄存器中的數(shù)據(jù),而且處理結(jié)果都要放回寄存器中,而對系統(tǒng)存儲器的訪問則需要通過專門的加載/存儲指令來完成。ARM微處理器的指令集可以分為跳轉(zhuǎn)指令、數(shù)據(jù)處理指令、程序狀態(tài)寄存器(PSR)處理指令、加載/存儲指令、協(xié)處理器指令和異常產(chǎn)生指令六大類。

ARM處理器指令集是加載/存儲型的,也即指令集僅能處理寄存器中的數(shù)據(jù),而且處理結(jié)果都要放回寄存器中,而對系統(tǒng)存儲器的訪問則需要通過專門的加載/存儲指令來完成。ARM微處理器的指令集可以分為跳轉(zhuǎn)指令、數(shù)據(jù)處理指令、程序狀態(tài)寄存器(PSR)處理指令、加載/存儲指令、協(xié)處理器指令和異常產(chǎn)生指令六大類。

ARM助記符指令及其功能描述:ADC帶進(jìn)位加法指令A(yù)DD加法指令A(yù)ND邏輯與指令B跳轉(zhuǎn)指令BIC位清零指令BL帶返回的跳轉(zhuǎn)指令BLX帶返回和狀態(tài)切換的跳轉(zhuǎn)指令BX帶狀態(tài)切換的跳轉(zhuǎn)指令CDP協(xié)處理器數(shù)據(jù)操作指令CMN比較反值指令CMP比較指令EOR異或指令LDC存儲器到協(xié)處理器的數(shù)據(jù)傳輸指令LDM加載多個寄存器指令LDR存儲器到寄存器的數(shù)據(jù)傳輸指令MCR從ARM寄存器到協(xié)處理器寄存器的數(shù)據(jù)傳輸指令MLA乘加運算指令MOV數(shù)據(jù)傳送指令MRC從協(xié)處理器寄存器到ARM寄存器的數(shù)據(jù)傳輸指令MRS傳送CPSR或SPSR的內(nèi)容到通用寄存器指令MSR傳送通用寄存器到CPSR或SPSR的指令MUL32位乘法指令MLA32位乘加指令MVN數(shù)據(jù)取反傳送指令ORR邏輯或指令RSB逆向減法指令RSC帶借位的逆向減法指令SBC帶借位減法指令STC協(xié)處理器寄存器寫入存儲器指令STM批量內(nèi)存字寫入指令STR寄存器到存儲器的數(shù)據(jù)傳輸指令SUB減法指令SWI軟件中斷指令SWP交換指令TEQ相等測試指令TST位測試指令。

一、指令、偽指令

指令:是機器碼的助記符,經(jīng)過匯編器編譯為機器碼后,可以由CPU執(zhí)行。

偽指令:用來指導(dǎo)匯編器編譯指令,是匯編器的產(chǎn)物,終不會生成機器碼。

二、ARM指令的編寫風(fēng)格

匯編代碼大寫:在Windows中的IDE開發(fā)環(huán)境中一般都大寫。

匯編代碼小寫:在Linux環(huán)境中,好遵循GNU風(fēng)格,即指令一般用小寫。

三、ARM匯編代碼文件后綴的大小寫問題

Windows環(huán)境:因為Windows不區(qū)分大小寫,所以匯編文件后綴大寫、小寫編譯過程沒有區(qū)別,即test.S與test.s編譯結(jié)果一致。

Linux環(huán)境:Linux環(huán)境是嚴(yán)格區(qū)分大小寫的,test.S與test.s會被當(dāng)成不同的文件來處理(處理過程也不一致)。后綴小寫的test.s文件,在編譯階段不進(jìn)行預(yù)處理操作,所以不能在這里面寫預(yù)處理的語句(不能有宏定義等,不常用);后綴大寫的test.S文件,會進(jìn)行預(yù)處理、匯編等操作,所以我們可以在這里面加入預(yù)處理的命令(比較常用)。

四、ARM匯編指令的格式

ARM匯編指令的格式比較固定、簡單,即是:“操作碼目標(biāo)寄存器,操作數(shù)1,操作數(shù)2,……操作數(shù)n”。

例如將十六進(jìn)制數(shù)0xaf放到寄存器r0中,我們用匯編代碼可以這樣寫“mov r0,#0xaf”。這里的“mov”就是操作碼(指令),實現(xiàn)的功能是將“0xaf”這個數(shù)存放到寄存器中“r0”中,“r0”也即是目標(biāo)寄存器,“#0xaf”也即是操作數(shù)。在這里,“#0xaf”表示立即數(shù)(立即尋址方式指令中給出的數(shù)稱為立即數(shù)立即數(shù),亦即是直接參與運算不需處理的數(shù)),立即數(shù)需要用“#”來標(biāo)識。

五、常用GNU偽指令

global _start @ 給_start外部鏈接屬性

.section .text @ 指定當(dāng)前段為代碼段

.ascii .byte .short .long .word

.quad .float .string @ 定義數(shù)據(jù)

.align 4 @ 以4字節(jié)對齊

.balignl 16 0xabcdefgh @ 16字節(jié)對齊填充

.equ @ 類似于C中宏定義

.end @標(biāo)識文件結(jié)束

.include @ 頭文件包含

.arm / .code32 @聲明以下為arm指令

.thumb / .code16 @聲明以下為thubm指令

ldr 大范圍的地址加載指令

adr 小范圍的地址加載指令

adrl 中等范圍的地址加載指令

nop 空操作

六、常用指令后綴

同一指令經(jīng)常附帶不同后綴,變成不同的指令。經(jīng)常使用的后綴有:

1、B(byte)功能不變,操作長度變?yōu)?位

2、H(half word)功能不變,長度變?yōu)?6位

3、S(signed)功能不變,操作數(shù)變?yōu)橛蟹?

4、條件執(zhí)行后綴

5、“!”與“^”的作用

例如ldr可以加“b”、“h”、“s”變成 ldrb、ldrh、ldrsb、ldrsh用于表示加載8bit數(shù)據(jù)、16bit數(shù)據(jù)、有符號8bit數(shù)據(jù)、有符號16bit數(shù)據(jù)。

ARM指令條件執(zhí)行后綴,特點是條件后綴是否成立取決于當(dāng)前代碼的前面的代碼,只影響當(dāng)前代碼的執(zhí)行。

聲明:該篇文章為本站原創(chuàng),未經(jīng)授權(quán)不予轉(zhuǎn)載,侵權(quán)必究。
換一批
延伸閱讀

9月10日消息,在最近的高盛Communacopia +科技大會上,Intel副總裁John Pitzer透露了Intel在x86和IFS計劃方面的一些新細(xì)節(jié)。

關(guān)鍵字: Intel 處理器

在當(dāng)今的高性能計算領(lǐng)域,確保處理器、存儲和加速器之間快速可靠的通信對系統(tǒng)性能和可擴(kuò)展性至關(guān)重要。因此,就誕生了Compute Express Link?(CXL?)標(biāo)準(zhǔn):其目標(biāo)是實現(xiàn)一致的內(nèi)存訪問、低延遲的數(shù)據(jù)傳輸,以及...

關(guān)鍵字: 芯片設(shè)計 處理器 加速器

9月9日消息,Intel宣布了一系列重大人事調(diào)整,涉及數(shù)據(jù)中心事業(yè)部(DCG)、客戶端計算事業(yè)部(CCG)以及新成立的中央工程事業(yè)部(CEG)。

關(guān)鍵字: Intel 處理器

在半導(dǎo)體行業(yè)的風(fēng)云變幻中,英特爾公司近來可謂麻煩不斷。

關(guān)鍵字: 英特爾 半導(dǎo)體 處理器

9月2日消息,Intel近日坦承,自家高端桌面CPU競爭力不如AMD的銳龍9000系列,但強調(diào)Panther Lake系列將按計劃在今年內(nèi)上市,同時下一代Nova Lake將全力反擊。

關(guān)鍵字: Intel 處理器

8月26日消息,據(jù)報道,美國政府不僅通過股權(quán)投資Intel,還積極協(xié)助其在美國本土生產(chǎn)先進(jìn)芯片,包括主動聯(lián)系潛在主要客戶,以提振其晶圓代工業(yè)務(wù)。

關(guān)鍵字: Intel 處理器

ARM系統(tǒng)幾乎都采用Linux的操作系統(tǒng),而且?guī)缀跛械挠布到y(tǒng)都要單獨構(gòu)建自己的系統(tǒng),與其他系統(tǒng)不能兼容,這也導(dǎo)致其應(yīng)用軟件不能方便移植,這一點一直嚴(yán)重制約了ARM系統(tǒng)的發(fā)展和應(yīng)用。GOOGLE開發(fā)了開放式的Andro...

關(guān)鍵字: Linux x86 ARM

8月21日消息,據(jù)報道,Intel正在開發(fā)的新一代AI芯片Jaguar Shores近日首次得到曝光。

關(guān)鍵字: Intel 處理器
關(guān)閉