Created
March 9, 2019 18:39
-
-
Save BillyONeal/ce23b403fa3fe1670efd2293e79a244c to your computer and use it in GitHub Desktop.
Atomic Asm Output
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.20.27404.0 | |
include listing.inc | |
INCLUDELIB LIBCMT | |
INCLUDELIB OLDNAMES | |
PUBLIC ?i@@3U?$atomic@H@std@@A ; i | |
_BSS SEGMENT | |
?i@@3U?$atomic@H@std@@A DD 01H DUP (?) ; i | |
_BSS ENDS | |
PUBLIC ??E?$_Atomic_integral@H$03@std@@QEAAHH@Z ; std::_Atomic_integral<int,4>::operator++ | |
PUBLIC ?example@@YAXXZ ; example | |
PUBLIC ??$_Atomic_address_as@JU?$_Atomic_padded@H@std@@@std@@YAPECJAEAU?$_Atomic_padded@H@0@@Z ; std::_Atomic_address_as<long,std::_Atomic_padded<int> > | |
EXTRN __CxxFrameHandler3:PROC | |
; COMDAT pdata | |
pdata SEGMENT | |
$pdata$??E?$_Atomic_integral@H$03@std@@QEAAHH@Z DD imagerel $LN3 | |
DD imagerel $LN3+69 | |
DD imagerel $unwind$??E?$_Atomic_integral@H$03@std@@QEAAHH@Z | |
pdata ENDS | |
pdata SEGMENT | |
$pdata$?example@@YAXXZ DD imagerel $LN3 | |
DD imagerel $LN3+23 | |
DD imagerel $unwind$?example@@YAXXZ | |
pdata ENDS | |
xdata SEGMENT | |
$unwind$?example@@YAXXZ DD 010401H | |
DD 04204H | |
xdata ENDS | |
; COMDAT xdata | |
xdata SEGMENT | |
$ip2state$??E?$_Atomic_integral@H$03@std@@QEAAHH@Z DD imagerel ??E?$_Atomic_integral@H$03@std@@QEAAHH@Z | |
DD 0ffffffffH | |
xdata ENDS | |
; COMDAT CONST | |
CONST SEGMENT | |
$cppxdata$??E?$_Atomic_integral@H$03@std@@QEAAHH@Z DD 019930522H | |
DD 00H | |
DD 00H | |
DD 00H | |
DD 00H | |
DD 01H | |
DD imagerel $ip2state$??E?$_Atomic_integral@H$03@std@@QEAAHH@Z | |
DD 028H | |
DD 00H | |
DD 05H | |
CONST ENDS | |
; COMDAT xdata | |
xdata SEGMENT | |
$unwind$??E?$_Atomic_integral@H$03@std@@QEAAHH@Z DD 011619H | |
DD 0620dH | |
DD imagerel __CxxFrameHandler3 | |
DD imagerel $cppxdata$??E?$_Atomic_integral@H$03@std@@QEAAHH@Z | |
xdata ENDS | |
; Function compile flags: /Odtp | |
; COMDAT ??$_Atomic_address_as@JU?$_Atomic_padded@H@std@@@std@@YAPECJAEAU?$_Atomic_padded@H@0@@Z | |
_TEXT SEGMENT | |
_Source$ = 8 | |
??$_Atomic_address_as@JU?$_Atomic_padded@H@std@@@std@@YAPECJAEAU?$_Atomic_padded@H@0@@Z PROC ; std::_Atomic_address_as<long,std::_Atomic_padded<int> >, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\atomic | |
; Line 215 | |
00000 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx | |
; Line 218 | |
00005 48 8b 44 24 08 mov rax, QWORD PTR _Source$[rsp] | |
; Line 219 | |
0000a c3 ret 0 | |
??$_Atomic_address_as@JU?$_Atomic_padded@H@std@@@std@@YAPECJAEAU?$_Atomic_padded@H@0@@Z ENDP ; std::_Atomic_address_as<long,std::_Atomic_padded<int> > | |
_TEXT ENDS | |
; Function compile flags: /Odtp | |
_TEXT SEGMENT | |
?example@@YAXXZ PROC ; example | |
; File C:\Users\bion\Desktop\test.cpp | |
; Line 5 | |
$LN3: | |
00000 48 83 ec 28 sub rsp, 40 ; 00000028H | |
; Line 6 | |
00004 33 d2 xor edx, edx | |
00006 48 8d 0d 00 00 | |
00 00 lea rcx, OFFSET FLAT:?i@@3U?$atomic@H@std@@A ; i | |
0000d e8 00 00 00 00 call ??E?$_Atomic_integral@H$03@std@@QEAAHH@Z ; std::_Atomic_integral<int,4>::operator++ | |
; Line 7 | |
00012 48 83 c4 28 add rsp, 40 ; 00000028H | |
00016 c3 ret 0 | |
?example@@YAXXZ ENDP ; example | |
_TEXT ENDS | |
; Function compile flags: /Odtp | |
; COMDAT ??E?$_Atomic_integral@H$03@std@@QEAAHH@Z | |
_TEXT SEGMENT | |
_After$ = 32 | |
$T1 = 40 | |
this$ = 64 | |
__formal$ = 72 | |
??E?$_Atomic_integral@H$03@std@@QEAAHH@Z PROC ; std::_Atomic_integral<int,4>::operator++, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\atomic | |
; Line 1028 | |
$LN3: | |
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx | |
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx | |
00009 48 83 ec 38 sub rsp, 56 ; 00000038H | |
0000d 48 c7 44 24 28 | |
fe ff ff ff mov QWORD PTR $T1[rsp], -2 | |
; Line 1030 | |
00016 48 8b 4c 24 40 mov rcx, QWORD PTR this$[rsp] | |
0001b e8 00 00 00 00 call ??$_Atomic_address_as@JU?$_Atomic_padded@H@std@@@std@@YAPECJAEAU?$_Atomic_padded@H@0@@Z ; std::_Atomic_address_as<long,std::_Atomic_padded<int> > | |
00020 90 npad 1 | |
00021 b9 01 00 00 00 mov ecx, 1 | |
00026 f0 0f c1 08 lock xadd DWORD PTR [rax], ecx | |
0002a ff c1 inc ecx | |
0002c 8b c1 mov eax, ecx | |
0002e 89 44 24 20 mov DWORD PTR _After$[rsp], eax | |
; Line 1031 | |
00032 8b 44 24 20 mov eax, DWORD PTR _After$[rsp] | |
00036 ff c8 dec eax | |
00038 89 44 24 20 mov DWORD PTR _After$[rsp], eax | |
; Line 1032 | |
0003c 8b 44 24 20 mov eax, DWORD PTR _After$[rsp] | |
; Line 1033 | |
00040 48 83 c4 38 add rsp, 56 ; 00000038H | |
00044 c3 ret 0 | |
??E?$_Atomic_integral@H$03@std@@QEAAHH@Z ENDP ; std::_Atomic_integral<int,4>::operator++ | |
_TEXT ENDS | |
END |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.20.27404.0 | |
include listing.inc | |
INCLUDELIB LIBCMT | |
INCLUDELIB OLDNAMES | |
PUBLIC ?i@@3U?$atomic@H@std@@A ; i | |
_BSS SEGMENT | |
?i@@3U?$atomic@H@std@@A DD 01H DUP (?) ; i | |
_BSS ENDS | |
PUBLIC ??E?$_Atomic_integral@H$03@std@@QEAAHH@Z ; std::_Atomic_integral<int,4>::operator++ | |
PUBLIC ?example@@YAXXZ ; example | |
PUBLIC ??$_Atomic_address_as@JU?$_Atomic_padded@H@std@@@std@@YAPECJAEAU?$_Atomic_padded@H@0@@Z ; std::_Atomic_address_as<long,std::_Atomic_padded<int> > | |
; Function compile flags: /Ogtpy | |
; COMDAT ??$_Atomic_address_as@JU?$_Atomic_padded@H@std@@@std@@YAPECJAEAU?$_Atomic_padded@H@0@@Z | |
_TEXT SEGMENT | |
_Source$ = 8 | |
??$_Atomic_address_as@JU?$_Atomic_padded@H@std@@@std@@YAPECJAEAU?$_Atomic_padded@H@0@@Z PROC ; std::_Atomic_address_as<long,std::_Atomic_padded<int> >, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\atomic | |
; Line 218 | |
00000 48 8b c1 mov rax, rcx | |
; Line 219 | |
00003 c3 ret 0 | |
??$_Atomic_address_as@JU?$_Atomic_padded@H@std@@@std@@YAPECJAEAU?$_Atomic_padded@H@0@@Z ENDP ; std::_Atomic_address_as<long,std::_Atomic_padded<int> > | |
_TEXT ENDS | |
; Function compile flags: /Ogtpy | |
; COMDAT ?example@@YAXXZ | |
_TEXT SEGMENT | |
?example@@YAXXZ PROC ; example, COMDAT | |
; File C:\Users\bion\Desktop\test.cpp | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\atomic | |
; Line 1030 | |
00000 f0 ff 05 00 00 | |
00 00 lock inc DWORD PTR ?i@@3U?$atomic@H@std@@A ; i | |
; File C:\Users\bion\Desktop\test.cpp | |
; Line 7 | |
00007 c3 ret 0 | |
?example@@YAXXZ ENDP ; example | |
_TEXT ENDS | |
; Function compile flags: /Ogtpy | |
; COMDAT ??E?$_Atomic_integral@H$03@std@@QEAAHH@Z | |
_TEXT SEGMENT | |
this$ = 8 | |
__formal$ = 16 | |
??E?$_Atomic_integral@H$03@std@@QEAAHH@Z PROC ; std::_Atomic_integral<int,4>::operator++, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\atomic | |
; Line 1030 | |
00000 b8 01 00 00 00 mov eax, 1 | |
00005 f0 0f c1 01 lock xadd DWORD PTR [rcx], eax | |
; Line 1033 | |
00009 c3 ret 0 | |
??E?$_Atomic_integral@H$03@std@@QEAAHH@Z ENDP ; std::_Atomic_integral<int,4>::operator++ | |
_TEXT ENDS | |
END |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.20.27404.0 | |
include listing.inc | |
INCLUDELIB LIBCMT | |
INCLUDELIB OLDNAMES | |
PUBLIC ?i@@3U?$atomic@H@std@@A ; i | |
_BSS SEGMENT | |
?i@@3U?$atomic@H@std@@A DD 01H DUP (?) ; i | |
_BSS ENDS | |
PUBLIC ?_Fetch_add_seq_cst_4@std@@YAKPECKK@Z ; std::_Fetch_add_seq_cst_4 | |
PUBLIC ?_Fetch_add_relaxed_4@std@@YAKPECKK@Z ; std::_Fetch_add_relaxed_4 | |
PUBLIC ?_Fetch_add_acquire_4@std@@YAKPECKK@Z ; std::_Fetch_add_acquire_4 | |
PUBLIC ?_Fetch_add_release_4@std@@YAKPECKK@Z ; std::_Fetch_add_release_4 | |
PUBLIC ?_Atomic_fetch_add_4@std@@YAKPECKKW4memory_order@1@@Z ; std::_Atomic_fetch_add_4 | |
PUBLIC ??E_Atomic_int@std@@QEAAHH@Z ; std::_Atomic_int::operator++ | |
PUBLIC ?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z ; std::atomic_fetch_add_explicit | |
PUBLIC ?atomic_fetch_add@std@@YAHPEAU_Atomic_int@1@H@Z ; std::atomic_fetch_add | |
PUBLIC ?example@@YAXXZ ; example | |
EXTRN __CxxFrameHandler3:PROC | |
EXTRN __ImageBase:BYTE | |
; COMDAT pdata | |
pdata SEGMENT | |
$pdata$?_Atomic_fetch_add_4@std@@YAKPECKKW4memory_order@1@@Z DD imagerel $LN11 | |
DD imagerel $LN11+152 | |
DD imagerel $unwind$?_Atomic_fetch_add_4@std@@YAKPECKKW4memory_order@1@@Z | |
pdata ENDS | |
; COMDAT pdata | |
pdata SEGMENT | |
$pdata$??E_Atomic_int@std@@QEAAHH@Z DD imagerel $LN3 | |
DD imagerel $LN3+33 | |
DD imagerel $unwind$??E_Atomic_int@std@@QEAAHH@Z | |
pdata ENDS | |
; COMDAT pdata | |
pdata SEGMENT | |
$pdata$?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z DD imagerel $LN3 | |
DD imagerel $LN3+55 | |
DD imagerel $unwind$?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z | |
pdata ENDS | |
; COMDAT pdata | |
pdata SEGMENT | |
$pdata$?atomic_fetch_add@std@@YAHPEAU_Atomic_int@1@H@Z DD imagerel $LN3 | |
DD imagerel $LN3+38 | |
DD imagerel $unwind$?atomic_fetch_add@std@@YAHPEAU_Atomic_int@1@H@Z | |
pdata ENDS | |
pdata SEGMENT | |
$pdata$?example@@YAXXZ DD imagerel $LN3 | |
DD imagerel $LN3+23 | |
DD imagerel $unwind$?example@@YAXXZ | |
pdata ENDS | |
xdata SEGMENT | |
$unwind$?example@@YAXXZ DD 010401H | |
DD 04204H | |
xdata ENDS | |
; COMDAT xdata | |
xdata SEGMENT | |
$unwind$?atomic_fetch_add@std@@YAHPEAU_Atomic_int@1@H@Z DD 010d01H | |
DD 0420dH | |
xdata ENDS | |
; COMDAT xdata | |
xdata SEGMENT | |
$ip2state$?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z DD imagerel ?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z | |
DD 0ffffffffH | |
xdata ENDS | |
; COMDAT CONST | |
CONST SEGMENT | |
$cppxdata$?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z DD 019930522H | |
DD 00H | |
DD 00H | |
DD 00H | |
DD 00H | |
DD 01H | |
DD imagerel $ip2state$?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z | |
DD 020H | |
DD 00H | |
DD 05H | |
CONST ENDS | |
; COMDAT xdata | |
xdata SEGMENT | |
$unwind$?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z DD 011b19H | |
DD 06212H | |
DD imagerel __CxxFrameHandler3 | |
DD imagerel $cppxdata$?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z | |
xdata ENDS | |
; COMDAT xdata | |
xdata SEGMENT | |
$unwind$??E_Atomic_int@std@@QEAAHH@Z DD 010d01H | |
DD 0420dH | |
xdata ENDS | |
; COMDAT xdata | |
xdata SEGMENT | |
$unwind$?_Atomic_fetch_add_4@std@@YAKPECKKW4memory_order@1@@Z DD 011201H | |
DD 06212H | |
xdata ENDS | |
; Function compile flags: /Odtp | |
_TEXT SEGMENT | |
?example@@YAXXZ PROC ; example | |
; File C:\Users\bion\Desktop\test.cpp | |
; Line 5 | |
$LN3: | |
00000 48 83 ec 28 sub rsp, 40 ; 00000028H | |
; Line 6 | |
00004 33 d2 xor edx, edx | |
00006 48 8d 0d 00 00 | |
00 00 lea rcx, OFFSET FLAT:?i@@3U?$atomic@H@std@@A ; i | |
0000d e8 00 00 00 00 call ??E_Atomic_int@std@@QEAAHH@Z ; std::_Atomic_int::operator++ | |
; Line 7 | |
00012 48 83 c4 28 add rsp, 40 ; 00000028H | |
00016 c3 ret 0 | |
?example@@YAXXZ ENDP ; example | |
_TEXT ENDS | |
; Function compile flags: /Odtp | |
; COMDAT ?atomic_fetch_add@std@@YAHPEAU_Atomic_int@1@H@Z | |
_TEXT SEGMENT | |
_Atom$ = 48 | |
_Value$ = 56 | |
?atomic_fetch_add@std@@YAHPEAU_Atomic_int@1@H@Z PROC ; std::atomic_fetch_add, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xxatomic | |
; Line 743 | |
$LN3: | |
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx | |
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx | |
00009 48 83 ec 28 sub rsp, 40 ; 00000028H | |
; Line 744 | |
0000d 41 b8 05 00 00 | |
00 mov r8d, 5 | |
00013 8b 54 24 38 mov edx, DWORD PTR _Value$[rsp] | |
00017 48 8b 4c 24 30 mov rcx, QWORD PTR _Atom$[rsp] | |
0001c e8 00 00 00 00 call ?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z ; std::atomic_fetch_add_explicit | |
; Line 745 | |
00021 48 83 c4 28 add rsp, 40 ; 00000028H | |
00025 c3 ret 0 | |
?atomic_fetch_add@std@@YAHPEAU_Atomic_int@1@H@Z ENDP ; std::atomic_fetch_add | |
_TEXT ENDS | |
; Function compile flags: /Odtp | |
; COMDAT ?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z | |
_TEXT SEGMENT | |
$T1 = 32 | |
_Atom$ = 64 | |
_Value$ = 72 | |
_Order$ = 80 | |
?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z PROC ; std::atomic_fetch_add_explicit, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xxatomic | |
; Line 734 | |
$LN3: | |
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d | |
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx | |
00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx | |
0000e 48 83 ec 38 sub rsp, 56 ; 00000038H | |
00012 48 c7 44 24 20 | |
fe ff ff ff mov QWORD PTR $T1[rsp], -2 | |
; Line 735 | |
0001b 48 8b 44 24 40 mov rax, QWORD PTR _Atom$[rsp] | |
00020 44 8b 44 24 50 mov r8d, DWORD PTR _Order$[rsp] | |
00025 8b 54 24 48 mov edx, DWORD PTR _Value$[rsp] | |
00029 48 8b c8 mov rcx, rax | |
0002c e8 00 00 00 00 call ?_Atomic_fetch_add_4@std@@YAKPECKKW4memory_order@1@@Z ; std::_Atomic_fetch_add_4 | |
00031 90 npad 1 | |
; Line 736 | |
00032 48 83 c4 38 add rsp, 56 ; 00000038H | |
00036 c3 ret 0 | |
?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z ENDP ; std::atomic_fetch_add_explicit | |
_TEXT ENDS | |
; Function compile flags: /Odtp | |
; COMDAT ??E_Atomic_int@std@@QEAAHH@Z | |
_TEXT SEGMENT | |
this$ = 48 | |
__formal$ = 56 | |
??E_Atomic_int@std@@QEAAHH@Z PROC ; std::_Atomic_int::operator++, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xxatomic | |
; Line 829 | |
$LN3: | |
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx | |
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx | |
00009 48 83 ec 28 sub rsp, 40 ; 00000028H | |
; Line 830 | |
0000d ba 01 00 00 00 mov edx, 1 | |
00012 48 8b 4c 24 30 mov rcx, QWORD PTR this$[rsp] | |
00017 e8 00 00 00 00 call ?atomic_fetch_add@std@@YAHPEAU_Atomic_int@1@H@Z ; std::atomic_fetch_add | |
; Line 831 | |
0001c 48 83 c4 28 add rsp, 40 ; 00000028H | |
00020 c3 ret 0 | |
??E_Atomic_int@std@@QEAAHH@Z ENDP ; std::_Atomic_int::operator++ | |
_TEXT ENDS | |
; Function compile flags: /Odtp | |
; COMDAT ?_Atomic_fetch_add_4@std@@YAKPECKKW4memory_order@1@@Z | |
_TEXT SEGMENT | |
tv64 = 32 | |
_Tgt$ = 64 | |
_Value$ = 72 | |
_Order$ = 80 | |
?_Atomic_fetch_add_4@std@@YAKPECKKW4memory_order@1@@Z PROC ; std::_Atomic_fetch_add_4, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xatomic.h | |
; Line 1367 | |
$LN11: | |
00000 44 89 44 24 18 mov DWORD PTR [rsp+24], r8d | |
00005 89 54 24 10 mov DWORD PTR [rsp+16], edx | |
00009 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx | |
0000e 48 83 ec 38 sub rsp, 56 ; 00000038H | |
; Line 1368 | |
00012 8b 44 24 50 mov eax, DWORD PTR _Order$[rsp] | |
00016 89 44 24 20 mov DWORD PTR tv64[rsp], eax | |
0001a 83 7c 24 20 05 cmp DWORD PTR tv64[rsp], 5 | |
0001f 77 58 ja SHORT $LN8@Atomic_fet | |
00021 48 63 44 24 20 movsxd rax, DWORD PTR tv64[rsp] | |
00026 48 8d 0d 00 00 | |
00 00 lea rcx, OFFSET FLAT:__ImageBase | |
0002d 8b 84 81 00 00 | |
00 00 mov eax, DWORD PTR $LN10@Atomic_fet[rcx+rax*4] | |
00034 48 03 c1 add rax, rcx | |
00037 ff e0 jmp rax | |
$LN4@Atomic_fet: | |
; Line 1370 | |
00039 8b 54 24 48 mov edx, DWORD PTR _Value$[rsp] | |
0003d 48 8b 4c 24 40 mov rcx, QWORD PTR _Tgt$[rsp] | |
00042 e8 00 00 00 00 call ?_Fetch_add_relaxed_4@std@@YAKPECKK@Z ; std::_Fetch_add_relaxed_4 | |
00047 eb 32 jmp SHORT $LN1@Atomic_fet | |
$LN5@Atomic_fet: | |
; Line 1374 | |
00049 8b 54 24 48 mov edx, DWORD PTR _Value$[rsp] | |
0004d 48 8b 4c 24 40 mov rcx, QWORD PTR _Tgt$[rsp] | |
00052 e8 00 00 00 00 call ?_Fetch_add_acquire_4@std@@YAKPECKK@Z ; std::_Fetch_add_acquire_4 | |
00057 eb 22 jmp SHORT $LN1@Atomic_fet | |
$LN6@Atomic_fet: | |
; Line 1377 | |
00059 8b 54 24 48 mov edx, DWORD PTR _Value$[rsp] | |
0005d 48 8b 4c 24 40 mov rcx, QWORD PTR _Tgt$[rsp] | |
00062 e8 00 00 00 00 call ?_Fetch_add_release_4@std@@YAKPECKK@Z ; std::_Fetch_add_release_4 | |
00067 eb 12 jmp SHORT $LN1@Atomic_fet | |
$LN7@Atomic_fet: | |
; Line 1381 | |
00069 8b 54 24 48 mov edx, DWORD PTR _Value$[rsp] | |
0006d 48 8b 4c 24 40 mov rcx, QWORD PTR _Tgt$[rsp] | |
00072 e8 00 00 00 00 call ?_Fetch_add_seq_cst_4@std@@YAKPECKK@Z ; std::_Fetch_add_seq_cst_4 | |
00077 eb 02 jmp SHORT $LN1@Atomic_fet | |
$LN8@Atomic_fet: | |
; Line 1385 | |
00079 33 c0 xor eax, eax | |
$LN1@Atomic_fet: | |
; Line 1387 | |
0007b 48 83 c4 38 add rsp, 56 ; 00000038H | |
0007f c3 ret 0 | |
$LN10@Atomic_fet: | |
00080 00 00 00 00 DD $LN4@Atomic_fet | |
00084 00 00 00 00 DD $LN5@Atomic_fet | |
00088 00 00 00 00 DD $LN5@Atomic_fet | |
0008c 00 00 00 00 DD $LN6@Atomic_fet | |
00090 00 00 00 00 DD $LN7@Atomic_fet | |
00094 00 00 00 00 DD $LN7@Atomic_fet | |
?_Atomic_fetch_add_4@std@@YAKPECKKW4memory_order@1@@Z ENDP ; std::_Atomic_fetch_add_4 | |
_TEXT ENDS | |
; Function compile flags: /Odtp | |
; COMDAT ?_Fetch_add_release_4@std@@YAKPECKK@Z | |
_TEXT SEGMENT | |
_Tgt$ = 8 | |
_Value$ = 16 | |
?_Fetch_add_release_4@std@@YAKPECKK@Z PROC ; std::_Fetch_add_release_4, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xatomic.h | |
; Line 1361 | |
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx | |
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx | |
; Line 1362 | |
00009 8b 44 24 10 mov eax, DWORD PTR _Value$[rsp] | |
0000d 48 8b 4c 24 08 mov rcx, QWORD PTR _Tgt$[rsp] | |
00012 f0 0f c1 01 lock xadd DWORD PTR [rcx], eax | |
; Line 1364 | |
00016 c3 ret 0 | |
?_Fetch_add_release_4@std@@YAKPECKK@Z ENDP ; std::_Fetch_add_release_4 | |
_TEXT ENDS | |
; Function compile flags: /Odtp | |
; COMDAT ?_Fetch_add_acquire_4@std@@YAKPECKK@Z | |
_TEXT SEGMENT | |
_Tgt$ = 8 | |
_Value$ = 16 | |
?_Fetch_add_acquire_4@std@@YAKPECKK@Z PROC ; std::_Fetch_add_acquire_4, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xatomic.h | |
; Line 1355 | |
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx | |
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx | |
; Line 1356 | |
00009 8b 44 24 10 mov eax, DWORD PTR _Value$[rsp] | |
0000d 48 8b 4c 24 08 mov rcx, QWORD PTR _Tgt$[rsp] | |
00012 f0 0f c1 01 lock xadd DWORD PTR [rcx], eax | |
; Line 1358 | |
00016 c3 ret 0 | |
?_Fetch_add_acquire_4@std@@YAKPECKK@Z ENDP ; std::_Fetch_add_acquire_4 | |
_TEXT ENDS | |
; Function compile flags: /Odtp | |
; COMDAT ?_Fetch_add_relaxed_4@std@@YAKPECKK@Z | |
_TEXT SEGMENT | |
_Tgt$ = 8 | |
_Value$ = 16 | |
?_Fetch_add_relaxed_4@std@@YAKPECKK@Z PROC ; std::_Fetch_add_relaxed_4, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xatomic.h | |
; Line 1349 | |
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx | |
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx | |
; Line 1350 | |
00009 8b 44 24 10 mov eax, DWORD PTR _Value$[rsp] | |
0000d 48 8b 4c 24 08 mov rcx, QWORD PTR _Tgt$[rsp] | |
00012 f0 0f c1 01 lock xadd DWORD PTR [rcx], eax | |
; Line 1352 | |
00016 c3 ret 0 | |
?_Fetch_add_relaxed_4@std@@YAKPECKK@Z ENDP ; std::_Fetch_add_relaxed_4 | |
_TEXT ENDS | |
; Function compile flags: /Odtp | |
; COMDAT ?_Fetch_add_seq_cst_4@std@@YAKPECKK@Z | |
_TEXT SEGMENT | |
_Tgt$ = 8 | |
_Value$ = 16 | |
?_Fetch_add_seq_cst_4@std@@YAKPECKK@Z PROC ; std::_Fetch_add_seq_cst_4, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xatomic.h | |
; Line 1343 | |
00000 89 54 24 10 mov DWORD PTR [rsp+16], edx | |
00004 48 89 4c 24 08 mov QWORD PTR [rsp+8], rcx | |
; Line 1344 | |
00009 8b 44 24 10 mov eax, DWORD PTR _Value$[rsp] | |
0000d 48 8b 4c 24 08 mov rcx, QWORD PTR _Tgt$[rsp] | |
00012 f0 0f c1 01 lock xadd DWORD PTR [rcx], eax | |
; Line 1346 | |
00016 c3 ret 0 | |
?_Fetch_add_seq_cst_4@std@@YAKPECKK@Z ENDP ; std::_Fetch_add_seq_cst_4 | |
_TEXT ENDS | |
END |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; Listing generated by Microsoft (R) Optimizing Compiler Version 19.20.27404.0 | |
include listing.inc | |
INCLUDELIB LIBCMT | |
INCLUDELIB OLDNAMES | |
PUBLIC ?i@@3U?$atomic@H@std@@A ; i | |
_BSS SEGMENT | |
?i@@3U?$atomic@H@std@@A DD 01H DUP (?) ; i | |
_BSS ENDS | |
PUBLIC ?_Fetch_add_seq_cst_4@std@@YAKPECKK@Z ; std::_Fetch_add_seq_cst_4 | |
PUBLIC ?_Fetch_add_relaxed_4@std@@YAKPECKK@Z ; std::_Fetch_add_relaxed_4 | |
PUBLIC ?_Fetch_add_acquire_4@std@@YAKPECKK@Z ; std::_Fetch_add_acquire_4 | |
PUBLIC ?_Fetch_add_release_4@std@@YAKPECKK@Z ; std::_Fetch_add_release_4 | |
PUBLIC ?_Atomic_fetch_add_4@std@@YAKPECKKW4memory_order@1@@Z ; std::_Atomic_fetch_add_4 | |
PUBLIC ??E_Atomic_int@std@@QEAAHH@Z ; std::_Atomic_int::operator++ | |
PUBLIC ?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z ; std::atomic_fetch_add_explicit | |
PUBLIC ?atomic_fetch_add@std@@YAHPEAU_Atomic_int@1@H@Z ; std::atomic_fetch_add | |
PUBLIC ?example@@YAXXZ ; example | |
EXTRN __ImageBase:BYTE | |
; Function compile flags: /Ogtpy | |
; COMDAT ?example@@YAXXZ | |
_TEXT SEGMENT | |
?example@@YAXXZ PROC ; example, COMDAT | |
; File C:\Users\bion\Desktop\test.cpp | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xatomic.h | |
; Line 1344 | |
00000 b8 01 00 00 00 mov eax, 1 | |
00005 f0 0f c1 05 00 | |
00 00 00 lock xadd DWORD PTR ?i@@3U?$atomic@H@std@@A, eax ; i | |
; File C:\Users\bion\Desktop\test.cpp | |
; Line 7 | |
0000d c3 ret 0 | |
?example@@YAXXZ ENDP ; example | |
_TEXT ENDS | |
; Function compile flags: /Ogtpy | |
; COMDAT ?atomic_fetch_add@std@@YAHPEAU_Atomic_int@1@H@Z | |
_TEXT SEGMENT | |
_Atom$ = 8 | |
_Value$ = 16 | |
?atomic_fetch_add@std@@YAHPEAU_Atomic_int@1@H@Z PROC ; std::atomic_fetch_add, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xxatomic | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xatomic.h | |
; Line 1344 | |
00000 f0 0f c1 11 lock xadd DWORD PTR [rcx], edx | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xxatomic | |
; Line 745 | |
00004 8b c2 mov eax, edx | |
00006 c3 ret 0 | |
?atomic_fetch_add@std@@YAHPEAU_Atomic_int@1@H@Z ENDP ; std::atomic_fetch_add | |
_TEXT ENDS | |
; Function compile flags: /Ogtpy | |
; COMDAT ?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z | |
_TEXT SEGMENT | |
_Atom$ = 8 | |
_Value$ = 16 | |
_Order$ = 24 | |
?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z PROC ; std::atomic_fetch_add_explicit, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xxatomic | |
; Line 734 | |
00000 44 8b ca mov r9d, edx | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xatomic.h | |
; Line 1368 | |
00003 41 83 f8 05 cmp r8d, 5 | |
00007 77 20 ja SHORT $LN10@atomic_fet | |
00009 49 63 c0 movsxd rax, r8d | |
0000c 4c 8d 05 00 00 | |
00 00 lea r8, OFFSET FLAT:__ImageBase | |
00013 41 8b 94 80 00 | |
00 00 00 mov edx, DWORD PTR $LN20@atomic_fet[r8+rax*4] | |
0001b 49 03 d0 add rdx, r8 | |
0001e ff e2 jmp rdx | |
$LN6@atomic_fet: | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xxatomic | |
; Line 736 | |
00020 f0 44 0f c1 09 lock xadd DWORD PTR [rcx], r9d | |
00025 41 8b c1 mov eax, r9d | |
00028 c3 ret 0 | |
$LN10@atomic_fet: | |
; Line 735 | |
00029 33 c0 xor eax, eax | |
; Line 736 | |
0002b c3 ret 0 | |
$LN20@atomic_fet: | |
0002c 00 00 00 00 DD $LN6@atomic_fet | |
00030 00 00 00 00 DD $LN6@atomic_fet | |
00034 00 00 00 00 DD $LN6@atomic_fet | |
00038 00 00 00 00 DD $LN6@atomic_fet | |
0003c 00 00 00 00 DD $LN6@atomic_fet | |
00040 00 00 00 00 DD $LN6@atomic_fet | |
?atomic_fetch_add_explicit@std@@YAHPEAU_Atomic_int@1@HW4memory_order@1@@Z ENDP ; std::atomic_fetch_add_explicit | |
_TEXT ENDS | |
; Function compile flags: /Ogtpy | |
; COMDAT ??E_Atomic_int@std@@QEAAHH@Z | |
_TEXT SEGMENT | |
this$ = 8 | |
__formal$ = 16 | |
??E_Atomic_int@std@@QEAAHH@Z PROC ; std::_Atomic_int::operator++, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xxatomic | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xatomic.h | |
; Line 1344 | |
00000 b8 01 00 00 00 mov eax, 1 | |
00005 f0 0f c1 01 lock xadd DWORD PTR [rcx], eax | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xxatomic | |
; Line 831 | |
00009 c3 ret 0 | |
??E_Atomic_int@std@@QEAAHH@Z ENDP ; std::_Atomic_int::operator++ | |
_TEXT ENDS | |
; Function compile flags: /Ogtpy | |
; COMDAT ?_Atomic_fetch_add_4@std@@YAKPECKKW4memory_order@1@@Z | |
_TEXT SEGMENT | |
_Tgt$ = 8 | |
_Value$ = 16 | |
_Order$ = 24 | |
?_Atomic_fetch_add_4@std@@YAKPECKKW4memory_order@1@@Z PROC ; std::_Atomic_fetch_add_4, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xatomic.h | |
; Line 1368 | |
00000 41 83 f8 05 cmp r8d, 5 | |
00004 77 1f ja SHORT $LN8@Atomic_fet | |
00006 49 63 c0 movsxd rax, r8d | |
00009 4c 8d 0d 00 00 | |
00 00 lea r9, OFFSET FLAT:__ImageBase | |
00010 45 8b 84 81 00 | |
00 00 00 mov r8d, DWORD PTR $LN18@Atomic_fet[r9+rax*4] | |
00018 4d 03 c1 add r8, r9 | |
0001b 41 ff e0 jmp r8 | |
$LN4@Atomic_fet: | |
; Line 1387 | |
0001e f0 0f c1 11 lock xadd DWORD PTR [rcx], edx | |
00022 8b c2 mov eax, edx | |
00024 c3 ret 0 | |
$LN8@Atomic_fet: | |
; Line 1385 | |
00025 33 c0 xor eax, eax | |
; Line 1387 | |
00027 c3 ret 0 | |
$LN18@Atomic_fet: | |
00028 00 00 00 00 DD $LN4@Atomic_fet | |
0002c 00 00 00 00 DD $LN4@Atomic_fet | |
00030 00 00 00 00 DD $LN4@Atomic_fet | |
00034 00 00 00 00 DD $LN4@Atomic_fet | |
00038 00 00 00 00 DD $LN4@Atomic_fet | |
0003c 00 00 00 00 DD $LN4@Atomic_fet | |
?_Atomic_fetch_add_4@std@@YAKPECKKW4memory_order@1@@Z ENDP ; std::_Atomic_fetch_add_4 | |
_TEXT ENDS | |
; Function compile flags: /Ogtpy | |
; COMDAT ?_Fetch_add_release_4@std@@YAKPECKK@Z | |
_TEXT SEGMENT | |
_Tgt$ = 8 | |
_Value$ = 16 | |
?_Fetch_add_release_4@std@@YAKPECKK@Z PROC ; std::_Fetch_add_release_4, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xatomic.h | |
; Line 1362 | |
00000 f0 0f c1 11 lock xadd DWORD PTR [rcx], edx | |
00004 8b c2 mov eax, edx | |
; Line 1364 | |
00006 c3 ret 0 | |
?_Fetch_add_release_4@std@@YAKPECKK@Z ENDP ; std::_Fetch_add_release_4 | |
_TEXT ENDS | |
; Function compile flags: /Ogtpy | |
; COMDAT ?_Fetch_add_acquire_4@std@@YAKPECKK@Z | |
_TEXT SEGMENT | |
_Tgt$ = 8 | |
_Value$ = 16 | |
?_Fetch_add_acquire_4@std@@YAKPECKK@Z PROC ; std::_Fetch_add_acquire_4, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xatomic.h | |
; Line 1356 | |
00000 f0 0f c1 11 lock xadd DWORD PTR [rcx], edx | |
00004 8b c2 mov eax, edx | |
; Line 1358 | |
00006 c3 ret 0 | |
?_Fetch_add_acquire_4@std@@YAKPECKK@Z ENDP ; std::_Fetch_add_acquire_4 | |
_TEXT ENDS | |
; Function compile flags: /Ogtpy | |
; COMDAT ?_Fetch_add_relaxed_4@std@@YAKPECKK@Z | |
_TEXT SEGMENT | |
_Tgt$ = 8 | |
_Value$ = 16 | |
?_Fetch_add_relaxed_4@std@@YAKPECKK@Z PROC ; std::_Fetch_add_relaxed_4, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xatomic.h | |
; Line 1350 | |
00000 f0 0f c1 11 lock xadd DWORD PTR [rcx], edx | |
00004 8b c2 mov eax, edx | |
; Line 1352 | |
00006 c3 ret 0 | |
?_Fetch_add_relaxed_4@std@@YAKPECKK@Z ENDP ; std::_Fetch_add_relaxed_4 | |
_TEXT ENDS | |
; Function compile flags: /Ogtpy | |
; COMDAT ?_Fetch_add_seq_cst_4@std@@YAKPECKK@Z | |
_TEXT SEGMENT | |
_Tgt$ = 8 | |
_Value$ = 16 | |
?_Fetch_add_seq_cst_4@std@@YAKPECKK@Z PROC ; std::_Fetch_add_seq_cst_4, COMDAT | |
; File C:\Dev\msvc\src\vctools\crt\crtw32\stdhpp\xatomic.h | |
; Line 1344 | |
00000 f0 0f c1 11 lock xadd DWORD PTR [rcx], edx | |
00004 8b c2 mov eax, edx | |
; Line 1346 | |
00006 c3 ret 0 | |
?_Fetch_add_seq_cst_4@std@@YAKPECKK@Z ENDP ; std::_Fetch_add_seq_cst_4 | |
_TEXT ENDS | |
END |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <atomic> | |
std::atomic<int> i; | |
void example() { | |
i++; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment