Win32 API 呼び出しで変わらないレジスタ[2/2]
(1999/06/15 [火])
(つづき)TestReg.Asm を nl.bat でアセンブル&リンクした後、TestReg.Exe を実行するとこんな内容のダイアログが表示されます。
この結果からわかることは、保存されているレジスタは ebx, esi, edi, ebp だけである事がわかります。eax, ecx, edx は完全にその内容が破壊されています。edx:eax は一般的に関数の戻り値として利用されるので、破壊されるのは当然でしょう。ecx は通常ループのインデックスに利用されますが、内容は保存されないようです。
TESTREG が無効な命令を実行しました。 モジュール : TESTREG.EXE、アドレス : 015f:0040102e Registers: EAX=00000008 CS=015f EIP=0040102e EFLGS=00010202 EBX=55aa55aa SS=0167 ESP=0063fe38 EBP=55aa55aa ECX=0063ff68 DS=0167 ESI=55aa55aa FS=58df EDX=00000033 ES=0167 EDI=55aa55aa GS=0000 |
この結果からわかることは、保存されているレジスタは ebx, esi, edi, ebp だけである事がわかります。eax, ecx, edx は完全にその内容が破壊されています。edx:eax は一般的に関数の戻り値として利用されるので、破壊されるのは当然でしょう。ecx は通常ループのインデックスに利用されますが、内容は保存されないようです。
by seclan