【问题标题】:assembly language tricky memory addresses汇编语言棘手的内存地址
【发布时间】:2014-04-21 21:47:12
【问题描述】:

我们得到提示(使用 AT&T ASM)

eax      = A

ebx      = B

ecx      = &X

edx      = &Y

我知道 (%eax) 会抓取 A 的内存位置中的数据,但是 (%edx) 会抓取什么呢?比如说通话

 movl (%edx), %ebx

还有

movl %eax, (%ecx)

第一次调用是否只是将 %ebx 的当前值替换为 &Y(y 的内存位置),而第二次调用是否将内存位置 &X 中的数据替换为值 A?

movl %edx, %eda 操作呢?这是否只是将 &Y 的内存位置移动到 eax 中?

谢谢

【问题讨论】:

  • ecx 将包含寄存器X 的地址,我不知道你的代码是什么!

标签: c gcc assembly att


【解决方案1】:

从“C”语言的角度来看:

eax      = A

eax 获取 A 值的副本。

ebx      = B

ebx 获取 B 的值的副本。

ecx      = &X

ecx 获取 X 的地址(或内存位置)。

edx      = &Y

edx 获取 y 的地址(或内存位置)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-24
    • 2012-01-19
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多