我有以下程序将向量加载到向量寄存器中。
char *buf = (char *)malloc(10);
vector unsigned char t = vec_perm( vec_ld( 0, (unsigned char *)buf),
vec_ld( 15, (unsigned char *)buf),
vec_lvsl( 0, (unsigned char *)buf)
);
如果 buf 在页面结束之前结束,比如让页面从 0 到 4000 地址,缓冲区从 3990 开始。第二个vec_ld
将地址对齐到小于 (3990+15) 的地址,这将是相等的到 4000。
如果从地址 4000 开始的页面没有被映射,上面的程序就会崩溃。
如何避免分段错误?
我所能想到的就是memcpy
在大小小于16字节时将数据从缓冲区复制到向量寄存器。