mirror of
https://github.com/compiler-explorer/compiler-explorer.git
synced 2025-12-27 10:33:59 -05:00
Initial support for binary/binary-obj in msvc (#8165)
This commit is contained in:
@@ -246,6 +246,8 @@ describe('Compiler execution', () => {
|
||||
'/c',
|
||||
'/Faexample.s',
|
||||
'/Foexample.s.obj',
|
||||
'/Zi',
|
||||
'/Fdexample.s.pdb',
|
||||
'/std=c++17',
|
||||
'/IC:/program files (x86)/Company name/Compiler 1.2.3/include',
|
||||
'/D',
|
||||
|
||||
@@ -48,6 +48,8 @@ describe('msvc tests', () => {
|
||||
'/c',
|
||||
'/Faoutput.s',
|
||||
'/Fooutput.s.obj',
|
||||
'/Zi',
|
||||
'/Fdoutput.s.pdb',
|
||||
'/EHsc',
|
||||
'/utf-8',
|
||||
'example.cpp',
|
||||
@@ -70,6 +72,8 @@ describe('msvc tests', () => {
|
||||
'/c',
|
||||
'/Faoutput.s',
|
||||
'/Fooutput.s.obj',
|
||||
'/Zi',
|
||||
'/Fdoutput.s.pdb',
|
||||
'/EHsc',
|
||||
'/O2',
|
||||
'/source-charset:windows-1252',
|
||||
|
||||
@@ -1,4 +1,372 @@
|
||||
{
|
||||
"asm": [],
|
||||
"labelDefinitions": {}
|
||||
"asm": [
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Listing generated by Microsoft (R) Optimizing Compiler Version 19.15.26504.0 "
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tTTL\tC:\\Source\\compiler-explorer\\test\\cases\\arm-moose-example.cpp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tTHUMB"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\t.drectve"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDCB\t\"-defaultlib:LIBCMT \""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDCB\t\"-defaultlib:OLDNAMES \""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tEXPORT\t|moose|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ";\tCOMDAT .pdata"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ".pdata\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "|$pdata1$moose| DCD imagerel |moose|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDCD\t0xfd1160d5"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Function compile flags: /Ogtpy"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ";\tCOMDAT moose"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ".text$mn\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "|moose|\tPROC"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; File c:\\source\\compiler-explorer\\test\\cases\\arm-moose-example.cpp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 9"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tpush {r3-r5,lr}"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "|$M22|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov r5,r0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 10"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmovs r0,#1"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmovs r4,#0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tvdup.32 q10,r5"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 12"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcmp r1,#0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tble |$LN18@moose|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcmp r1,#8"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tbcc |$LN11@moose|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 10"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tasrs r3,r1,#2"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tadd r3,r1,r3,lsr #0x1D"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tasrs r3,r3,#3"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tsub r3,r1,r3,lsl #3"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tvmov.i64 q8,#0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tsubs r3,r1,r3"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tvmov q9,q8"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tvmul.i32 q10,q10,q10"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "|$LL4@moose|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 12"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tadds r4,r4,#8"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcmp r4,r3"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 13"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tvadd.i32 q8,q10,q8"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tvadd.i32 q9,q10,q9"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tblt |$LL4@moose|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 10"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tvadd.i32 q8,q9,q8"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tvmov.32 r2,d17[1]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tvmov.32 r3,d17[0]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tadd r2,r2,r3"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tvmov.32 r3,d16[1]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tadd r2,r2,r3"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tvmov.32 r3,d16[0]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tadd r3,r3,r2"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tadds r0,r3,#1"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "|$LN11@moose|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 12"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcmp r4,r1"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tbge |$LN17@moose|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tsubs r3,r1,r4"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmul r3,r3,r5"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmla r0,r3,r5,r0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "|$LN17@moose|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "|$M20|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 16"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tpop {r3-r5,pc}"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "|$LN18@moose|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "|$M21|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tpop {r3-r5,pc}"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "|$M23|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tENDP ; |moose|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Function compile flags: /Ogtpy"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ";\tCOMDAT thing"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ".text$mn\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "|thing|\tPROC"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; File c:\\source\\compiler-explorer\\test\\cases\\arm-moose-example.cpp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 7"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmul r0,r0,r0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "|$M4|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tbx lr"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tENDP ; |thing|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tEND"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,4 +1,324 @@
|
||||
{
|
||||
"asm": [],
|
||||
"labelDefinitions": {}
|
||||
"asm": [
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Listing generated by Microsoft (R) Optimizing Compiler Version 19.14.26433.0 "
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "include listing.inc"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "INCLUDELIB LIBCMT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "INCLUDELIB OLDNAMES"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "PUBLIC\tmain"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "PUBLIC\t??A?$array@H$0L@@std@@QEBAAEBH_K@Z\t\t; std::array<int,11>::operator[]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "EXTRN\t__GSHandlerCheck:PROC"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "EXTRN\t__security_check_cookie:PROC"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "EXTRN\t__security_cookie:QWORD"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "pdata\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "$pdata$main DD\timagerel $LN3"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\timagerel $LN3+142"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\timagerel $unwind$main"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "pdata\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "xdata\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "$unwind$main DD\t011319H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\t0c204H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\timagerel __GSHandlerCheck"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\t050H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "xdata\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Function compile flags: /Odtp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ";\tCOMDAT ??A?$array@H$0L@@std@@QEBAAEBH_K@Z"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_TEXT\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "this$ = 8"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_Pos$ = 16"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "??A?$array@H$0L@@std@@QEBAAEBH_K@Z PROC\t\t\t; std::array<int,11>::operator[], COMDAT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; File std\\array"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 187"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tQWORD PTR [rsp+16], rdx"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tQWORD PTR [rsp+8], rcx"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 197"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\trax, QWORD PTR this$[rsp]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\trcx, QWORD PTR _Pos$[rsp]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tlea\trax, QWORD PTR [rax+rcx*4]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 198"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tret\t0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "??A?$array@H$0L@@std@@QEBAAEBH_K@Z ENDP\t\t\t; std::array<int,11>::operator[]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_TEXT\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Function compile flags: /Odtp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_TEXT\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "a$ = 32"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "__$ArrayPad$ = 80"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "main\tPROC"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; File c:\\source\\compiler-explorer\\test\\cases\\vc-main-opt-out-example.cpp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 10"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "$LN3:"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tsub\trsp, 104\t\t\t\t; 00000068H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\trax, QWORD PTR __security_cookie"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\txor\trax, rsp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tQWORD PTR __$ArrayPad$[rsp], rax"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 11"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tDWORD PTR a$[rsp], 1"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tDWORD PTR a$[rsp+4], 3"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tDWORD PTR a$[rsp+8], 4"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tDWORD PTR a$[rsp+12], 2"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tDWORD PTR a$[rsp+16], 3"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tDWORD PTR a$[rsp+20], 5"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tDWORD PTR a$[rsp+24], 6"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tDWORD PTR a$[rsp+28], 4"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tDWORD PTR a$[rsp+32], 8"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tDWORD PTR a$[rsp+36], 9"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tDWORD PTR a$[rsp+40], 2"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 13"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tedx, 2"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tlea\trcx, QWORD PTR a$[rsp]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcall\t??A?$array@H$0L@@std@@QEBAAEBH_K@Z\t; std::array<int,11>::operator[]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\teax, DWORD PTR [rax]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 14"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\trcx, QWORD PTR __$ArrayPad$[rsp]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\txor\trcx, rsp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcall\t__security_check_cookie"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tadd\trsp, 104\t\t\t\t; 00000068H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tret\t0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "main\tENDP"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_TEXT\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "END"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,4 +1,68 @@
|
||||
{
|
||||
"asm": [],
|
||||
"labelDefinitions": {}
|
||||
"asm": [
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Listing generated by Microsoft (R) Optimizing Compiler Version 19.15.26504.0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tTITLE\tC:\\Source\\compiler-explorer\\test\\cases\\vc-regex-example.cpp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\t.686P"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\t.XMM"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tinclude listing.inc"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\t.model\tflat"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "INCLUDELIB LIBCMT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "INCLUDELIB OLDNAMES"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; only here to exercise bug https://github.com/compiler-explorer/compiler-explorer/issues/1337"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "1234"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "END"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,4 +1,404 @@
|
||||
{
|
||||
"asm": [],
|
||||
"labelDefinitions": {}
|
||||
"asm": [
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Listing generated by Microsoft (R) Optimizing Compiler Version 19.15.26504.0 "
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tTITLE\tC:\\Source\\compiler-explorer\\test\\cases\\vc-regex-example.cpp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\t.686P"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\t.XMM"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tinclude listing.inc"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\t.model\tflat"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "INCLUDELIB LIBCMT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "INCLUDELIB OLDNAMES"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "CONST\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "$SG39290 DB\t'Some people, when confronted with a problem, think \"I k'"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDB\t'now, I''ll use regular expressions.\" Now they have two proble'"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDB\t'ms.', 00H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "$SG39291 DB\t'REGULAR EXPRESSIONS', 00H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "CONST\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "PUBLIC\t?regexTest@@YAXXZ\t\t\t\t; regexTest"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "xdata$x\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "__unwindtable$?regexTest@@YAXXZ DD 0ffffffffH"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\tFLAT:__unwindfunclet$?regexTest@@YAXXZ$0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "__ehfuncinfo$?regexTest@@YAXXZ DD 019930522H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\t01H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\tFLAT:__unwindtable$?regexTest@@YAXXZ"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\t2 DUP(00H)"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\t2 DUP(00H)"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\t00H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\t01H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "xdata$x\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Function compile flags: /Odtp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_TEXT\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_self_regex$ = -60\t\t\t\t\t; size = 20"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_s$ = -40\t\t\t\t\t\t; size = 24"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "__$ArrayPad$ = -16\t\t\t\t\t; size = 4"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "__$EHRec$ = -12\t\t\t\t\t\t; size = 12"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "?regexTest@@YAXXZ PROC\t\t\t\t\t; regexTest"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; File c:\\source\\compiler-explorer\\test\\cases\\vc-regex-example.cpp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 7"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tpush\tebp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tebp, esp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tpush\t-1"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tpush\t__ehhandler$?regexTest@@YAXXZ"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\teax, DWORD PTR fs:0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tpush\teax"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tsub\tesp, 48\t\t\t\t\t; 00000030H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\teax, DWORD PTR ___security_cookie"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\txor\teax, ebp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tDWORD PTR __$ArrayPad$[ebp], eax"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tpush\teax"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tlea\teax, DWORD PTR __$EHRec$[ebp]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tDWORD PTR fs:0, eax"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 8"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tpush\tOFFSET $SG39290"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tlea\tecx, DWORD PTR _s$[ebp]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcall\t??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": null,
|
||||
"text": "\tmov\tDWORD PTR __$EHRec$[ebp+8], 0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 11"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tpush\t256\t\t\t\t\t; 00000100H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tpush\t1"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcall\t??Uregex_constants@std@@YA?AW4syntax_option_type@01@W4201@0@Z ; std::regex_constants::operator|"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tadd\tesp, 8"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tpush\teax"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tpush\tOFFSET $SG39291"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tlea\tecx, DWORD PTR _self_regex$[ebp]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcall\t??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": null,
|
||||
"text": "; Line 13"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tlea\tecx, DWORD PTR _self_regex$[ebp]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcall\t??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": null,
|
||||
"text": "\tmov\tDWORD PTR __$EHRec$[ebp+8], -1"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tlea\tecx, DWORD PTR _s$[ebp]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcall\t??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": null,
|
||||
"text": "\tmov\tecx, DWORD PTR __$EHRec$[ebp]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tDWORD PTR fs:0, ecx"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tpop\tecx"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tecx, DWORD PTR __$ArrayPad$[ebp]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\txor\tecx, ebp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcall\t@__security_check_cookie@4"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tesp, ebp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tpop\tebp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tret\t0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_TEXT\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "text$x\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "__unwindfunclet$?regexTest@@YAXXZ$0:"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tlea\tecx, DWORD PTR _s$[ebp]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tjmp\t??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": null,
|
||||
"text": "__ehhandler$?regexTest@@YAXXZ:"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tedx, DWORD PTR [esp+8]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tlea\teax, DWORD PTR [edx+12]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tecx, DWORD PTR [edx-52]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\txor\tecx, eax"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcall\t@__security_check_cookie@4"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tecx, DWORD PTR [edx-4]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\txor\tecx, eax"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcall\t@__security_check_cookie@4"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\teax, OFFSET __ehfuncinfo$?regexTest@@YAXXZ"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tjmp\t___CxxFrameHandler3"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "text$x\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "?regexTest@@YAXXZ ENDP\t\t\t\t\t; regexTest"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "END"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,4 +1,472 @@
|
||||
{
|
||||
"asm": [],
|
||||
"labelDefinitions": {}
|
||||
"asm": [
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Listing generated by Microsoft (R) Optimizing Compiler Version 19.15.26729.0 "
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "include listing.inc"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "INCLUDELIB LIBCMT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "INCLUDELIB OLDNAMES"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "PUBLIC\t?g@@3Usafetls@@A\t\t\t\t; g"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "PUBLIC\t?h@@3HA\t\t\t\t\t\t; h"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_TLS\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "?h@@3HA\tDD\t012345H\t\t\t\t\t; h"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tORG $+4"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "?g@@3Usafetls@@A DD 098765H\t\t\t\t; g"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tORG $+8"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_TLS\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "PUBLIC\t?value@safetls@@QEAAHXZ\t\t\t\t; safetls::value"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "PUBLIC\t?func@@YAHXZ\t\t\t\t\t; func"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "PUBLIC\t?func2@@YAHXZ\t\t\t\t\t; func2"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "PUBLIC\tmain"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "EXTRN\t_tls_index:DWORD"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ";\tCOMDAT pdata"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "pdata\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "$pdata$?func@@YAHXZ DD imagerel $LN3"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\timagerel $LN3+43"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\timagerel $unwind$?func@@YAHXZ"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "pdata\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "pdata\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "$pdata$main DD\timagerel $LN3"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\timagerel $LN3+31"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\timagerel $unwind$main"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "pdata\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "xdata\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "$unwind$main DD\t010401H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\t06204H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "xdata\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ";\tCOMDAT xdata"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "xdata\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "$unwind$?func@@YAHXZ DD 010401H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tDD\t04204H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "xdata\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Function compile flags: /Odtp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_TEXT\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "tv64 = 32"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "main\tPROC"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; File c:\\users\\quist\\appdata\\local\\temp\\compiler-explorer-compiler118927-25960-1r4bdyh.ql7u\\example.cpp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 26"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "$LN3:"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tsub\trsp, 56\t\t\t\t\t; 00000038H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 27"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcall\t?func@@YAHXZ\t\t\t\t; func"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tDWORD PTR tv64[rsp], eax"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcall\t?func2@@YAHXZ\t\t\t\t; func2"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tecx, DWORD PTR tv64[rsp]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tadd\tecx, eax"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\teax, ecx"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 28"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tadd\trsp, 56\t\t\t\t\t; 00000038H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tret\t0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "main\tENDP"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_TEXT\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Function compile flags: /Odtp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ";\tCOMDAT ?func2@@YAHXZ"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_TEXT\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "?func2@@YAHXZ PROC\t\t\t\t\t; func2, COMDAT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; File c:\\users\\quist\\appdata\\local\\temp\\compiler-explorer-compiler118927-25960-1r4bdyh.ql7u\\example.cpp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 22"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\teax, OFFSET FLAT:?h@@3HA\t\t; h"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\teax, eax"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tecx, DWORD PTR _tls_index"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\trdx, QWORD PTR gs:88"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\trcx, QWORD PTR [rdx+rcx*8]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\teax, DWORD PTR [rax+rcx]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 23"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tret\t0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "?func2@@YAHXZ ENDP\t\t\t\t\t; func2"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_TEXT\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Function compile flags: /Odtp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ";\tCOMDAT ?func@@YAHXZ"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_TEXT\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "?func@@YAHXZ PROC\t\t\t\t\t; func, COMDAT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; File c:\\users\\quist\\appdata\\local\\temp\\compiler-explorer-compiler118927-25960-1r4bdyh.ql7u\\example.cpp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 16"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "$LN3:"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tsub\trsp, 40\t\t\t\t\t; 00000028H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 17"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\teax, OFFSET FLAT:?g@@3Usafetls@@A\t; g"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\teax, eax"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tecx, DWORD PTR _tls_index"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\trdx, QWORD PTR gs:88"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tadd\trax, QWORD PTR [rdx+rcx*8]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\trcx, rax"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tcall\t?value@safetls@@QEAAHXZ\t\t\t; safetls::value"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 18"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tadd\trsp, 40\t\t\t\t\t; 00000028H"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tret\t0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "?func@@YAHXZ ENDP\t\t\t\t\t; func"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_TEXT\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Function compile flags: /Odtp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ";\tCOMDAT ?value@safetls@@QEAAHXZ"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_TEXT\tSEGMENT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "this$ = 8"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "?value@safetls@@QEAAHXZ PROC\t\t\t\t; safetls::value, COMDAT"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; File c:\\users\\quist\\appdata\\local\\temp\\compiler-explorer-compiler118927-25960-1r4bdyh.ql7u\\example.cpp"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "; Line 9"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tQWORD PTR [rsp+8], rcx"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\trax, QWORD PTR this$[rsp]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\trcx, QWORD PTR this$[rsp]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\tecx, DWORD PTR [rcx+4]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\teax, DWORD PTR [rax]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tsub\teax, ecx"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tmov\trcx, QWORD PTR this$[rsp]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tadd\teax, DWORD PTR [rcx+8]"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "\tret\t0"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "?value@safetls@@QEAAHXZ ENDP\t\t\t\t; safetls::value"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "_TEXT\tENDS"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": "END"
|
||||
},
|
||||
{
|
||||
"source": null,
|
||||
"text": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -98,11 +98,11 @@ describe('Objdumper', () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe('getDefaultArgs', () => {
|
||||
describe('getArgs', () => {
|
||||
it('should generate correct arguments', () => {
|
||||
const objdumper = new DefaultObjdumper();
|
||||
|
||||
const args = objdumper.getDefaultArgs(
|
||||
const args = objdumper.getArgs(
|
||||
'test.o',
|
||||
true, // demangle
|
||||
true, // intelAsm
|
||||
|
||||
Reference in New Issue
Block a user