アセンブラを勉強しよう
■ このスレッドは過去ログ倉庫に格納されています
0034デフォルトの名無しさん
2007/03/03(土) 20:25:11MOV DWORD PTR SS:[ESP+4], EDX
esp を char* とすれば、
*(int*)(esp + 4) = edx;
だな。
C でセグメントレジスタを扱う方法はもう忘れたけど、
esp はデフォルトで ss: 付きだから気にする必要はないね。
MOV BYTE PTR SS:[ESP+8],0
の場合は
*esp = 0;
だな。
多分、内部変数を扱ってるコードなんじゃないかな。
最初の方に sub esp, (内部変数のサイズ) か何か書いてあると思う。
これで内部変数の領域をスタック上に確保してる。
分かりやすいコードを書くときは esp を ebp に退避しといてから
ebp を通して参照するんだけど、
コンパイラはその辺最適化しちゃうことがあって、
可能な限り直接 esp を通して参照することがある。
■ このスレッドは過去ログ倉庫に格納されています