2014-02-14 150 views
-1

你允許做一個抽象的調用與像LEA:是否允許LEA [x],[y]?

LEA [x], [y] 

其中x和y是一個有效的寄存器或地址。 有一天有人問我,我不知道。 負載有效地址會將y加載到地址x的 包含的值指向的位置,我認爲。 如果這種方式的代碼是有效的這將是一個怎麼辦呢?

+0

你認爲什麼:'abstract call'? LEA不是'call'指令! –

+2

否;裝配就像這樣僵硬。在任何地方使用任意複雜表達式而不是常量或變量的能力是高級語言發明的原因之一。 –

回答

6

否。LEA的唯一有效形式是LEA register, memory。 (即目標操作數必須是寄存器)。請參閱「Intel 64和IA-32架構軟件開發人員手冊」的第2卷,以獲取有關此問題的詳盡參考資料。

序列:

LEA reg, [y] 
MOV [x], reg 

相當於假想的指令;這不是一個非常有用的序列,但它也不是無用的。除了其他目的之外,它還可以用來存儲直接引用結構或數組成員的指針。

相關問題