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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ldr加载指令,ldr伪指令

發(fā)布時(shí)間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ldr加载指令,ldr伪指令 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載于http://www.cnblogs.com/hnrainll/archive/2011/06/14/2080241.html


一、ldr作為加載指令

(1)格式為:LDR{條件} ?目的寄存器,<存儲器地址>

(2)LDR指令用于從存儲器中將一個(gè)32位的字?jǐn)?shù)據(jù)傳送到目的寄存器中。

(3)指令示例:

LDR R0,[R1] ? ? ? ? ;將存儲器地址為R1的字?jǐn)?shù)據(jù)讀入寄存器R0。

LDR R0,[R1,R2] ?;將存儲器地址為R1+R2的字?jǐn)?shù)據(jù)讀入寄存器R0。

LDR R0,[R1,#8] ? ;將存儲器地址為R1+8的字?jǐn)?shù)據(jù)讀入寄存器R0。

LDR R0,[R1,R2]!;將存儲器地址為R1+R2的字?jǐn)?shù)據(jù)讀入寄存器R0,并將新地址R1+R2寫入R1。

LDR R0,[R1,#8]! ?;將存儲器地址為R1+8的字?jǐn)?shù)據(jù)讀入寄存器R0,并將新地址R1+8寫入R1。?

LDR R0,[R1],R2 ?;將存儲器地址為R1的字?jǐn)?shù)據(jù)讀入寄存器R0,并將新地址R1+R2寫入R1。

LDR R0,[R1,R2,LSL#2]! ?;將存儲器地址為R1+R2×4的字?jǐn)?shù)據(jù)讀入寄存器R0,并將新地址R1+R2×4寫入R1。

LDR R0,[R1],R2,LSL#2 ?;將存儲器地址為R1的字?jǐn)?shù)據(jù)讀入寄存器R0,并將新地址R1+R2×4寫入R1。

(4)ARM是RISC結(jié)構(gòu),數(shù)據(jù)從內(nèi)存到CPU之間的移動需要通過ldr/str指令。

  • 比如想把數(shù)據(jù)從內(nèi)存中某處讀取到寄存器中,只能使用ldr 。
  • 比如ldr r0, 0x12345678 ,就是把0x12345678這個(gè)地址中的值存放到r0中?

二、ldr偽指令

(1)ARM指令集中,LDR通常都是作加載指令的,但是它也可以作偽指令。

LDR偽指令的形式是“LDR Rn,=expr”。

(2)例子:

COUNT EQU ? ? ? 0x40003100

LDR ? ? ? R1,=COUNT

MOV ? ? ?R0,#0

STR ? ? ? R0,[R1]

  • COUNT是我們定義的一個(gè)變量,地址為0x40003100。
  • LDR ? ? ? R1,=COUNT是將COUNT這個(gè)變量的地址,也就是0x40003100放到R1中。
  • MOV ? ? ?R0,#0是將立即數(shù)0放到R0中。
  • 最后一句STR ? ? ?R0,[R1]是一個(gè)典型的存儲指令,將R0中的值放到以R1中的值為地址的存儲單元去。實(shí)際就是將0放到地址為0x40003100的存儲單元中去。
  • 這三條指令是為了完成對變量COUNT賦值。用三條指令來完成對一個(gè)變量的賦值,跟ARM的采用RISC有關(guān)。

總結(jié)

以上是生活随笔為你收集整理的ldr加载指令,ldr伪指令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。