Генерация функций во время выполнения в C

Я хотел бы сгенерировать функцию во время выполнения в C. И под этим я подразумеваю, что я по существу хотел бы выделить некоторую память, указать на нее и выполнить ее через указатель на функцию. Я понимаю, что это очень сложная тема, и мой вопрос наивен. Я также понимаю, что есть некоторые очень надежные библиотеки, которые делают это (например,nanojit).

Но я бы хотел освоить технику, начиная с основ. Может ли кто-нибудь знающий дать мне очень простой пример на C?

РЕДАКТИРОВАТЬ: Ответ ниже - отличный, но вот тот же пример для 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;
}

Ответы на вопрос(3)

Ваш ответ на вопрос