- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
According to 8.2.3.2 Neither Loads Nor Stores Are Reordered with Like Operations
but I created a simple case, I found r1=1 and r2=2 happened.
#include <thread>
#include <iostream>
using namespace std;
volatile int x;
int b[500];
volatile int y;
volatile int start;
int s1;
int s2;
int s3;
int s0;
int foo()
{
while(start==0);
x=1;
asm volatile("" ::: "memory");
y=1;
}
int fool2()
{
int a,b;
while(start==0);
a=x;
asm volatile("" ::: "memory");
b=y;
if(a==0 && b==1)
s0++;
if(a==0 && b==0)
s1++;
if(a==1 && b==0)
s2++;
if(a==1 && b==1)
s3++;
}
main()
{
int i=0;
while(1)
{
x=y=0;
thread t1(foo);
thread t2(fool2);
start = 1;
t1.join();
t2.join();
i++;
if((i&0xFFFF)==0)
{
cout<<s0<<" "<<s1<<" "<<s2<<" "<<s3<<endl;
}
}
}
g++ -O2 -pthread e.cpp
gcc version 7.5.0
output:
69 86538 1 19246512
The four case (r1 and r2 with 0, 1 combination) is all possible.
I high light 4 line asm with blue color
ASM code
objdump -S a.out
a.out: file format elf64-x86-64
Disassembly of section .init:
0000000000000cd8 <_init>:
cd8: 48 83 ec 08 sub $0x8,%rsp
cdc: 48 8b 05 05 13 20 00 mov 0x201305(%rip),%rax # 201fe8 <__gmon_start__>
ce3: 48 85 c0 test %rax,%rax
ce6: 74 02 je cea <_init+0x12>
ce8: ff d0 callq *%rax
cea: 48 83 c4 08 add $0x8,%rsp
cee: c3 retq
Disassembly of section .plt:
0000000000000cf0 <.plt>:
cf0: ff 35 4a 12 20 00 pushq 0x20124a(%rip) # 201f40 <_GLOBAL_OFFSET_TABLE_+0x8>
cf6: ff 25 4c 12 20 00 jmpq *0x20124c(%rip) # 201f48 <_GLOBAL_OFFSET_TABLE_+0x10>
cfc: 0f 1f 40 00 nopl 0x0(%rax)
0000000000000d00 <_ZNSo3putEc@plt>:
d00: ff 25 4a 12 20 00 jmpq *0x20124a(%rip) # 201f50 <_ZNSo3putEc@GLIBCXX_3.4>
d06: 68 00 00 00 00 pushq $0x0
d0b: e9 e0 ff ff ff jmpq cf0 <.plt>
0000000000000d10 <_ZSt9terminatev@plt>:
d10: ff 25 42 12 20 00 jmpq *0x201242(%rip) # 201f58 <_ZSt9terminatev@GLIBCXX_3.4>
d16: 68 01 00 00 00 pushq $0x1
d1b: e9 d0 ff ff ff jmpq cf0 <.plt>
0000000000000d20 <_ZNSt6thread6_StateD2Ev@plt>:
d20: ff 25 3a 12 20 00 jmpq *0x20123a(%rip) # 201f60 <_ZNSt6thread6_StateD2Ev@GLIBCXX_3.4.22>
d26: 68 02 00 00 00 pushq $0x2
d2b: e9 c0 ff ff ff jmpq cf0 <.plt>
0000000000000d30 <_ZNSo5flushEv@plt>:
d30: ff 25 32 12 20 00 jmpq *0x201232(%rip) # 201f68 <_ZNSo5flushEv@GLIBCXX_3.4>
d36: 68 03 00 00 00 pushq $0x3
d3b: e9 b0 ff ff ff jmpq cf0 <.plt>
0000000000000d40 <__cxa_atexit@plt>:
d40: ff 25 2a 12 20 00 jmpq *0x20122a(%rip) # 201f70 <__cxa_atexit@GLIBC_2.2.5>
d46: 68 04 00 00 00 pushq $0x4
d4b: e9 a0 ff ff ff jmpq cf0 <.plt>
0000000000000d50 <_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@plt>:
d50: ff 25 22 12 20 00 jmpq *0x201222(%rip) # 201f78 <_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@GLIBCXX_3.4.22>
d56: 68 05 00 00 00 pushq $0x5
d5b: e9 90 ff ff ff jmpq cf0 <.plt>
0000000000000d60 <_Znwm@plt>:
d60: ff 25 1a 12 20 00 jmpq *0x20121a(%rip) # 201f80 <_Znwm@GLIBCXX_3.4>
d66: 68 06 00 00 00 pushq $0x6
d6b: e9 80 ff ff ff jmpq cf0 <.plt>
0000000000000d70 <_ZdlPvm@plt>:
d70: ff 25 12 12 20 00 jmpq *0x201212(%rip) # 201f88 <_ZdlPvm@CXXABI_1.3.9>
d76: 68 07 00 00 00 pushq $0x7
d7b: e9 70 ff ff ff jmpq cf0 <.plt>
0000000000000d80 <_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@plt>:
d80: ff 25 0a 12 20 00 jmpq *0x20120a(%rip) # 201f90 <_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@GLIBCXX_3.4.9>
d86: 68 08 00 00 00 pushq $0x8
d8b: e9 60 ff ff ff jmpq cf0 <.plt>
0000000000000d90 <_ZNKSt5ctypeIcE13_M_widen_initEv@plt>:
d90: ff 25 02 12 20 00 jmpq *0x201202(%rip) # 201f98 <_ZNKSt5ctypeIcE13_M_widen_initEv@GLIBCXX_3.4.11>
d96: 68 09 00 00 00 pushq $0x9
d9b: e9 50 ff ff ff jmpq cf0 <.plt>
0000000000000da0 <_ZSt16__throw_bad_castv@plt>:
da0: ff 25 fa 11 20 00 jmpq *0x2011fa(%rip) # 201fa0 <_ZSt16__throw_bad_castv@GLIBCXX_3.4>
da6: 68 0a 00 00 00 pushq $0xa
dab: e9 40 ff ff ff jmpq cf0 <.plt>
0000000000000db0 <_ZNSt8ios_base4InitC1Ev@plt>:
db0: ff 25 f2 11 20 00 jmpq *0x2011f2(%rip) # 201fa8 <_ZNSt8ios_base4InitC1Ev@GLIBCXX_3.4>
db6: 68 0b 00 00 00 pushq $0xb
dbb: e9 30 ff ff ff jmpq cf0 <.plt>
0000000000000dc0 <_ZNSt6thread4joinEv@plt>:
dc0: ff 25 ea 11 20 00 jmpq *0x2011ea(%rip) # 201fb0 <_ZNSt6thread4joinEv@GLIBCXX_3.4.11>
dc6: 68 0c 00 00 00 pushq $0xc
dcb: e9 20 ff ff ff jmpq cf0 <.plt>
0000000000000dd0 <_ZNSolsEi@plt>:
dd0: ff 25 e2 11 20 00 jmpq *0x2011e2(%rip) # 201fb8 <_ZNSolsEi@GLIBCXX_3.4>
dd6: 68 0d 00 00 00 pushq $0xd
ddb: e9 10 ff ff ff jmpq cf0 <.plt>
0000000000000de0 <_Unwind_Resume@plt>:
de0: ff 25 da 11 20 00 jmpq *0x2011da(%rip) # 201fc0 <_Unwind_Resume@GCC_3.0>
de6: 68 0e 00 00 00 pushq $0xe
deb: e9 00 ff ff ff jmpq cf0 <.plt>
Disassembly of section .plt.got:
0000000000000df0 <__cxa_finalize@plt>:
df0: ff 25 d2 11 20 00 jmpq *0x2011d2(%rip) # 201fc8 <__cxa_finalize@GLIBC_2.2.5>
df6: 66 90 xchg %ax,%ax
Disassembly of section .text:
0000000000000e00 <main>:
e00: 41 57 push %r15
e02: 41 56 push %r14
e04: 41 55 push %r13
e06: 41 54 push %r12
e08: 4c 8d 2d d9 0e 20 00 lea 0x200ed9(%rip),%r13 # 201ce8 <_ZTVNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFivEEEEEEE+0x10>
e0f: 55 push %rbp
e10: 53 push %rbx
e11: 31 db xor %ebx,%ebx
e13: 48 83 ec 38 sub $0x38,%rsp
e17: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax
e1e: 00 00
e20: 48 89 44 24 28 mov %rax,0x28(%rsp)
e25: 31 c0 xor %eax,%eax
e27: 4c 8d 64 24 20 lea 0x20(%rsp),%r12
e2c: 48 8d 6c 24 10 lea 0x10(%rsp),%rbp
e31: 4c 8d 74 24 18 lea 0x18(%rsp),%r14
e36: eb 20 jmp e58 <main+0x58>
e38: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1)
e3f: 00
e40: 48 83 7c 24 18 00 cmpq $0x0,0x18(%rsp)
e46: 0f 85 a4 01 00 00 jne ff0 <main+0x1f0>
e4c: 48 83 7c 24 10 00 cmpq $0x0,0x10(%rsp)
e52: 0f 85 98 01 00 00 jne ff0 <main+0x1f0>
e58: bf 10 00 00 00 mov $0x10,%edi
e5d: c7 05 ed 12 20 00 00 movl $0x0,0x2012ed(%rip) # 202154 <y>
e64: 00 00 00
e67: 48 c7 44 24 10 00 00 movq $0x0,0x10(%rsp)
e6e: 00 00
e70: c7 05 b6 1a 20 00 00 movl $0x0,0x201ab6(%rip) # 202930 <x>
e77: 00 00 00
e7a: e8 e1 fe ff ff callq d60 <_Znwm@plt>
e7f: 48 8d 0d 3a 03 00 00 lea 0x33a(%rip),%rcx # 11c0 <_Z3foov>
e86: 48 8b 15 43 11 20 00 mov 0x201143(%rip),%rdx # 201fd0 <pthread_create@GLIBC_2.2.5>
e8d: 4c 89 28 mov %r13,(%rax)
e90: 4c 89 e6 mov %r12,%rsi
e93: 48 89 ef mov %rbp,%rdi
e96: 48 89 44 24 20 mov %rax,0x20(%rsp)
e9b: 48 89 48 08 mov %rcx,0x8(%rax)
e9f: e8 ac fe ff ff callq d50 <_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@plt>
ea4: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi
ea9: 48 85 ff test %rdi,%rdi
eac: 74 06 je eb4 <main+0xb4>
eae: 48 8b 07 mov (%rdi),%rax
eb1: ff 50 08 callq *0x8(%rax)
eb4: bf 10 00 00 00 mov $0x10,%edi
eb9: 48 c7 44 24 18 00 00 movq $0x0,0x18(%rsp)
ec0: 00 00
ec2: e8 99 fe ff ff callq d60 <_Znwm@plt>
ec7: 48 8d 0d 12 03 00 00 lea 0x312(%rip),%rcx # 11e0 <_Z5fool2v>
ece: 48 8b 15 fb 10 20 00 mov 0x2010fb(%rip),%rdx # 201fd0 <pthread_create@GLIBC_2.2.5>
ed5: 4c 89 28 mov %r13,(%rax)
ed8: 4c 89 e6 mov %r12,%rsi
edb: 4c 89 f7 mov %r14,%rdi
ede: 48 89 44 24 20 mov %rax,0x20(%rsp)
ee3: 48 89 48 08 mov %rcx,0x8(%rax)
ee7: e8 64 fe ff ff callq d50 <_ZNSt6thread15_M_start_threadESt10unique_ptrINS_6_StateESt14default_deleteIS1_EEPFvvE@plt>
eec: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi
ef1: 48 85 ff test %rdi,%rdi
ef4: 74 06 je efc <main+0xfc>
ef6: 48 8b 07 mov (%rdi),%rax
ef9: ff 50 08 callq *0x8(%rax)
efc: 48 89 ef mov %rbp,%rdi
eff: c7 05 47 12 20 00 01 movl $0x1,0x201247(%rip) # 202150 <start>
f06: 00 00 00
f09: e8 b2 fe ff ff callq dc0 <_ZNSt6thread4joinEv@plt>
f0e: 4c 89 f7 mov %r14,%rdi
f11: e8 aa fe ff ff callq dc0 <_ZNSt6thread4joinEv@plt>
f16: 83 c3 01 add $0x1,%ebx
f19: 66 85 db test %bx,%bx
f1c: 0f 85 1e ff ff ff jne e40 <main+0x40>
f22: 8b 35 18 12 20 00 mov 0x201218(%rip),%esi # 202140 <s0>
f28: 48 8d 3d f1 10 20 00 lea 0x2010f1(%rip),%rdi # 202020 <_ZSt4cout@@GLIBCXX_3.4>
f2f: e8 9c fe ff ff callq dd0 <_ZNSolsEi@plt>
f34: 48 8d 35 09 04 00 00 lea 0x409(%rip),%rsi # 1344 <_IO_stdin_used+0x4>
f3b: ba 01 00 00 00 mov $0x1,%edx
f40: 48 89 c7 mov %rax,%rdi
f43: 49 89 c7 mov %rax,%r15
f46: e8 35 fe ff ff callq d80 <_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@plt>
f4b: 8b 35 fb 11 20 00 mov 0x2011fb(%rip),%esi # 20214c <s1>
f51: 4c 89 ff mov %r15,%rdi
f54: e8 77 fe ff ff callq dd0 <_ZNSolsEi@plt>
f59: 48 8d 35 e4 03 00 00 lea 0x3e4(%rip),%rsi # 1344 <_IO_stdin_used+0x4>
f60: ba 01 00 00 00 mov $0x1,%edx
f65: 48 89 c7 mov %rax,%rdi
f68: 49 89 c7 mov %rax,%r15
f6b: e8 10 fe ff ff callq d80 <_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@plt>
f70: 8b 35 d2 11 20 00 mov 0x2011d2(%rip),%esi # 202148 <s2>
f76: 4c 89 ff mov %r15,%rdi
f79: e8 52 fe ff ff callq dd0 <_ZNSolsEi@plt>
f7e: 48 8d 35 bf 03 00 00 lea 0x3bf(%rip),%rsi # 1344 <_IO_stdin_used+0x4>
f85: ba 01 00 00 00 mov $0x1,%edx
f8a: 48 89 c7 mov %rax,%rdi
f8d: 49 89 c7 mov %rax,%r15
f90: e8 eb fd ff ff callq d80 <_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l@plt>
f95: 8b 35 a9 11 20 00 mov 0x2011a9(%rip),%esi # 202144 <s3>
f9b: 4c 89 ff mov %r15,%rdi
f9e: e8 2d fe ff ff callq dd0 <_ZNSolsEi@plt>
fa3: 49 89 c7 mov %rax,%r15
fa6: 48 8b 00 mov (%rax),%rax
fa9: 48 8b 40 e8 mov -0x18(%rax),%rax
fad: 49 8b 84 07 f0 00 00 mov 0xf0(%r15,%rax,1),%rax
fb4: 00
fb5: 48 85 c0 test %rax,%rax
fb8: 48 89 44 24 08 mov %rax,0x8(%rsp)
fbd: 74 6c je 102b <main+0x22b>
fbf: 48 8b 44 24 08 mov 0x8(%rsp),%rax
fc4: 80 78 38 00 cmpb $0x0,0x38(%rax)
fc8: 74 2e je ff8 <main+0x1f8>
fca: 0f be 70 43 movsbl 0x43(%rax),%esi
fce: 4c 89 ff mov %r15,%rdi
fd1: e8 2a fd ff ff callq d00 <_ZNSo3putEc@plt>
fd6: 48 89 c7 mov %rax,%rdi
fd9: e8 52 fd ff ff callq d30 <_ZNSo5flushEv@plt>
fde: 48 83 7c 24 18 00 cmpq $0x0,0x18(%rsp)
fe4: 0f 84 62 fe ff ff je e4c <main+0x4c>
fea: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)
ff0: e8 1b fd ff ff callq d10 <_ZSt9terminatev@plt>
ff5: 0f 1f 00 nopl (%rax)
ff8: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi
ffd: e8 8e fd ff ff callq d90 <_ZNKSt5ctypeIcE13_M_widen_initEv@plt>
1002: 48 8b 44 24 08 mov 0x8(%rsp),%rax
1007: 48 8d 15 42 02 00 00 lea 0x242(%rip),%rdx # 1250 <_ZNKSt5ctypeIcE8do_widenEc>
100e: be 0a 00 00 00 mov $0xa,%esi
1013: 48 8b 00 mov (%rax),%rax
1016: 48 8b 40 30 mov 0x30(%rax),%rax
101a: 48 39 d0 cmp %rdx,%rax
101d: 74 af je fce <main+0x1ce>
101f: 48 8b 7c 24 08 mov 0x8(%rsp),%rdi
1024: ff d0 callq *%rax
1026: 0f be f0 movsbl %al,%esi
1029: eb a3 jmp fce <main+0x1ce>
102b: e8 70 fd ff ff callq da0 <_ZSt16__throw_bad_castv@plt>
1030: 48 83 7c 24 18 00 cmpq $0x0,0x18(%rsp)
1036: 75 b8 jne ff0 <main+0x1f0>
1038: 48 83 7c 24 10 00 cmpq $0x0,0x10(%rsp)
103e: 75 b0 jne ff0 <main+0x1f0>
1040: 48 89 c7 mov %rax,%rdi
1043: e8 98 fd ff ff callq de0 <_Unwind_Resume@plt>
1048: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi
104d: 48 89 c3 mov %rax,%rbx
1050: 48 85 ff test %rdi,%rdi
1053: 74 06 je 105b <main+0x25b>
1055: 48 8b 07 mov (%rdi),%rax
1058: ff 50 08 callq *0x8(%rax)
105b: 48 89 df mov %rbx,%rdi
105e: e8 7d fd ff ff callq de0 <_Unwind_Resume@plt>
1063: 48 8b 7c 24 20 mov 0x20(%rsp),%rdi
1068: 48 89 c3 mov %rax,%rbx
106b: 48 85 ff test %rdi,%rdi
106e: 74 06 je 1076 <main+0x276>
1070: 48 8b 07 mov (%rdi),%rax
1073: ff 50 08 callq *0x8(%rax)
1076: 48 89 d8 mov %rbx,%rax
1079: eb bd jmp 1038 <main+0x238>
107b: eb bb jmp 1038 <main+0x238>
107d: 0f 1f 00 nopl (%rax)
0000000000001080 <_GLOBAL__sub_I_x>:
1080: 48 8d 3d ad 18 20 00 lea 0x2018ad(%rip),%rdi # 202934 <_ZStL8__ioinit>
1087: 48 83 ec 08 sub $0x8,%rsp
108b: e8 20 fd ff ff callq db0 <_ZNSt8ios_base4InitC1Ev@plt>
1090: 48 8b 3d 61 0f 20 00 mov 0x200f61(%rip),%rdi # 201ff8 <_ZNSt8ios_base4InitD1Ev@GLIBCXX_3.4>
1097: 48 8d 15 6a 0f 20 00 lea 0x200f6a(%rip),%rdx # 202008 <__dso_handle>
109e: 48 8d 35 8f 18 20 00 lea 0x20188f(%rip),%rsi # 202934 <_ZStL8__ioinit>
10a5: 48 83 c4 08 add $0x8,%rsp
10a9: e9 92 fc ff ff jmpq d40 <__cxa_atexit@plt>
10ae: 66 90 xchg %ax,%ax
00000000000010b0 <_start>:
10b0: 31 ed xor %ebp,%ebp
10b2: 49 89 d1 mov %rdx,%r9
10b5: 5e pop %rsi
10b6: 48 89 e2 mov %rsp,%rdx
10b9: 48 83 e4 f0 and $0xfffffffffffffff0,%rsp
10bd: 50 push %rax
10be: 54 push %rsp
10bf: 4c 8d 05 5a 02 00 00 lea 0x25a(%rip),%r8 # 1320 <__libc_csu_fini>
10c6: 48 8d 0d e3 01 00 00 lea 0x1e3(%rip),%rcx # 12b0 <__libc_csu_init>
10cd: 48 8d 3d 2c fd ff ff lea -0x2d4(%rip),%rdi # e00 <main>
10d4: ff 15 06 0f 20 00 callq *0x200f06(%rip) # 201fe0 <__libc_start_main@GLIBC_2.2.5>
10da: f4 hlt
10db: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
00000000000010e0 <deregister_tm_clones>:
10e0: 48 8d 3d 31 0f 20 00 lea 0x200f31(%rip),%rdi # 202018 <__TMC_END__>
10e7: 55 push %rbp
10e8: 48 8d 05 29 0f 20 00 lea 0x200f29(%rip),%rax # 202018 <__TMC_END__>
10ef: 48 39 f8 cmp %rdi,%rax
10f2: 48 89 e5 mov %rsp,%rbp
10f5: 74 19 je 1110 <deregister_tm_clones+0x30>
10f7: 48 8b 05 da 0e 20 00 mov 0x200eda(%rip),%rax # 201fd8 <_ITM_deregisterTMCloneTable>
10fe: 48 85 c0 test %rax,%rax
1101: 74 0d je 1110 <deregister_tm_clones+0x30>
1103: 5d pop %rbp
1104: ff e0 jmpq *%rax
1106: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
110d: 00 00 00
1110: 5d pop %rbp
1111: c3 retq
1112: 0f 1f 40 00 nopl 0x0(%rax)
1116: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
111d: 00 00 00
0000000000001120 <register_tm_clones>:
1120: 48 8d 3d f1 0e 20 00 lea 0x200ef1(%rip),%rdi # 202018 <__TMC_END__>
1127: 48 8d 35 ea 0e 20 00 lea 0x200eea(%rip),%rsi # 202018 <__TMC_END__>
112e: 55 push %rbp
112f: 48 29 fe sub %rdi,%rsi
1132: 48 89 e5 mov %rsp,%rbp
1135: 48 c1 fe 03 sar $0x3,%rsi
1139: 48 89 f0 mov %rsi,%rax
113c: 48 c1 e8 3f shr $0x3f,%rax
1140: 48 01 c6 add %rax,%rsi
1143: 48 d1 fe sar %rsi
1146: 74 18 je 1160 <register_tm_clones+0x40>
1148: 48 8b 05 a1 0e 20 00 mov 0x200ea1(%rip),%rax # 201ff0 <_ITM_registerTMCloneTable>
114f: 48 85 c0 test %rax,%rax
1152: 74 0c je 1160 <register_tm_clones+0x40>
1154: 5d pop %rbp
1155: ff e0 jmpq *%rax
1157: 66 0f 1f 84 00 00 00 nopw 0x0(%rax,%rax,1)
115e: 00 00
1160: 5d pop %rbp
1161: c3 retq
1162: 0f 1f 40 00 nopl 0x0(%rax)
1166: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
116d: 00 00 00
0000000000001170 <__do_global_dtors_aux>:
1170: 80 3d b9 0f 20 00 00 cmpb $0x0,0x200fb9(%rip) # 202130 <completed.7698>
1177: 75 2f jne 11a8 <__do_global_dtors_aux+0x38>
1179: 48 83 3d 47 0e 20 00 cmpq $0x0,0x200e47(%rip) # 201fc8 <__cxa_finalize@GLIBC_2.2.5>
1180: 00
1181: 55 push %rbp
1182: 48 89 e5 mov %rsp,%rbp
1185: 74 0c je 1193 <__do_global_dtors_aux+0x23>
1187: 48 8b 3d 7a 0e 20 00 mov 0x200e7a(%rip),%rdi # 202008 <__dso_handle>
118e: e8 5d fc ff ff callq df0 <__cxa_finalize@plt>
1193: e8 48 ff ff ff callq 10e0 <deregister_tm_clones>
1198: c6 05 91 0f 20 00 01 movb $0x1,0x200f91(%rip) # 202130 <completed.7698>
119f: 5d pop %rbp
11a0: c3 retq
11a1: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
11a8: f3 c3 repz retq
11aa: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)
00000000000011b0 <frame_dummy>:
11b0: 55 push %rbp
11b1: 48 89 e5 mov %rsp,%rbp
11b4: 5d pop %rbp
11b5: e9 66 ff ff ff jmpq 1120 <register_tm_clones>
11ba: 66 0f 1f 44 00 00 nopw 0x0(%rax,%rax,1)
00000000000011c0 <_Z3foov>:
11c0: 8b 05 8a 0f 20 00 mov 0x200f8a(%rip),%eax # 202150 <start>
11c6: 85 c0 test %eax,%eax
11c8: 74 f6 je 11c0 <_Z3foov>
11ca: c7 05 5c 17 20 00 01 movl $0x1,0x20175c(%rip) # 202930 <x>
11d1: 00 00 00
11d4: c7 05 76 0f 20 00 01 movl $0x1,0x200f76(%rip) # 202154 <y>
11db: 00 00 00
11de: c3 retq
11df: 90 nop
00000000000011e0 <_Z5fool2v>:
11e0: 8b 05 6a 0f 20 00 mov 0x200f6a(%rip),%eax # 202150 <start>
11e6: 85 c0 test %eax,%eax
11e8: 74 f6 je 11e0 <_Z5fool2v>
11ea: 8b 05 40 17 20 00 mov 0x201740(%rip),%eax # 202930 <x>
11f0: 8b 15 5e 0f 20 00 mov 0x200f5e(%rip),%edx # 202154 <y>
11f6: 83 fa 01 cmp $0x1,%edx
11f9: 0f 94 c1 sete %cl
11fc: 85 c0 test %eax,%eax
11fe: 75 28 jne 1228 <_Z5fool2v+0x48>
1200: 84 c9 test %cl,%cl
1202: 74 24 je 1228 <_Z5fool2v+0x48>
1204: 83 05 35 0f 20 00 01 addl $0x1,0x200f35(%rip) # 202140 <s0>
120b: 83 f8 01 cmp $0x1,%eax
120e: 0f 94 c0 sete %al
1211: 84 c9 test %cl,%cl
1213: 74 0b je 1220 <_Z5fool2v+0x40>
1215: 84 c0 test %al,%al
1217: 74 07 je 1220 <_Z5fool2v+0x40>
1219: 83 05 24 0f 20 00 01 addl $0x1,0x200f24(%rip) # 202144 <s3>
1220: c3 retq
1221: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
1228: 89 c6 mov %eax,%esi
122a: 09 d6 or %edx,%esi
122c: 75 08 jne 1236 <_Z5fool2v+0x56>
122e: 83 05 17 0f 20 00 01 addl $0x1,0x200f17(%rip) # 20214c <s1>
1235: c3 retq
1236: 83 e8 01 sub $0x1,%eax
1239: 0f 94 c0 sete %al
123c: 85 d2 test %edx,%edx
123e: 75 d1 jne 1211 <_Z5fool2v+0x31>
1240: 84 c0 test %al,%al
1242: 74 cd je 1211 <_Z5fool2v+0x31>
1244: 83 05 fd 0e 20 00 01 addl $0x1,0x200efd(%rip) # 202148 <s2>
124b: eb c4 jmp 1211 <_Z5fool2v+0x31>
124d: 0f 1f 00 nopl (%rax)
0000000000001250 <_ZNKSt5ctypeIcE8do_widenEc>:
1250: 89 f0 mov %esi,%eax
1252: c3 retq
1253: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
125a: 00 00 00
125d: 0f 1f 00 nopl (%rax)
0000000000001260 <_ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFivEEEEEE6_M_runEv>:
1260: ff 67 08 jmpq *0x8(%rdi)
1263: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
126a: 00 00 00
126d: 0f 1f 00 nopl (%rax)
0000000000001270 <_ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFivEEEEEED1Ev>:
1270: 48 8d 05 71 0a 20 00 lea 0x200a71(%rip),%rax # 201ce8 <_ZTVNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFivEEEEEEE+0x10>
1277: 48 89 07 mov %rax,(%rdi)
127a: e9 a1 fa ff ff jmpq d20 <_ZNSt6thread6_StateD2Ev@plt>
127f: 90 nop
0000000000001280 <_ZNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFivEEEEEED0Ev>:
1280: 48 8d 05 61 0a 20 00 lea 0x200a61(%rip),%rax # 201ce8 <_ZTVNSt6thread11_State_implINS_8_InvokerISt5tupleIJPFivEEEEEEE+0x10>
1287: 53 push %rbx
1288: 48 89 fb mov %rdi,%rbx
128b: 48 89 07 mov %rax,(%rdi)
128e: e8 8d fa ff ff callq d20 <_ZNSt6thread6_StateD2Ev@plt>
1293: 48 89 df mov %rbx,%rdi
1296: be 10 00 00 00 mov $0x10,%esi
129b: 5b pop %rbx
129c: e9 cf fa ff ff jmpq d70 <_ZdlPvm@plt>
12a1: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
12a8: 00 00 00
12ab: 0f 1f 44 00 00 nopl 0x0(%rax,%rax,1)
00000000000012b0 <__libc_csu_init>:
12b0: 41 57 push %r15
12b2: 41 56 push %r14
12b4: 49 89 d7 mov %rdx,%r15
12b7: 41 55 push %r13
12b9: 41 54 push %r12
12bb: 4c 8d 25 fe 09 20 00 lea 0x2009fe(%rip),%r12 # 201cc0 <__frame_dummy_init_array_entry>
12c2: 55 push %rbp
12c3: 48 8d 2d 06 0a 20 00 lea 0x200a06(%rip),%rbp # 201cd0 <__init_array_end>
12ca: 53 push %rbx
12cb: 41 89 fd mov %edi,%r13d
12ce: 49 89 f6 mov %rsi,%r14
12d1: 4c 29 e5 sub %r12,%rbp
12d4: 48 83 ec 08 sub $0x8,%rsp
12d8: 48 c1 fd 03 sar $0x3,%rbp
12dc: e8 f7 f9 ff ff callq cd8 <_init>
12e1: 48 85 ed test %rbp,%rbp
12e4: 74 20 je 1306 <__libc_csu_init+0x56>
12e6: 31 db xor %ebx,%ebx
12e8: 0f 1f 84 00 00 00 00 nopl 0x0(%rax,%rax,1)
12ef: 00
12f0: 4c 89 fa mov %r15,%rdx
12f3: 4c 89 f6 mov %r14,%rsi
12f6: 44 89 ef mov %r13d,%edi
12f9: 41 ff 14 dc callq *(%r12,%rbx,8)
12fd: 48 83 c3 01 add $0x1,%rbx
1301: 48 39 dd cmp %rbx,%rbp
1304: 75 ea jne 12f0 <__libc_csu_init+0x40>
1306: 48 83 c4 08 add $0x8,%rsp
130a: 5b pop %rbx
130b: 5d pop %rbp
130c: 41 5c pop %r12
130e: 41 5d pop %r13
1310: 41 5e pop %r14
1312: 41 5f pop %r15
1314: c3 retq
1315: 90 nop
1316: 66 2e 0f 1f 84 00 00 nopw %cs:0x0(%rax,%rax,1)
131d: 00 00 00
0000000000001320 <__libc_csu_fini>:
1320: f3 c3 repz retq
Disassembly of section .fini:
0000000000001324 <_fini>:
1324: 48 83 ec 08 sub $0x8,%rsp
1328: 48 83 c4 08 add $0x8,%rsp
132c: c3 retq
Link Copied

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page