2012-01-14 12 views

答えて

10

コンパイラはスタック上にMXCSRを格納するためのスペースを確保しています。

sub esp,4 
stmxcsr [ESP] 
mov EAX, [ESP] 
add esp,4 
retn 

しかし、「push ecx」は、おそらく短くても速くてもかまいません。

+0

D'oh ...まったくそれを逃した。 :) どうもありがとう。 – Mehrdad

+0

それはどのようにポップを説明しますか? – CodesInChaos

+0

@CodeInChaos:スタックポインタの復元? – Mehrdad

3

ここでのプッシュは、4バイトの一時的なスペースを割り当てるために使用されます。 [ESP]は、通常はプッシュされたリターンアドレスを指していて、上書きすることはできません。 は、対象とするABIの揮発性レジスタである可能性が高いため、ECXを保持する必要はありません。

ここでプッシュ/ポップが使用される理由は、スペース(およびスピード)最適化です。

0

これは、ESPがstmxcsr命令のターゲットとして参照するトップ・オブ・スタック・エントリを作成します。結果はEAXに保存されて戻ります。

関連する問題