我有以下程序将向量加载到向量寄存器。
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开始的页面,则上述程序将崩溃。
如何避免分段错误?
我所能想到的是当大小小于16字节时,使用memcpy
将数据从缓冲区复制到向量寄存器。