asm shellcode en el buffer C - prólogo

Intento construir una función en un búfer en C. con gdb puedo traducir

push   rbp
mov    rbp,rsp
(...)
leave
ret

a

0x55
0x48 0x89 0xe5
(...)
0xc9
0xc3

Entonces escribí un código C:

int main()
{
   char buffer[]={0x55,0x48,0x89,0xe5,0xc9,0xc3};
   void (*j)(void)=buffer;
   j();
}

pero mi programa parece fallar en la instrucción "push rbp" (0x55 en el búfer) ¿Sabes por qué?

Respuestas a la pregunta(1)

Su respuesta a la pregunta