我们收到提示(使用 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 中?
谢谢
最佳答案
从“C”语言的角度来看:
eax = A
eax 获取 A 值的副本。
ebx = B
ebx 获取 B 值的副本。
ecx = &X
ecx 获取 X 的地址(或内存位置)。
edx = &Y
edx 获取 y 的地址(或内存位置)。
关于c - 汇编语言棘手的内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23206591/