【发布时间】:2012-11-11 02:38:51
【问题描述】:
leal(%eax,%ecx,4), %edx
当我阅读我的计算机系统书籍时, 如果存在 $eax 包含 x 值且 %ecx 包含 y 的前提, 那么上面的意思是,x+4y 放入 %edx。
如果是的话
movl(%eax,%ecx,4), %edx
,那不就是上面的leal表达式吗?
据我所知,leal创建的地址可以被引用,而不是像movl那样自己引用,而是
当我看到leal(%eax,%ecx,4), %edx 等于将x+4y 放入edx 寄存器时,
然后没有t it mean that it 'referenced'%eaxand%ecx` 并提取值 x 和 y 用于计算??
- “()”不是表示“引用”吗??
【问题讨论】:
-
那我能问你点事吗?如果 %eax 的整数值不是地址怎么办?那么如果它是leal,会发生错误吗?虽然对movl没关系?
-
leal不知道它是否是地址,它只是计算一个值。另一方面,movl会尝试从地址中读取一个值,并且会注意到它是否无效(不可访问)。