ARM Neon 汇编器 + C 如何传递和使用指针数组
Posted
技术标签:
【中文标题】ARM Neon 汇编器 + C 如何传递和使用指针数组【英文标题】:ARM Neon assembler + C how can I pass and use array of pointers 【发布时间】:2013-09-18 09:36:00 【问题描述】:我有一个 C 函数,我想从传递给汇编程序部分的指针数组中加载数据。如何做到这一点?
float *pointerToBuffer
asm volatile (
"vld1.32 q0,[%[buf]] \n\t"
: [buf]"+r"(ponterToBuffer)
);
如果变量是pointerToPointerToBuffer怎么办
【问题讨论】:
你想做什么? meta.stackexchange.com/a/66378/195751 this post help?asm("vld1.32 q0, %0" : : "m"(pointerToBuffer) : "memory");
会。如果要传递地址/内存位置,请使用"m"(...)
约束,并保留一层括号。
【参考方案1】:
如果语法允许,我建议多使用一对括号:
asm volatile (
"vld1.32 q0,[[%[buf]]] \n\t"
: [buf]"+r"(ponterToBuffer)
);
如果没有:
asm volatile (
"ldr r1,[%[pointerToBuffer]] \n\t"
"vld1.32 q0,[r1] \n\t"
);
【讨论】:
以上是关于ARM Neon 汇编器 + C 如何传递和使用指针数组的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Neon Extension 有效地反转汇编语言 ARM 中的数组?