设为首页 加入收藏

TOP

函数执行顺序(五)
2023-07-23 13:38:24 】 浏览:172
Tags:
v -0x8(%rbp),%rax 1313: 8b 55 f4 mov -0xc(%rbp),%edx 1316: 89 10 mov %edx,(%rax) 1318: 48 8d 35 e6 0c 00 00 lea 0xce6(%rip),%rsi # 2005 <_ZStL19piecewise_construct+0x1> 131f: 48 8d 3d 1a 2d 00 00 lea 0x2d1a(%rip),%rdi # 4040 <_ZSt4cout@@GLIBCXX_3.4> 1326: e8 85 fd ff ff callq 10b0 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@plt> 132b: 48 89 c2 mov %rax,%rdx 132e: 48 8b 45 f8 mov -0x8(%rbp),%rax 1332: 8b 00 mov (%rax),%eax 1334: 89 c6 mov %eax,%esi 1336: 48 89 d7 mov %rdx,%rdi 1339: e8 b2 fd ff ff callq 10f0 <_ZNSolsEi@plt> 133e: 48 89 c2 mov %rax,%rdx 1341: 48 8b 05 88 2c 00 00 mov 0x2c88(%rip),%rax # 3fd0 <_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4> 1348: 48 89 c6 mov %rax,%rsi 134b: 48 89 d7 mov %rdx,%rdi 134e: e8 6d fd ff ff callq 10c0 <_ZNSolsEPFRSoS_E@plt> 1353: 90 nop 1354: c9 leaveq 1355: c3 retq

析构函数:

0000000000001356 <_ZN6ObjectD1Ev>:
    1356:       f3 0f 1e fa             endbr64 
    135a:       55                      push   %rbp
    135b:       48 89 e5                mov    %rsp,%rbp
    135e:       48 83 ec 10             sub    $0x10,%rsp
    1362:       48 89 7d f8             mov    %rdi,-0x8(%rbp)
    1366:       48 8d 35 a1 0c 00 00    lea    0xca1(%rip),%rsi        # 200e <_ZStL19piecewise_construct+0xa>
    136d:       48 8d 3d cc 2c 00 00    lea    0x2ccc(%rip),%rdi        # 4040 <_ZSt4cout@@GLIBCXX_3.4>
    1374:       e8 37 fd ff ff          callq  10b0 <_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@plt>
    1379:       48 89 c2                mov    %rax,%rdx
    137c:       48 8b 05 4d 2c 00 00    mov    0x2c4d(%rip),%rax        # 3fd0 <_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_@GLIBCXX_3.4>
    1383:       48 89 c6                mov    %rax,%rsi
    1386:       48 89 d7                mov    %rdx,%rdi
    1389:       e8 32 fd ff ff          callq  10c0 <_ZNSolsEPFRSoS_E@plt>
    138e:       90                      nop
    138f:       c9                      leaveq 
    1390:       c3                      retq   
    1391:       66 2e 0f 1f 84 00 00    nopw   %cs:0x0(%rax,%rax,1)
    1398:       00 00 00 
    139b:       0f 1f 44 00 00          nopl   0x0(%rax,%rax,1)

全局对象的构造和析构

从上述代码可以看出,局部对象o2的构造和析构在main函数中。

那么全局对象o1和o3的构造和析构在哪呢?

我们发现存在名字为<_Z41__static_initialization_and_destruction_0ii>的汇编代码:

000000000000123c <_Z41__static_initialization_and_destruction_0ii>:
    123c:       f3 0f 1e fa             endbr64 
    1240:       55                      push   %rbp
    1241:       48 89 e5                mov    %rsp,%rbp
    1244:       48 83 ec 10             sub    $0x10,%rsp
    1248:       89 7d fc                mov    %edi,-0x4(%rbp)
    124b:       89 75 f8                mov    %esi,-0x8(%rbp)
    124e:       83 7d fc 01             cmpl   $0x1,-0x4(%rbp)
    1252:       0f 85 88 00 00 00       jne    12e0 <_Z41__static_initialization_and_destruction_0ii+0xa4>
    1258:       81 7d f8 ff ff 00 00    cmpl   $0xffff,-0x8(%rbp)
    125f:       75 7f                   jne    12e0 <_Z41__static_initialization_and_destruction_0ii+0xa4>
    1261:       48 8d 3d f4 2e 00 00    lea    0x2ef4(%rip),%rdi        # 415c <_ZStL8__ioinit>
    1268:       e8 73 fe ff ff          callq  10e0 <_ZNSt8ios_base4InitC1Ev@plt>
    126d:       48 8d 15 94 2d 00 00    lea    0x2d94(%rip),%rdx        # 4008 <__dso_handle>
    1274:       48 8d 35 e1 2e 00 00    lea    0x2ee1(%rip),%rsi        # 415c <_ZStL8__ioinit>
    127b:       48 8b 05 76 2d 00 00    mov    0x2d76(%rip),%rax        # 3ff8 <_ZNSt8ios_base4InitD1Ev@GLIBCXX_3.4>
    1282:       48 89 c7                mov    %rax,%rdi
    1285:       e8 16 fe ff ff          callq  10a0<__cxa_atexit@plt>
    128a:       be 01 00 00 00          mov    $0x1,%esi
    128f:       48 8d 3d be 2e 00 00    lea    0x2ebe(%rip),%rdi        # 4154 <o1>
    1296:       e8 61 00 00 00          callq  12fc <_ZN6ObjectC1Ei>
    129b:       48 8d 15 66 2d 00 00    lea    0x2d66(%rip),%rdx        # 4008 <__dso_handle>
    12a2:       48 8d 35 ab 2e 00 00    lea    0x2eab(%rip),%rsi        # 4154 <o1>
    12a9:       48 8d 3d a6 00 00 00    lea    0xa6(%rip),%rdi        # 1356 <_ZN6ObjectD1Ev>
    12b0:       e8 eb fd ff ff          callq  10a0<__cxa_atexit@plt>
    12b5:       be 03 00 00 00          mov    $0x3,%esi
    12ba:       48 8d 3d 97 2e 00 00    lea    0
首页 上一页 2 3 4 5 6 7 下一页 尾页 5/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇从零实现俄罗斯方块(c语言+思路.. 下一篇C++指针【cherno课程学习】

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目