blob: e28822c77f670f23e93e19f5c0e147ff20e7231c [file] [log] [blame] [raw]
{
"asm": [
{
"text": "; Listing generated by Microsoft (R) Optimizing Compiler Version 19.15.26504.0 ",
"source": null
},
{
"text": "",
"source": null
},
{
"text": " TITLE C:\\Source\\compiler-explorer\\test\\cases\\vc-regex-example.cpp",
"source": null
},
{
"text": " .686P",
"source": null
},
{
"text": " .XMM",
"source": null
},
{
"text": " include listing.inc",
"source": null
},
{
"text": " .model flat",
"source": null
},
{
"text": "",
"source": null
},
{
"text": "INCLUDELIB LIBCMT",
"source": null
},
{
"text": "INCLUDELIB OLDNAMES",
"source": null
},
{
"text": "",
"source": null
},
{
"text": "CONST SEGMENT",
"source": null
},
{
"text": "$SG39290 DB 'Some people, when confronted with a problem, think \"I k'",
"source": null
},
{
"text": " DB 'now, I''ll use regular expressions.\" Now they have two proble'",
"source": null
},
{
"text": " DB 'ms.', 00H",
"source": null
},
{
"text": "$SG39291 DB 'REGULAR EXPRESSIONS', 00H",
"source": null
},
{
"text": "CONST ENDS",
"source": null
},
{
"text": "PUBLIC ?regexTest@@YAXXZ ; regexTest",
"source": null
},
{
"text": "xdata$x SEGMENT",
"source": null
},
{
"text": "__unwindtable$?regexTest@@YAXXZ DD 0ffffffffH",
"source": null
},
{
"text": " DD FLAT:__unwindfunclet$?regexTest@@YAXXZ$0",
"source": null
},
{
"text": "__ehfuncinfo$?regexTest@@YAXXZ DD 019930522H",
"source": null
},
{
"text": " DD 01H",
"source": null
},
{
"text": " DD FLAT:__unwindtable$?regexTest@@YAXXZ",
"source": null
},
{
"text": " DD 2 DUP(00H)",
"source": null
},
{
"text": " DD 2 DUP(00H)",
"source": null
},
{
"text": " DD 00H",
"source": null
},
{
"text": " DD 01H",
"source": null
},
{
"text": "xdata$x ENDS",
"source": null
},
{
"text": "",
"source": null
},
{
"text": "; Function compile flags: /Odtp",
"source": null
},
{
"text": "_TEXT SEGMENT",
"source": null
},
{
"text": "_self_regex$ = -60 ; size = 20",
"source": null
},
{
"text": "_s$ = -40 ; size = 24",
"source": null
},
{
"text": "__$ArrayPad$ = -16 ; size = 4",
"source": null
},
{
"text": "__$EHRec$ = -12 ; size = 12",
"source": null
},
{
"text": "?regexTest@@YAXXZ PROC ; regexTest",
"source": null
},
{
"text": "; File c:\\source\\compiler-explorer\\test\\cases\\vc-regex-example.cpp",
"source": null
},
{
"text": "; Line 7",
"source": null
},
{
"text": " push ebp",
"source": {
"file": null,
"line": 7
}
},
{
"text": " mov ebp, esp",
"source": {
"file": null,
"line": 7
}
},
{
"text": " push -1",
"source": {
"file": null,
"line": 7
}
},
{
"text": " push __ehhandler$?regexTest@@YAXXZ",
"source": {
"file": null,
"line": 7
}
},
{
"text": " mov eax, DWORD PTR fs:0",
"source": {
"file": null,
"line": 7
}
},
{
"text": " push eax",
"source": {
"file": null,
"line": 7
}
},
{
"text": " sub esp, 48 ; 00000030H",
"source": {
"file": null,
"line": 7
}
},
{
"text": " mov eax, DWORD PTR ___security_cookie",
"source": {
"file": null,
"line": 7
}
},
{
"text": " xor eax, ebp",
"source": {
"file": null,
"line": 7
}
},
{
"text": " mov DWORD PTR __$ArrayPad$[ebp], eax",
"source": {
"file": null,
"line": 7
}
},
{
"text": " push eax",
"source": {
"file": null,
"line": 7
}
},
{
"text": " lea eax, DWORD PTR __$EHRec$[ebp]",
"source": {
"file": null,
"line": 7
}
},
{
"text": " mov DWORD PTR fs:0, eax",
"source": {
"file": null,
"line": 7
}
},
{
"text": "; Line 8",
"source": null
},
{
"text": " push OFFSET $SG39290",
"source": {
"file": null,
"line": 8
}
},
{
"text": " lea ecx, DWORD PTR _s$[ebp]",
"source": {
"file": null,
"line": 8
}
},
{
"text": " call ??0?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@QBD@Z ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::basic_string<char,std::char_traits<char>,std::allocator<char> >",
"source": {
"file": null,
"line": 8
}
},
{
"text": " mov DWORD PTR __$EHRec$[ebp+8], 0",
"source": {
"file": null,
"line": 8
}
},
{
"text": "; Line 11",
"source": null
},
{
"text": " push 256 ; 00000100H",
"source": {
"file": null,
"line": 11
}
},
{
"text": " push 1",
"source": {
"file": null,
"line": 11
}
},
{
"text": " call ??Uregex_constants@std@@YA?AW4syntax_option_type@01@W4201@0@Z ; std::regex_constants::operator|",
"source": {
"file": null,
"line": 11
}
},
{
"text": " add esp, 8",
"source": {
"file": null,
"line": 11
}
},
{
"text": " push eax",
"source": {
"file": null,
"line": 11
}
},
{
"text": " push OFFSET $SG39291",
"source": {
"file": null,
"line": 11
}
},
{
"text": " lea ecx, DWORD PTR _self_regex$[ebp]",
"source": {
"file": null,
"line": 11
}
},
{
"text": " call ??0?$basic_regex@DV?$regex_traits@D@std@@@std@@QAE@PBDW4syntax_option_type@regex_constants@1@@Z ; std::basic_regex<char,std::regex_traits<char> >::basic_regex<char,std::regex_traits<char> >",
"source": {
"file": null,
"line": 11
}
},
{
"text": "; Line 13",
"source": null
},
{
"text": " lea ecx, DWORD PTR _self_regex$[ebp]",
"source": {
"file": null,
"line": 13
}
},
{
"text": " call ??1?$basic_regex@DV?$regex_traits@D@std@@@std@@QAE@XZ ; std::basic_regex<char,std::regex_traits<char> >::~basic_regex<char,std::regex_traits<char> >",
"source": {
"file": null,
"line": 13
}
},
{
"text": " mov DWORD PTR __$EHRec$[ebp+8], -1",
"source": {
"file": null,
"line": 13
}
},
{
"text": " lea ecx, DWORD PTR _s$[ebp]",
"source": {
"file": null,
"line": 13
}
},
{
"text": " call ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >",
"source": {
"file": null,
"line": 13
}
},
{
"text": " mov ecx, DWORD PTR __$EHRec$[ebp]",
"source": {
"file": null,
"line": 13
}
},
{
"text": " mov DWORD PTR fs:0, ecx",
"source": {
"file": null,
"line": 13
}
},
{
"text": " pop ecx",
"source": {
"file": null,
"line": 13
}
},
{
"text": " mov ecx, DWORD PTR __$ArrayPad$[ebp]",
"source": {
"file": null,
"line": 13
}
},
{
"text": " xor ecx, ebp",
"source": {
"file": null,
"line": 13
}
},
{
"text": " call @__security_check_cookie@4",
"source": {
"file": null,
"line": 13
}
},
{
"text": " mov esp, ebp",
"source": {
"file": null,
"line": 13
}
},
{
"text": " pop ebp",
"source": {
"file": null,
"line": 13
}
},
{
"text": " ret 0",
"source": {
"file": null,
"line": 13
}
},
{
"text": "_TEXT ENDS",
"source": null
},
{
"text": "text$x SEGMENT",
"source": null
},
{
"text": "__unwindfunclet$?regexTest@@YAXXZ$0:",
"source": null
},
{
"text": " lea ecx, DWORD PTR _s$[ebp]",
"source": {
"file": null,
"line": 13
}
},
{
"text": " jmp ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ ; std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >",
"source": {
"file": null,
"line": 13
}
},
{
"text": "__ehhandler$?regexTest@@YAXXZ:",
"source": null
},
{
"text": " mov edx, DWORD PTR [esp+8]",
"source": {
"file": null,
"line": 13
}
},
{
"text": " lea eax, DWORD PTR [edx+12]",
"source": {
"file": null,
"line": 13
}
},
{
"text": " mov ecx, DWORD PTR [edx-52]",
"source": {
"file": null,
"line": 13
}
},
{
"text": " xor ecx, eax",
"source": {
"file": null,
"line": 13
}
},
{
"text": " call @__security_check_cookie@4",
"source": {
"file": null,
"line": 13
}
},
{
"text": " mov ecx, DWORD PTR [edx-4]",
"source": {
"file": null,
"line": 13
}
},
{
"text": " xor ecx, eax",
"source": {
"file": null,
"line": 13
}
},
{
"text": " call @__security_check_cookie@4",
"source": {
"file": null,
"line": 13
}
},
{
"text": " mov eax, OFFSET __ehfuncinfo$?regexTest@@YAXXZ",
"source": {
"file": null,
"line": 13
}
},
{
"text": " jmp ___CxxFrameHandler3",
"source": {
"file": null,
"line": 13
}
},
{
"text": "text$x ENDS",
"source": null
},
{
"text": "?regexTest@@YAXXZ ENDP ; regexTest",
"source": null
},
{
"text": "END",
"source": null
}
]
}