日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Arm汇编指令集1

發布時間:2025/6/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Arm汇编指令集1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

匯編指令是CPU指令的助記符,經過編譯后會生成一串10組成的機器碼,可以由CPU讀取執行。

?

匯編偽指令本質上不是偽指令(只是和指令一起寫在代碼中),它是編譯器環境提供的,目的是用來知道編譯過程,經過編譯后偽指令最終不會生成機器碼。

?

ARM匯編特點1:

ARM采用RISC架構,CPU本身不能直接讀取內存,而需要先將內存中的內容加載入CPU中的通用寄存器中才能被CPU處理。

ldr(load register)指令將內存內容加載到通用寄存器中。

str(store?register)指令將通用寄存器內容加載到內存中。

ldr/str組合用來實現ARM CPU和內存數據交換

?

ARM匯編特點2:ARM支持8中尋址方式

寄存器尋址???????????? mov r1,r2

立即尋址????????????????mov r0, #0xff0

寄存器移位尋址????? mov r0, r1, lsl #3

寄存器間接尋址????? ldr r1, [r2]

基址變址尋址???????? ldr r1,[r2,#4]

多寄存器尋址?????????ldmia?r1!,{r2-r7,r12}

堆棧尋址????????????????stmfd?sp!,{r2-r7,lr}

?

相對尋址?????????????? ?beq flag

?????????????????????????flag:

?

?

ARM匯編特點3:指令后綴

同一指令經常附帶不同后綴,編程不同的指令。經常使用的后綴有

B(byte)功能不變,操作長度變為8位

H(half word)功能不變,長度變為16位

S(signed)功能不變,操作數變為有符號

如 ldr ldrb ldrh ldrsb ldrsh

S(S標志)功能不變,影響SPSR標志位

如mov和movs? ?movs r0,#0

?

ARM匯編特點4:條件執行后綴

比如

mov? ? ?r0, r1? ?@相當于C語言中的r0 = r1;

moveq?r0,?r1??@如果eq后綴成立,則直接執行mov?r0?r1;?如果eq不成立,則本句代碼直接作廢,相當于沒有,類似C語言?if(eq)?{mov?r0,?r1}。

1、條件后綴是否成立,不是取決去本句代碼,而是取決于這句代碼之前的代碼運行的后果。

2、條件后綴決定了本句代碼是否被執行,而不會影響上一句和下一句代碼是否被執行。

后綴如下:

?

?

ARM匯編特點5:多級指令流水線

為增加處理器指令流的速度,ARM使用多級流水線。

取址----解碼----執行,這只是簡單的三級流水線,像S5PV210是用13級流水線,ARM11為8級。

?

數據處理指令

數據傳輸指令?:mov?mvn

mov r0,r1

mov r0,#0xff

mov和mvn用法一樣,區別是mov是原封不動地傳遞,而mvn是按位取反后傳遞。

?

算數指令?add? sub? rsb? adc sbc? rsc

邏輯指令?and? orr? ?eor? bic

比較指令?cmp?cmn?tst?teq,注意比較指令不用加S(見ARM匯編特點3)就可以影響cpsr中的標志位。

乘法指令?mvl mla umull nmlal smull smlal

前導零計數????clz

這些指令詳解,直接百度搜就能知道。

?

cpsr訪問指令

mrs和msr

mrs用來讀psr,msr用來寫psr

cpsr和spsr的區別和聯系:cpsr是程序狀態寄存器,整個SoC中只有一個;而spsr有五個,分別在5中異常模式下,作用是當從普通模式進入異常模式時,用來保存普通模式下的cpsr的,以再返回普通模式時恢復cpsr。

?

跳轉指令?b? bl bx

b?????直接跳轉(就沒打算返回)。

bl????branch?and?link,跳轉前把返回地址放入lr中,以便返回,以便于函數調用。

bx????跳轉同時切換到ARM模式,一般用于異常處理的跳轉。

?

訪存指令:

ldr str ldm stm swp

單個字/半字/字節訪問 ldr/str

多字批量訪問????ldm/stm

swp????r1,r2,[r0]????????@把內存中r0存入r1,再把r2存入r0

?

ARM匯編中的立即數:

合法立即數與非法立即數

ARM指令都是32位,除了指令標記和操作標記外,本身只能附帶很少尾數的立即數。因此立即數有合法與非法之分

合法立即數:經過任意位數的移位后非零部分可以用8位表示的即為合法立即數

?

軟終端指令:swi

軟中斷用來實現操作系統中系統調用

轉載于:https://www.cnblogs.com/sanshijvshi/p/10718922.html

總結

以上是生活随笔為你收集整理的Arm汇编指令集1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。