gpt4 book ai didi

c++ - GLOBAL__I_main 函数

转载 作者:太空狗 更新时间:2023-10-29 20:30:37 25 4
gpt4 key购买 nike

我反汇编了一个用C++写的简单程序,有一个函数:

080486a8 <_GLOBAL__I_main>:
80486a8: 55 push %ebp
80486a9: 89 e5 mov %esp,%ebp
80486ab: 83 ec 18 sub $0x18,%esp
80486ae: c7 44 24 04 ff ff 00 movl $0xffff,0x4(%esp)
80486b5: 00
80486b6: c7 04 24 01 00 00 00 movl $0x1,(%esp)
80486bd: e8 a6 ff ff ff call 8048668 <_Z41__static_initialization_and_destruction_0ii>
80486c2: c9 leave
80486c3: c3 ret
80486c4: 90 nop
80486c5: 90 nop
80486c6: 90 nop
80486c7: 90 nop
80486c8: 90 nop
80486c9: 90 nop
80486ca: 90 nop
80486cb: 90 nop
80486cc: 90 nop
80486cd: 90 nop
80486ce: 90 nop
80486cf: 90 nop

这个有什么作用?为什么RET指令后有这么多NOP操作?

最佳答案

如 netrom 所述,__static_initialization_and_destruction_0(int, int) 安排调用全局构造函数和析构函数。

许多编译器在函数后添加nop 指令以启用增量重新链接。如果您稍微更改函数并且它增长,链接器不必移动后面的所有函数。相反,增长覆盖了一些以前的 nop。

关于c++ - GLOBAL__I_main 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6478306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com