|
; Listing generated by Microsoft (R) Optimizing Compiler Version 16.00.30319.01
TITLE D:\Articles\CodeProject\switch\CppExample\switch1.cpp
.686P
.XMM
include listing.inc
.model flat
INCLUDELIB LIBCMTD
INCLUDELIB OLDNAMES
PUBLIC _main
EXTRN ?f3@@YAXXZ:PROC ; f3
EXTRN ?f2@@YAXXZ:PROC ; f2
EXTRN ?f1@@YAXXZ:PROC ; f1
EXTRN __RTC_CheckEsp:PROC
EXTRN __RTC_Shutdown:PROC
EXTRN __RTC_InitBase:PROC
; COMDAT rtc$TMZ
; File d:\articles\codeproject\switch\cppexample\switch1.cpp
rtc$TMZ SEGMENT
__RTC_Shutdown.rtc$TMZ DD FLAT:__RTC_Shutdown
rtc$TMZ ENDS
; COMDAT rtc$IMZ
rtc$IMZ SEGMENT
__RTC_InitBase.rtc$IMZ DD FLAT:__RTC_InitBase
; Function compile flags: /Odtp /RTCsu /ZI
rtc$IMZ ENDS
; COMDAT _main
_TEXT SEGMENT
tv64 = -208 ; size = 4
_i$ = -8 ; size = 4
_main PROC ; COMDAT
; 4 : {
push ebp
mov ebp, esp
sub esp, 208 ; 000000d0H
push ebx
push esi
push edi
lea edi, DWORD PTR [ebp-208]
mov ecx, 52 ; 00000034H
mov eax, -858993460 ; ccccccccH
rep stosd
; 5 : int i =3; // or i =20
mov DWORD PTR _i$[ebp], 3
; 6 :
; 7 : switch (i)
mov eax, DWORD PTR _i$[ebp]
mov DWORD PTR tv64[ebp], eax
mov ecx, DWORD PTR tv64[ebp]
sub ecx, 1
mov DWORD PTR tv64[ebp], ecx
cmp DWORD PTR tv64[ebp], 17 ; 00000011H
ja SHORT $LN1@main
mov edx, DWORD PTR tv64[ebp]
movzx eax, BYTE PTR $LN15@main[edx]
jmp DWORD PTR $LN16@main[eax*4]
$LN10@main:
; 8 : {
; 9 : case 1: f1(); break;
call ?f1@@YAXXZ ; f1
jmp SHORT $LN11@main
$LN9@main:
; 10 : case 2: f2(); break;
call ?f2@@YAXXZ ; f2
jmp SHORT $LN11@main
$LN8@main:
; 11 : case 5: f1(); break;
call ?f1@@YAXXZ ; f1
jmp SHORT $LN11@main
$LN7@main:
; 12 : case 7: f2(); break;
call ?f2@@YAXXZ ; f2
jmp SHORT $LN11@main
$LN6@main:
; 13 : case 10: f1(); break;
call ?f1@@YAXXZ ; f1
jmp SHORT $LN11@main
$LN5@main:
; 14 : case 11: f2(); break;
call ?f2@@YAXXZ ; f2
jmp SHORT $LN11@main
$LN4@main:
; 15 : case 12: f2(); break;
call ?f2@@YAXXZ ; f2
jmp SHORT $LN11@main
$LN3@main:
; 16 : case 17: f1(); break;
call ?f1@@YAXXZ ; f1
jmp SHORT $LN11@main
$LN2@main:
; 17 : case 18: f1(); break;
call ?f1@@YAXXZ ; f1
jmp SHORT $LN11@main
$LN1@main:
; 18 :
; 19 : default: f3();
call ?f3@@YAXXZ ; f3
$LN11@main:
; 20 : }
; 21 :
; 22 : return 0;
xor eax, eax
; 23 : }
pop edi
pop esi
pop ebx
add esp, 208 ; 000000d0H
cmp ebp, esp
call __RTC_CheckEsp
mov esp, ebp
pop ebp
ret 0
$LN16@main:
DD $LN10@main
DD $LN9@main
DD $LN8@main
DD $LN7@main
DD $LN6@main
DD $LN5@main
DD $LN4@main
DD $LN3@main
DD $LN2@main
DD $LN1@main
$LN15@main:
DB 0
DB 1
DB 9
DB 9
DB 2
DB 9
DB 3
DB 9
DB 9
DB 4
DB 5
DB 6
DB 9
DB 9
DB 9
DB 9
DB 7
DB 8
_main ENDP
_TEXT ENDS
END
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.