我为 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]
该函数permute
从一个常规 C 程序调用,其中两个字节指针长度为 128 作为输入。这编译得很好,但是当我运行它时,我得到Illegal instruction
. 如果我注释掉zip1
指令,它也运行良好。
关于可能出现什么问题以及如何进行Illegal instruction
一般调试的任何提示?