0(%eax)和(%eax)之间的区别是什么?

时间:2017-05-17 20:35:04

标签: assembly x86 cpu-registers att

如果eax中有一个char数组的地址,那么0(%eax)和(%eax)之间的区别是什么?或者它们是否相同,都指的是数组中的第一个元素?

2 个答案:

答案 0 :(得分:1)

它们完全一样。你可以通过组装然后拆卸这两个指令来轻松证明这一点:

movl (%eax),%edx
movl 0(%eax),%edx
    
Disassembly of section .text:

0000000000000000 <.text>:
   0:   67 8b 10                mov    (%eax),%edx
   3:   67 8b 10                mov    (%eax),%edx

请注意,它们具有完全相同的字节编码。

答案 1 :(得分:0)

他们是一样的。

假设您已正确设置eax以指向数组中第一个元素的地址,则可以使用movb将数据字节放入数组中。