PLD在arm cortex a9中的应用
我正在尝试使用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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
预加载指令使用的地址需要位于寄存器中。
addr 是一个变量(内存位置),而不是寄存器。
The address used by the preload instruction needs to be in a register.
addr is a variable (memory location), not a register.
在寄存器列表中为该事物命名,然后按所示指定它。 5 对于预取来说是一个奇怪的数字。大多数 PC 将使用 32 等大小。
当使用 pld 时,对于 ipad 和 ipad2 中的 ARM 芯片,内存中每行的大小显然是 64 字节。因此,为了最有效地进行 pld,最好对 64 字节大小范围执行 1 pld,然后展开循环以覆盖该范围(如果这是正在编程的代码类型)。
例如,您可能会为每个 pld 移动 16 个 32 位浮点大小的条目。
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.