arm cache line,PLD指令


C中嵌入匯編PLD指令:asm("PLD [%0,#128]": :"r" (psrc) );

copy自官方文檔:

4.2.7. PLD、PLDW 和 PLI

預載數據和預載指令。 處理器可向內存系統發送信號,告訴內存系統在不久的將來可能要從某個地址加載數據或指令。

語法

PLtype{cond} [Rn {, #offset}]
PLtype{cond} [Rn, +/-Rm {, shift}]
PLtype{cond} label

其中:

type

可以是下列項之一:

D

數據地址

DW

要寫入的數據地址

I

指令地址

如果語法指定了 label,則 type 不能為 DW

cond

是一個可選的條件代碼(請參閱條件執行)。

Note

cond 只能用在 Thumb-2 代碼中,且前面要有 IT 指令。 這是 ARM 中的無條件執行指令,請一定不要使用 cond

Rn

是內存地址所基於的寄存器。

offset

是直接偏移量。 如果省略偏移量,則該地址為 Rn 中的值。

Rm

是一個寄存器,包含要用作偏移量的值。 Rm 不能為 r15。 對於 Thumb 指令, Rm 還不能為 r13。

shift

是一個可選的移位。

label

是一個程序相對的表達式。 有關詳細信息,請參閱相對寄存器和程序相對的表達式

偏移量范圍

預載前,會先將偏移量應用到 Rn 中的值。 所得結果將用作預載的內存地址。 偏移量的允許范圍為:

  • –4095 到 +4095(ARM 指令)

  • –255 到 +4095(適用於 Rn 不是 r15 時的 Thumb-2 指令)。

  • –4095 到 +4095(適用於 Rn 為 r15 時的 Thumb-2 指令)。

匯編器會計算相對 PC 的偏移量。 如果 label 超出范圍,則匯編器會生成錯誤。

寄存器或寄存器移位偏移量

在 ARM 中,Rm 中的值既可與 Rn 中的值相加,也可從其中減去。 在 Thumb-2 中,Rm 中的值只能與 Rn 中的值相加。 所得結果將用作預載的內存地址。

移位的允許范圍為:

  • LSL #0 到 #3(對於 Thumb-2 指令)

  • 對於 ARM 指令,可為以下范圍之一:

    • LSL #0 到 #31

    • LSR #1 到 #32

    • ASR #1 到 #32

    • ROR #1 到 #31

    • RRX

預載的地址對齊

對於預載指令,系統不執行對齊檢查。

體系結構

ARM PLD 可用於 ARMv5TE 及更高版本。

32 位 Thumb PLD 可用於 ARMv6T2 及更高版本。

PLDW 只能用於實現了多重處理擴展的 ARMv7 及更高版本。

PLI 只能用於 ARMv7 及更高版本。

不存在 16 位 Thumb PLDPLDWPLI 指令。

這些是提示指令,其實現是可選的。 如果未實現,則這些指令作為 NOP 執行。

 

參考:http://blog.csdn.net/waverider2012/article/details/8538923


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM