インラインアセンブラで printf を呼び出す
とても簡単なことなんだけど誰も書いてないのでメモ。
char hello[] = "Hello\r\n";void main()
{
__asm
{
mov eax, offset hello;
push eax;
call dword ptr [printf];
pop ebx;
}
}
DLL 内の関数を呼ぶときには関数名を dword ptr [] で括ればいいらしい。
MessageBoxA もこれで呼べる。ただし MessageBox の場合は呼び出し規約が __stdcall なので pop ebx; は必要ない。