可能重复:
LEA 指令的目的是什么?
当我需要某个地址的值时,我可以使用有效地址,例如push dword [str+4]
. 但是当我需要引用一个地址时——我不能使用push dword str+4
(这对我来说是显而易见且直观的方法)。
而是需要使用lea EAX, [str+4]
then push EAX
。这有点令人困惑,并且还提供了额外的处理器指令,尽管是“零时钟”指令。(见这个答案)
这种差异是否有一些硬件级别的解释,或者它只是(NASM)汇编语法的一个怪癖?
编辑: 好的,所以这个评论和我问了同样的问题。就像 Lucero 的回答一样,它在此评论中得到了回答——X86 不支持这种寻址。