早上好,我正在研究ARM组装,Cortex A系列。阅读ARM文档我发现了本文(Cortex A8,快速memcpy示例)。我注意了PDL指令,预加载到缓存中。我在ARM手册上已经阅读过它,但我仍然不明白为什么偏移是这样的:
WordCopyPLD
PLD [r1, #0x100]
MOV r12, #16
WordCopyPLD1
LDR r3, [r1], #4
STR r3, [r0], #4
SUBS r12, r12, #1
BNE WordCopyPLD1
SUBS r2, r2, #0x40
BNE WordCopyPLD
为什么这种情况下的偏移量是前面的128字节?如果我从R1指向的内存中读取单词16次,我认为前面的字节是4 * 16 = 64。为什么选择128?
与此示例相同的问题:
NEONCopyPLD
PLD [r1, #0xC0]
VLDM r1!,{d0-d7}
VSTM r0!,{d0-d7}
SUBS r2,r2,#0x40
BGE NEONCopyPLD
如果Dn是每个8字节,为什么前面192字节,我每次迭代加载8个寄存器?
感谢您的回答。