我正在尝试使用PLD指令。我面临的问题如下:
int32_t addr[10];
asm ("PLD [addr,#5]");
我收到以下错误:
Error: ARM register expected -- `pld [addr,#5]'
答案 0 :(得分:2)
预加载指令使用的地址需要在寄存器中。 addr是一个变量(内存位置),而不是寄存器。
答案 1 :(得分:1)
int32_t addr[10];
asm ("PLD [%[ADDR],#5] \n\t"
:
: [ADDR]"r"(addr)
);
在寄存器列表中为该事物命名,然后如图所示指定它。 5是用于预取的奇怪数字。大多数PC将使用32等大小......
当使用pld时,内存中每一行的大小显然是ipad和ipad2中的arm芯片的64字节。因此,为了最有效率,最好为64字节大小范围做1 pld,然后展开循环以覆盖该范围,如果这是正在编程的代码类型。
例如,您可以为每个pld移动16个32位浮点大小的条目。