[Modifié] Est-ce que quelqu'un pourrait m'expliquer comment on obtient les valeurs de M et N dans ce problème, en passant par chaque ligne du code d'assemblage correspondant?Désassemblage IA32 32 bits AT & T code d'assemblage d'une fonction dans C
Je suis toujours coincé à la partie movl array2.
M et N sont des constantes définies à l'aide #define
#define M <some value>
#define N <some value>
int array1[M][N];
int array2[N][M];
int copy(int i, int j)
{
array1[i][j] = array2[j][i];
}
Si le code ci-dessus génère le code assembleur suivant: Comment pouvons-nous en déduire les valeurs des constantes M et N?
copy:
pushl %ebp
movl %esp, %ebp
pushl %ebx
movl 8(%ebp), %ecx
movl 12(%ebp), %ebx
leal (%ecx, %ecx, 8), %edx
sall $2, %edx
movl %ebx, %eax
sall $4, %eax
subl %ebx, %eax
sall $2, %eax
movl array2(%eax, %ecx, 4), %eax
movl %eax, array1(%edx, %ebx, 4)
popl %ebx
movl %ebp,%esp
popl %ebp
ret
Vous attendez-vous vraiment que nous tapons tout cela? Ne postez pas d'images de code! S'il vous plaît, réparez votre question. – ikegami
pourquoi le code comme image ??? –
Que voulez-vous dire quand vous dites "nous obtenons les valeurs de M et N"? Voulez-vous dire 'i' et' j'? – ikegami