Funktionen zur Laufzeit in C generieren

Ich möchte eine Funktion zur Laufzeit in C generieren. Und damit meine ich, ich möchte im Wesentlichen etwas Speicher zuweisen, darauf zeigen und es über den Funktionszeiger ausführen. Mir ist klar, dass dies ein sehr komplexes Thema ist und meine Frage naiv ist. Mir ist auch klar, dass es einige sehr robuste Bibliotheken gibt, die dies tun (z.Nanojit).

Aber ich möchte die Technik lernen, beginnend mit den Grundlagen. Könnte mir jemand, der sich auskennt, ein sehr einfaches Beispiel in C geben?

BEARBEITEN: Die Antwort unten ist großartig, aber hier ist das gleiche Beispiel für Windows:

#include <Windows.h>

#define MEMSIZE 100*1024*1024
typedef void (*func_t)(void);

int main() {

    HANDLE proc = GetCurrentProcess();
    LPVOID p = VirtualAlloc(
        NULL,
        MEMSIZE,
        MEM_RESERVE|MEM_COMMIT,
        PAGE_EXECUTE_READWRITE);

    func_t func = (func_t)p;
    PDWORD code = (PDWORD)p;
    code[0] = 0xC3; // ret

    if(FlushInstructionCache(
        proc,
        NULL,
        0))
    {
        func();
    }

    CloseHandle(proc);
    VirtualFree(p, 0, MEM_RELEASE);
    return 0;
}

Antworten auf die Frage(3)

Ihre Antwort auf die Frage