gpt4 book ai didi

assembly - movq 汇编函数

转载 作者:行者123 更新时间:2023-12-03 11:09:06 27 4
gpt4 key购买 nike

我正在阅读一些代码,但不确定这一行的作用:

movq (%rsp), %rsp

最佳答案

movq (假设您在谈论 x86)是四字(64 位值)的移动。这个特殊的指令:

movq (%rsp), %rsp

看起来非常像遍历堆栈帧的代码。该特定指令获取当前堆栈指针指向的四字,并将其加载到堆栈指针中,并覆盖它。

举例来说,这个代码序列(基于真实代码,在英特尔而不是 AT&T 格式中)将不断从其内容加载堆栈指针,直到超出它的 16 个字节的值为 0。
576  cmpq    [rsp+0x10],0x0
582 jz 594
588 movq rsp,[rsp]
592 jmp 576
594 ...

它可能不是堆栈帧遍历代码,但这是不寻常的,因为它会将堆栈指针转用于通常不用于的东西。

不寻常的是,向上移动堆栈帧通常涉及堆栈指针和基指针,但这通常只是向上一级(即从函数返回)。

对于上面显示的那种想要向上移动多个级别的代码,使用堆栈指针可能会更快,直到到达需要的位置,然后弹出基指针(调用约定通常会推送当前基指针)在更改它之前的指针,以便简单的 pop 将恢复旧值)。

关于assembly - movq 汇编函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3852909/

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