これは ASM コードです。
__declspec(naked) void foo(something* t)
{
__asm {
push ebp
mov ebp, esp
mov eax, dword ptr [t]
mov dword ptr [eax], 0
mov dword ptr [eax+4], 0
mov esp, ebp
pop ebp
}
これはコードの C バージョンになります。
struct something {
_int64 a;
_int64 b;
_int64 c;
};
void foo(struct* something) {
something->a = 0;
}
さて、t を eax に格納せずに同じことができるかどうか疑問に思っています。代わりに ebp を使用してください。しかし、「a」がどこにあるのか (ebp+28 または ebp)、それが可能かどうかさえわかりません。これはうまくいかないようです。これが可能なら誰でも、どうやって?
mov dword ptr [ebp+28], 0
mov dword ptr [ebp+24], 0