|
void main(){
int a[3][3]={{1,1,1},{2,2,2},{3,3,3}};
int b[3][3]={{3,3,3},{2,2,2},{1,1,1}};
int c[3][3];
myfunction(a,b,c);
}
/*3*3 矩阵相乘*/
int myfunction(int a[3][3],int b[3][3],int c[3][3])
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
c[j]=a[0]*b[0][j]+a[1]*b[1][j]+a[2]*b[2][j];
printf("%d ",c[j]);
}
}
return 0;
}
在我的机器上,32位VS2008+32位VISTA汇编是,此时是debug未优化模式:
013810D0 /$ 55 push ebp
013810D1 . 8BEC mov ebp, esp
013810D3 . 83EC 6C sub esp, 6C
013810D6 . C745 DC 01000>mov dword ptr [ebp-24], 1
013810DD . C745 E0 01000>mov dword ptr [ebp-20], 1
013810E4 . C745 E4 01000>mov dword ptr [ebp-1C], 1
013810EB . C745 E8 02000>mov dword ptr [ebp-18], 2
013810F2 . C745 EC 02000>mov dword ptr [ebp-14], 2
013810F9 . C745 F0 02000>mov dword ptr [ebp-10], 2
01381100 . C745 F4 03000>mov dword ptr [ebp-C], 3
01381107 . C745 F8 03000>mov dword ptr [ebp-8], 3
0138110E . C745 FC 03000>mov dword ptr [ebp-4], 3;初始化数组a
01381115 . C745 B8 03000>mov dword ptr [ebp-48], 3
0138111C . C745 BC 03000>mov dword ptr [ebp-44], 3
01381123 . C745 C0 03000>mov dword ptr [ebp-40], 3
0138112A . C745 C4 02000>mov dword ptr [ebp-3C], 2
01381131 . C745 C8 02000>mov dword ptr [ebp-38], 2
01381138 . C745 CC 02000>mov dword ptr [ebp-34], 2
0138113F . C745 D0 01000>mov dword ptr [ebp-30], 1
01381146 . C745 D4 01000>mov dword ptr [ebp-2C], 1
0138114D . C745 D8 01000>mov dword ptr [ebp-28], 1;初始化数组b
01381154 . 8D45 94 lea eax, dword ptr [ebp-6C]
01381157 . 50 push eax;压入数组c的首地址
01381158 . 8D4D B8 lea ecx, dword ptr [ebp-48]
0138115B . 51 push ecx;压入数组b的首地址
0138115C . 8D55 DC lea edx, dword ptr [ebp-24]
0138115F . 52 push edx;压入数组a的首地址
01381160 . E8 9BFEFFFF call 01381000;调用函数myfunction
01381165 . 83C4 0C add esp, 0C
01381168 . 33C0 xor eax, eax
0138116A . 8BE5 mov esp, ebp
0138116C . 5D pop ebp
0138116D \. C3 retn
|
|