这是 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