Witam wszystkich, mam problem z przepisaniem funkcji napisanej w C++ do/na ASM.
Funkcja oryginalna wygląda w ten sposób:
#define CALL_6(return_type, call_type, address, a1, a2, a3, a4, a5, a6) ((return_type(call_type *)(int, int, int, int, int, int))(address))((int)(a1), (int)(a2), (int)(a3), (int)(a4), (int)(a5), (int)(a6))
void SaveGame(char* save_name) { CALL_6(void, __thiscall, 0x4BEB60, *(int*)0x699538, save_name, 1, 1, 1, 0); }
kod, który mam aktualnie to:
save_name:
db 'save_name text',0
...
sub rsp,#56 //or sub rsp,#48 if already aligned
mov rcx,699538
//mov [rsp],rcx
mov rdx,save_name
//mov [rsp+8],rdx
mov r8,1
//mov [rsp+10],r8
mov r9,1
//mov [rsp+18],r9
mov [rsp+20],1
mov [rsp+28],0
call 4BEB60
add rsp,#56 //or 48 (see sub rsp)
jednak powyższy nie działa -> nie problem w 11 linii ("mov r9,1"). Proszę o pomoc w tym temacie bardziej doświadczonych ode mnie kolegów :)