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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

汇编指令的学习1——ARM汇编的特点

發布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 汇编指令的学习1——ARM汇编的特点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

以下內容源于朱友鵬《物聯網大講堂》的課程學習,如有侵權,請告知刪除。


1、指令和偽指令

  • 指令是CPU機器指令的助記符,經過編譯(匯編器加工)后會得到一串10組成的機器碼,可以由CPU讀取執行。
  • 偽指令本質上不是指令(只是和指令一起寫在代碼中),它是編譯器環境提供的,目的是用來指導編譯過程,經過編譯后偽指令最終不會生成機器碼。

2、兩種不同風格的ARM指令

  • ARM官方的ARM匯編風格:指令一般用大寫、Windows中IDE開發環境(如ADS、MDK等)常用。如: LDR R0, [R1]
  • GNU風格的ARM匯編:指令一般用小寫字母、linux中常用。如:ldr r0, [r1]
3、ARM匯編的特點

(1)ARM匯編特點1:LDR/STR架構

  • ARM采用RISC架構,CPU本身不能直接讀取內存,而需要先將內存中內容加載入CPU中通用寄存器中才能被CPU處理。
  • ldr(load register)指令將內存內容加載入通用寄存器。
  • str(store register)指令將寄存器內容存入內存空間中。
  • ldr/str組合用來實現 ARM CPU和內存數據交換。
  • ldr r0,[r1] ?和 str r0,[r1],注意前者是向左,后者是向右。
(2)ARM匯編特點2:8種尋址方式(寄存器之間用mov,內存和寄存器之間用ldr和str)

  • 寄存器尋址 mov r1, r2 ? ? ? ? ? ? ? @把r2中的內容賦給r1
  • 立即(數)尋址 mov r0, #0xFF00 ? @#后面直接加數字,#表示后面的是數字
  • 寄存器移位尋址 mov r0, r1, lsl #3 ? @把r1左移3位后,賦給r0
  • 寄存器間接尋址 ldr r1, [r2] ? ? ? ? ? ? ? ?@r2存的內容是一個地址,[r2]表示該地址的內容。即r2相當指針,[r2]相當指針解引用。
  • 基址變址尋址 ldr r1, [r2, #4] ? ? ? ? @r2存的內容是一個地址,該地址加上4,才是真正的地址
  • 多寄存器尋址 ldmia r1!, {r2-r7, r12} @r1相當于數組名,將以其為開始的內容,分別存入后面的寄存器中。
  • 堆棧尋址 stmfd sp!, {r2-r7, lr} ? ?@類似于上述。
  • 相對尋址 ? ? ? ? beq flag @flag表示標號,表示一個入口點。用pc和相對偏移量,故叫相對尋址。
(3)ARM匯編特點3:指令后綴,同一指令經常附帶不同后綴,變成不同的指令。經常使用的后綴有:
  • B(byte)功能不變,操作長度變為8位
  • H(half word)功能不變,長度變為16位
  • S(signed)功能不變,操作數變為有符號,如ldr ldrb ldrh ldrsb ldrsh(一般都用ldr,操作長度是4字節)
  • S(S標志)功能不變,影響CPSR標志位,如mov和movs,movs r0, #0@這指令會影響標志位(只要最后運算結果為0,那么z就會為1)
(4)ARM匯編特點4:條件執行后綴

  • 如下面例子:


  • 條件后綴是否成立,取決于該句代碼的前一句代碼的運行結果。(如果標志z=1,那么該句代碼執行(相對這個例子來說))
  • 條件后綴決定了本句代碼是否執行,而不會影響上一句代碼。
  • 下面常用的是EQ,NE,如beq就是b和eq的組合。



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




總結

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

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