1
在Visual Studio 2010專業版(86,視窗7):爲什麼我們爲每個變量分配12個字節?
... more
00DC1362 B9 39 00 00 00 mov ecx,39h
00DC1367 B8 CC CC CC CC mov eax,0CCCCCCCCh
00DC136C F3 AB rep stos dword ptr es:[edi]
20: int a = 3;
00DC136E C7 45 F8 03 00 00 00 mov dword ptr [ebp-8],3
21: int b = 10;
00DC1375 C7 45 EC 0A 00 00 00 mov dword ptr [ebp-14h],0Ah
22: int c;
23: c = a + b;
00DC137C 8B 45 F8 mov eax,dword ptr [ebp-8]
00DC137F 03 45 EC add eax,dword ptr [ebp-14h]
00DC1382 89 45 E0 mov dword ptr [ebp-20h],eax
24: return 0;
通知如何相對尋址變量A和B不被的4字大小一致? 這裏發生了什麼?
另外,爲什麼我們跳過$ ebp-8?
關閉優化將顯示理想的尋址方案。
有人能解釋一下原因嗎?謝謝。
每個變量的偏移量是12個字節。 A - > B - > C 我犯了一個錯誤。我的意思是爲什麼我們跳過前8個字節。
跳轉到'[ebp-8]'可能有很多原因,例如,該功能可能需要保存被保存的寄存器。顯示功能序言。 – chill