Processors
Intel® Processors, Tools, and Utilities
14575 Discussions

Question Neither Loads Nor Stores Are Reordered with Like Operations

nxpFrank
Beginner
512 Views

According to 8.2.3.2 Neither Loads Nor Stores Are Reordered with Like Operations

at document https://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-3a-part-1-manual.html

 

nxpFrank_0-1626479548929.png

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

 

 

 

 

 

 

0 Kudos
0 Replies
Reply