Ваш вопрос высшего уровня:
"Компилируется ли VC ++ в машинный код или промежуточный код?"
Вы должны спросить MS.
Но, учитывая, что они нацелены на разные платформы (по крайней мере, CLR и родной x86), я думаю, компилятор работает поэтапно:
- Parse VC ++
- Создание высокоуровневого «промежуточного» представления кода C ++
- а) Сгенерировать код CLR или б) сгенерировать собственный код x86
Я не уверен, что связь между вашим основным вопросом и подробным вопросом, но в любом случае ...
Да, вы должны быть в состоянии установить указатель функции VC ++, чтобы он указывал на произвольный блок кода x86, используя приведение. Вы должны убедиться, что код соответствует всем соглашениям вызова / возврата VC ++. Если код VC ++ скомпилирован как код CLR, соглашения о вызовах, вероятно, включают в себя способы обозначения того, что функция является либо кодом CLR, либо собственным кодом x86. Проверьте документацию MS для соглашений о вызовах.