15/09/21 02:30:31.41 wiEjTubo.net
>>495
命令実行中にEIPが次の命令指してるって認識がないらしく例えばCALL命令の実装はこんななってる。
static void call_rel32(Emulator* emu)
{
int32_t diff = get_sign_code32(emu, 1);
push32(emu, emu->eip + 5);
emu->eip += (diff + 5);
}
命令実行中に命令長5バイトを足して帳尻合わせてる。しかも2箇所。
命令ごとにこんなことしてちゃコーディングスタイルとしても問題ありだよなあ。