存储器和寄存器数据传输(ARMv8)
生活随笔
收集整理的這篇文章主要介紹了
存储器和寄存器数据传输(ARMv8)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
存儲器和寄存器交互操作(ARMv8)
1.為什么需要存儲器和寄存器交互操作?
- 編程語言中可能有數組和結構體這樣復雜的數據結構。處理器只能保存少量數據到寄存器,但是可以存儲器中放數十億數據,因此數據結構存在存儲器中。
- LEGv8指令只對寄存器操作,因此必須還得有在寄存器和存儲器之間傳數據的指令。
2.怎么交互?
- 取數指令:LDUR,將數據從存儲器復制到寄存器。
- 存數指令:STUR,將寄存器數據存到存儲器中。
- 基址寄存器、偏移量:用來找到存儲器指定數據的地址。
3.例子:
變量h存在寄存器X21,數組A基址存在X22,寫A[12] = h + A[8]匯編代碼:
LDUR X9,[X22,#64]//A[8]放到X9 //偏移量是8*8因為按字節編址,相鄰雙字地址相差8. ADD X9,X21,X9STUR X9,[X22,#96]//X9放到A[12]總結
以上是生活随笔為你收集整理的存储器和寄存器数据传输(ARMv8)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 对象引用传递
- 下一篇: android中shape资源定义,An