J'essaie d'appeler un code natif en langage machine. Voici ce que j'ai jusqu'à présent (il y a une erreur de bus) :
char prog[] = {'\xc3'}; // x86 ret instruction
int main()
{
typedef double (*dfunc)();
dfunc d = (dfunc)(&prog[0]);
(*d)();
return 0;
}
Il appelle correctement la fonction et arrive à l'instruction ret. Mais lorsqu'il essaie d'exécuter l'instruction ret, il obtient une erreur SIGBUS. Est-ce parce que j'exécute du code sur une page qui n'est pas autorisée à être exécutée ou quelque chose comme ça ?
Alors qu'est-ce que je fais de mal ici ?