gpt4 book ai didi

assembly - `and esp,0xfffffff0`是什么?

转载 作者:行者123 更新时间:2023-12-02 18:23:01 34 4
gpt4 key购买 nike

当我在 gdb 中反汇编 main() 时,它会重新调整此结果:

 0x0804854c <+0>:   push   ebp
0x0804854d <+1>: mov ebp,esp
0x0804854f <+3>: and esp,0xfffffff0
0x08048552 <+6>: sub esp,0x10

在代码中我检查esp注册如下:

x/32xw $esp

它使得:

0xbffffb70: 0xb7ea1515  0xb7ff0590  0x080485eb  0xb7fd2ff4
0xbffffb80: 0x080485e0 0x00000000 0xbffffc08 0xb7e88e46
0xbffffb90: 0x00000002 0xbffffc34 0xbffffc40 0xb7fe0860
0xbffffba0: 0xb7ff6821 0xffffffff 0xb7ffeff4 0x080482bc
0xbffffbb0: 0x00000001 0xbffffbf0 0xb7fefc16 0xb7fffac0
0xbffffbc0: 0xb7fe0b58 0xb7fd2ff4 0x00000000 0x00000000
0xbffffbd0: 0xbffffc08 0xd51689cb 0xfbfdbfdb 0x00000000
0xbffffbe0: 0x00000000 0x00000000 0x00000002 0x08048400

我想知道和 esp,0xfffffff0 和这些结果之间有什么关系。

最佳答案

和 esp,0xfffffff0 强制执行 16 字节堆栈对齐,这是常见的 ABI 要求。它通过屏蔽(设置为零)堆栈指针的最低有效 4 位来实现此目的,这相当于向下舍入到最接近的 16 倍数。

关于assembly - `and esp,0xfffffff0`是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28472455/

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