|
|
★ 小木虫(金币+0.5):给个红包,谢谢回帖交流
环境 : Intel T2050 @1.6GHz, 2.0GB RAM Mobile Intel 945GM Express Chipset Family
Windows XP SP2 Pro v5.1.2600
Visual Studio 2005 SP1 Team Suit
代码:
#include
using namespace std;
int main()
{
const long l_idx = 0x00010000;
switch(l_idx)
{
case 0x00010000:
cout << "case 1" << endl;
break;
case 0x00000000:
cout << "case 2" <
break;
default:
cout << "error" << endl;
break;
}
return 0;
}
汇编:
--- e:\visual studio 2005\projects\democpp\ex_01\ex_01_02.cpp ------------------
#include
using namespace std;
int main()
{
004114B0 push ebp
004114B1 mov ebp,esp
004114B3 sub esp,0D0h
004114B9 push ebx
004114BA push esi
004114BB push edi
004114BC lea edi,[ebp-0D0h]
004114C2 mov ecx,34h
004114C7 mov eax,0CCCCCCCCh
004114CC rep stos dword ptr es:[edi]
const long l_idx = 0x00010000;
004114CE mov dword ptr [l_idx],10000h
switch(l_idx)
004114D5 mov dword ptr [ebp-0D0h],10000h
004114DF cmp dword ptr [ebp-0D0h],0
004114E6 je main+73h (411523h)
004114E8 cmp dword ptr [ebp-0D0h],10000h
004114F2 je main+46h (4114F6h)
004114F4 jmp main+0A0h (411550h)
{
case 0x00010000:
cout << "case 1" << endl;
004114F6 mov esi,esp
004114F8 mov eax,dword ptr [__imp_std::endl (41A338h)]
004114FD push eax
004114FE push offset string "case 1" (41780Ch)
00411503 mov ecx,dword ptr [__imp_std::cout (41A33Ch)]
00411509 push ecx
0041150A call std: perator<< > (41114Fh)
0041150F add esp,8
00411512 mov ecx,eax
00411514 call dword ptr [__imp_std::basic_ostream >: perator<< (41A320h)]
0041151A cmp esi,esp
0041151C call @ILT+410(__RTC_CheckEsp) (41119Fh)
break;
00411521 jmp main+0CBh (41157Bh)
case 0x00000000:
cout << "case 2" <
00411523 mov esi,esp
00411525 mov eax,dword ptr [__imp_std::endl (41A338h)]
0041152A push eax
0041152B push offset string "case 2" (417804h)
00411530 mov ecx,dword ptr [__imp_std::cout (41A33Ch)]
00411536 push ecx
00411537 call std: perator<< > (41114Fh)
0041153C add esp,8
0041153F mov ecx,eax
00411541 call dword ptr [__imp_std::basic_ostream >: perator<< (41A320h)]
00411547 cmp esi,esp
00411549 call @ILT+410(__RTC_CheckEsp) (41119Fh)
break;
0041154E jmp main+0CBh (41157Bh)
default:
cout << "error" << endl;
00411550 mov esi,esp
00411552 mov eax,dword ptr [__imp_std::endl (41A338h)]
00411557 push eax
00411558 push offset string "error" (4177FCh)
0041155D mov ecx,dword ptr [__imp_std::cout (41A33Ch)]
00411563 push ecx
00411564 call std: perator<< > (41114Fh)
00411569 add esp,8
0041156C mov ecx,eax
0041156E call dword ptr [__imp_std::basic_ostream >: perator<< (41A320h)]
00411574 cmp esi,esp
00411576 call @ILT+410(__RTC_CheckEsp) (41119Fh)
break;
}
return 0;
0041157B xor eax,eax
}
结论:可以运行.不过受机器位限制. |
|