Re: Вызов внешних функций из виртуальной машины
От: Clinch  
Дата: 15.12.08 14:13
Оценка:
Здравствуйте, nen777w, Вы писали:

N>Озадачился тут вопросом. Как происходит вызов внешних функций из виртуальной машины Java или C# или ещё чего то.

N>Ситуация мне видится так.
N>При инициализаци виртуальной машины и передачи байткода в неё происходит инициализация некоторой таблицы внешних функций, состоящей из указателя на функцию общего вида типа:
N>
N>typedef void (*lpfn_general)(void);
N>

N>и какого то описателя. Описывающего к какому виду эту функцию нужно привести внтури кода виртуальной машины выполняющей вызов внешней функции.

N>Остается непонятно одно, как это привидение в виртуальной машины происходит?

N>Если например описатель функции будет некий enum типа такого который используется в MFC в картах сообщений. Т.е.

N>
N>enum fn_type {
N>  fnt_Rv_Pv //void (*fn)(void)
N> ,fnt_Rv_Pi //void (*fn)(int)
N> ,fnt_Ri_Pui //int (*fn)(unsigned int)
N>};
N>


N>то это приведёт к тому что мы упрёмся в невозможность описать все возможные варианты и понтяно что это решение тупиковое. Как же тогда записывается описатель функции и происходит привидение в динамике, если конечно я правильно представил что вызов таких функций происходит через таблицы?


N>Спасибо.


зачем далеко ходить, посмотрите связку С — Java vm ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.