Итак, я разбирался с блоком __asm в VS2010 и не смог найти лучшего способа получить указатель на начало блока сборки.
Единственный способ, которым я знаю, как это сделать, - объявить функцию void. Одна из проблем заключается в том, что функция void будет иметь свою собственную сборку до и после моего блока сборки, и мне придется компенсировать это путем получения реального адреса функции и добавления смещения.
Пример:
C ++
void myfunc(){
__asm{
nop
nop
nop
ret
}
}
Результатом сборки будет подобное:
push ebp
mov ebp,esp
add esp,8
nop
nop
nop
retn
mov esp,ebp
pop ebp
retn
myfunc (), скорее всего, будет ошибкой при выполнении.