【发布时间】:2020-12-07 18:54:01
【问题描述】:
我正在学习如何使用霓虹灯在 armv8 程序集中进行编程。 此代码可以编译,但在运行时冻结。
第一部分是创建变量的地方(array1),第二部分(Main)是代码开始的地方,就像入口点一样。
.data
array1: .word 30,70
ASM_FUNC(TEST)
.text
Main:
mov x0,#11
ldr x2,=array1
LD1 {V0.2D}, [x2]
ST1 {V0.2D}, [x0], #16
ret
这是调用它的 C 代码
int TEST();
int main(void)
{
printf("========== ASM Started ==========\n");
long int ff = TEST();
printf("=========== ASM has finished successfully ===========\n");
return 0;
}
你看...它打印“ASM 已启动”,但从未到达“Asm 已完成”。当我评论ST1 {V0.2D}, [x0], #16 时,它工作得很好,但是当然,代码并没有做我需要它做的事情。
所以,我的问题是:我在这行代码中做错了什么?我是否以错误的方式分配了我的向量?我是不是用错了偏移量?
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: assembly arm arm64 neon armv8