0

armv8中有两个关于asm汇编的问题。

首先,“无效的向量数量”,我的代码如下。

"prfm   pldl1keep, [%7, #64] \n"
"ld1    {v0.4s, v1.4s, v2.4s, v3.4s, v4.4s, v5.4s}, [%7], #48 \n"

在此处输入图像描述

第二,“不匹配的寄存器大小后缀”。

"prfm   pldl1keep, [%5, #64] \n"
"ld1    {v0.4s, v1.2s}, [%7], #24 \n"

在此处输入图像描述 我直接google了这两个问题,但得到的答案很少。

4

1 回答 1

2

将我的评论(似乎已经回答了这个问题)变成了一个“答案”,这样这个问题就可以解决了。

根据文档ld1最多仅支持 4 个寄存器,而您指定 6 个,这将是一个invalid number of vectors.

至于mismatched register size suffix,文档表明 2 寄存器变体只能使用 #16 或 #32,而不是您提供的 #24。也许不支持不匹配的尺寸?

请注意,我对 ARM 的了解不足,无法评论 OP 解决方案的效率。可能还有其他更好的解决方案。但是,这似乎可以解释两条错误消息的原因。

于 2018-10-08T06:12:23.967 回答