gpt4 book ai didi

assembly - mov 指令和寄存器 - 困惑!

转载 作者:行者123 更新时间:2023-12-04 01:40:33 26 4
gpt4 key购买 nike

我正在阅读“计算机系统:程序员视角”,第 3 章解释 mov书中给出的指导和解释让我感到困惑。

给出一个函数(第 142 页 1 的版本)

int exchange( int *xp, int y)
{
int x = *xp;
*xp = y;
return x;
}

函数体的汇编代码
movl 8(%ebp), %eax  //Get xp  
movl 12(%ebp), %edx //Get y
movl (%eax), %ecx //Get x at *xp
movl %edx, (%eax) //Store y at *xp
movl %ecx, %eax //Set x as return value

令我困惑的是,将要存储什么,以及在哪里
以下是我的理解:
movl 8(%ebp), %eax  //Get xp  

CPU 将堆栈向上移动 +8 个字节(从帧指针 %ebp ),获取存储在该位置的值,并将该值存储在寄存器 %eax 中。 (强调 - 存储值,而不是地址)

我是对的 ?
谢谢 !

最佳答案

是的,听起来你做对了。恕我直言,AT&T 8(%ebp)语法不如 Intel [ebp+8] 直观这更清楚。括号显示您正在使用寄存器中地址处的值,数字是您实际想要的地址的偏移量。

关于assembly - mov 指令和寄存器 - 困惑!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4093572/

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