以下代码将相同的数据加载到D16,D17以及D18,D19:
vld1.16 {d16, d17, d18, d19}, [R1, :128]!
我尝试将负载分开,如此
vld1.16 d16, [R1, :64]!
这也将数据加载到d16和d17两次。
这是在Xcode 5.1.1下,目标是iPad 3(ARMv7)。
不相信IDE中的结果,我在lldb中检查了结果,得到了相同的结果。
在lldb中反汇编代码显示了预期的代码。
答案 0 :(得分:3)
这似乎是Xcode中的一个错误。负载实际上正常工作。
如果我使用d寄存器转储内容,我会得到重复的值:
(lldb) register read d16 --format int16_t[]
d16 = {1210 -18 14 -9}
(lldb) register read d17 --format int16_t[]
d17 = {1210 -18 14 -9}
但是,如果我使用q8寄存器(别名为d16和d17)查看该数据,则值看起来正确:
(lldb) register read q8 --format int16_t[]
q8 = {1210 -18 14 -9 23 -9 -14 -18}
所以看起来像LLDB的一个错误需要修复,不要相信它告诉你的d寄存器!