public main
main proc near
push ebp
mov ebp, esp
and esp, 0FFFFFFF0h
sub esp, 30h
mov dword ptr [esp], 8 ; size
call _malloc
mov [esp+2Ch], eax
mov dword ptr [esp+4], 4
mov eax, [esp+2Ch]
mov [esp], eax
call __start
Приведенный выше код представляет собой часть большого проекта, над которым я работаю. Я пытаюсь изменить этот код на эквивалент C, но мне трудно понять, как работает malloc.
Я считаю, что 8 байтов будут размером выделенной памяти; однако я не уверен в этой строке.
mov eax, [esp+2ch]
Что делает malloc для eax?
Кроме того, это будет эквивалентный C-код?
int main(void)
{
int *ptr1;
ptr1 = (int *)malloc(sizeof(8));
*ptr1 = 4;
__start(*ptr1);