如果eax中有一个char数组的地址,那么0(%eax)和(%eax)之间的区别是什么?或者它们是否相同,都指的是数组中的第一个元素?
答案 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将数据字节放入数组中。