[편집] 누군가이 문제에서 M과 N의 값을 얻는 방법을 설명해 주시겠습니까? 해당 어셈블리 코드의 각 행을 살펴보십시오.IA32 32 비트 AT & T 어셈블리 코드를 C 언어로 분해합니다
난 항상 movl array2 부분에 난처한 얻을. 어떻게 우리가 상수 M과 N의 값을 추론 않습니다
M과 N은 상수 위의 코드는 다음 어셈블리 코드를 생성하는 경우 #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];
}
을 사용하여 정의됩니다?
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
정말로 모든 것을 입력 할 것으로 기대합니까? 코드 이미지를 게시하지 마십시오! 질문을 수정하십시오. – ikegami
왜 코드 이미지로 ??? –
"우리가 M과 N의 가치를 얻는다"고 말할 때 당신은 무엇을 의미합니까? 'i'와'j'라는 뜻 이었습니까? – ikegami