В Visual Studio 2010 Professional (x86, Windows 7):
... 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 байтов.