Ассемблер ARM Neon + C, как передать и использовать массив указателей

У меня есть функция C, и я хочу загрузить данные из массива указателей, переданных в часть ассемблера. Как это сделать?

float *pointerToBuffer

asm volatile (
   "vld1.32 {q0},[%[buf]] \n\t" 
   : [buf]"+r"(ponterToBuffer)
);

Что, если бы переменная была pointerToPointerToBuffer


person user1132968    schedule 18.09.2013    source источник
comment
Что ты пытаешься сделать? meta.stackexchange.com/a/66378/195751   -  person auselen    schedule 18.09.2013
comment
Помогает ли этот пост?   -  person artless noise    schedule 18.09.2013
comment
asm("vld1.32 {q0}, %0" : : "m"(pointerToBuffer) : "memory"); хотел бы. Если вы хотите передать адрес/ячейку памяти, используйте ограничение "m"(...) и оставьте один уровень скобок.   -  person FrankH.    schedule 19.09.2013


Ответы (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"
);
person TwoCode    schedule 18.09.2013