Во время обратного проектирования я наткнулся на очень странную программу, которая использует соглашение о вызовах, которое передает один аргумент в eax (очень странный компилятор ??). Я хочу вызвать эту функцию сейчас и не знаю, как ее объявить, IDA определяет ее как
bool __usercall foo<ax>(int param1<eax>, int param2);
где param1 передается в регистр eax. Я пробовал что-то вроде
bool MyFoo(int param1, int param2)
{
__asm mov eax, param1;
return reinterpret_cast<bool(__stdcall *)(int)>(g_FooAddress)(param2);
}
Однако, к сожалению, мой компилятор использует регистр eax при отправке param2 в стек. Есть ли способ сделать это чистым, не записывая весь вызов с помощью встроенного ассемблера? (Я использую Visual Studio, если это имеет значение)