[GCC] Tableau de pointeurs pour accès multiples en asm
Bonjour,
je développe sous linux avec gcc.
J'essaie une méthode pour avoir accés dans mon block asm à un grand nombre de tableaux. Mais ça kill à l'execution. Le code ressemble à ça.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| // tableaux auxquels je veux avoir accés en lecture / ecriture
unsigned char * a = new unsigned char[256];
unsigned char * b = new unsigned char[256];
unsigned char * c = new unsigned char[256];
// tableaux que je vais utiliser dans le block asm pour avoir accés aux précédents tableaux
unsigned char * ptrTableaux[3];
ptrTableaux[0] = a;
ptrTableaux[1] = b;
ptrTableaux[2] = c;
__asm__
(
"mov 0(%0) , %%ecx \n" // acces à a
"movq (%%ecx) , %%xmm0 \n" // je charge les 16er bytes de a dans xmm0
"mov 1(%0) , %%ecx \n" // acces à b
"movq (%%ecx) , %%xmm0 \n" // je charge les 16er bytes de b dans xmm0
"mov 2(%0) , %%ecx \n" // acces à c
"movq (%%ecx) , %%xmm0 \n" // je charge les 16er bytes de c dans xmm0
: "+r" (ptrTableaux)
); |
Est-ce correct ?
Merci.
Flo.
Re: [GCC] Tableau de pointeurs pour accès multiples en asm
Tu déclares ptrTableaux comme un pointeur vers un tableau de char alors que tu as besoin d'un tableau de pointeur. Et dans le code asm, il faut penser a décaler de 4 octets pour chaque élément de ce tableau.
En corrigeant ça, cela devrait fonctionner :wink: