FromNandの日記

自分的備忘録

【GAS】ENTER・LEAVE命令の使い方と同等コードの紹介

x86アセンブラ命令にENTER・LEAVEという物がある。

 

ENTERは2つのオペランドをとり、ENTER $0, $0などと使用する

LEAVEはアセンブリ関数の最後に記述することが多い

 

ENTER $0, $5は次のようなコードと同等である(ただし、ENTERは速度が遅い...)

push ebp
mov ebp, esp
sub esp, 5

 

LEAVEが行うことは、ENTERのほぼ逆である(こちらは遅くはないはず)

mov esp, ebp
pop ebp 

 

ENTERは遅いのでコンパイラもあまり使用しないらしい