2

我正在尝试使用 PLD 指令。我面临的问题如下:

int32_t addr[10];
asm ("PLD [addr,#5]");

我收到以下错误:

Error: ARM register expected -- `pld [addr,#5]'
4

2 回答 2

2

预加载指令使用的地址需要在寄存器中。addr 是一个变量(内存位置),而不是一个寄存器。

于 2011-03-12T17:17:03.357 回答
1
int32_t addr[10];
asm ("PLD [%[ADDR],#5] \n\t"
:
: [ADDR]"r"(addr)
); 

在寄存器列表中为事物命名,然后如图所示指定它。5 是一个用于预取的奇怪数字。大多数 PC 将使用 32 等尺寸...

在使用 pld 时,对于 ipad 和 ipad2 中的 arm 芯片,内存中每一行的大小显然是 64 字节。因此,为了最有效地 pld,最好对 64 字节大小范围执行 1 pld,然后展开循环以覆盖该范围(如果这是正在编程的代码类型)。

例如,您可能会为每个 pld 移动 16 个 32 位浮点大小的条目。

于 2011-06-13T22:45:10.587 回答