Как я могу предоставить функции C пользовательской виртуальной машине?

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

Я хотел бы иметь возможность динамически регистрировать функции C на виртуальной машине следующим образом:

vm_register(printf);

Затем на моей виртуальной машине помещаю аргументы в стек и:

call printf

Проблема в том, что не зная, как много аргументов, требуемых функции, и какого типа, я не уверен, что можно использовать указатели на функции.

Есть ли универсальный тип указателя на функцию, который можно использовать в этой ситуации? Может ли кто-нибудь направить меня в правильном направлении?

6
задан Seki 11 June 2015 в 12:05
поделиться