PLD在arm cortex a9中的应用

发布于 2024-10-21 14:22:58 字数 187 浏览 1 评论 0原文

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

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

我收到以下错误:

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

I am trying to use PLD instruction. The problem I am facing is as follows:

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

I am getting following error:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

苦行僧 2024-10-28 14:22:58

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

The address used by the preload instruction needs to be in a register.
addr is a variable (memory location), not a register.

趁微风不噪 2024-10-28 14:22:58
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 位浮点大小的条目。

int32_t addr[10];
asm ("PLD [%[ADDR],#5] \n\t"
:
: [ADDR]"r"(addr)
); 

Give the thing a name in the registers list, and then specify it like shown. 5 is a strange number to use for prefetch. Most PC will be working with sizes of 32 etc...

When using pld, the size of each line in memory is apparently 64 bytes for the arm chips in ipad and ipad2. So to pld most efficiently it would probably work best to do 1 pld for a 64 byte size range and then unroll the loop to cover just that range if that is the type of code being programmed.

For example you might move through sixteen 32 bit float sized entries for each pld.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文