我为ARMv8编写了以下程序集:
.text
.align 4
.global permute
.type permute, %function
permute:
ld2 {v0.2d - v1.2d}, [x0], #32
ld2 {v2.2d - v3.2d}, [x0], #32
ld2 {v4.2d - v5.2d}, [x0], #32
ld2 {v6.2d - v7.2d}, [x0]
zip1 v8.2d, v0.2d, v4.2d
st1 {v0.2d - v3.2d}, [x1], #64
st1 {v4.2d - v7.2d}, [x1]
从常规C程序调用函数permute
,其中两个字节长度为128的指针作为输入。编译很好,但是当我运行它时我得到Illegal instruction
。如果我注释掉zip1
指令,它也可以正常运行。
有关可能出错的提示,以及如何调试Illegal instruction
一般?