C (или asm ):как выполнить c код, хранящийся в памяти (скопированный с меток)

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

OP_PUSH0_START:
    sp += 4; *sp = 0; // I WANT THE INSTRUCTIONS OF THIS LINE COPIED TO THE BUFFER
OP_PUSH0_END:

для этого я подумал, что следующий фрагмент кода будет работать

void * ptr0 = &&OP_PUSH0_START;
void * ptr1 = &&OP_PUSH0_END;
while(ptr0 < ptr1)
{
    buf[c++] = *ptr0;
    ptr0++;
}
goto buf; //jump to start of buffer

но я даже не могу прочитать это без ошибки памяти

Буду рад любым ссылкам или предложениям, как этого добиться

7
задан Moritz Schöfl 12 July 2012 в 08:36
поделиться