в файл .c необходимо вставить несколько инструкций на асме. все было бы здорово в следующем примере: __asm { __emit 0xff __emit 0x1d }; но нужно вставить адрес функции: __asm { __emit offset myfunc }; не подходит, компилер ругается (illegal instruction size). пробовал и так: #define EMIT_DWORD(x) __asm __emit ((x) >> 0) & 0xff __asm __emit ((x) >> 8) & 0xff __asm __emit ((x) >> 16) & 0xff __asm __emit ((x) >> 24) & 0xff ... EMIT_DWORD(&myfunc) но и это не срабатывает (shr not constant expression in first operand). Как еще можно изловчиться, чтобы компилер (cl.exe от MS VC) меня понял?
Зачем far call в виндосе? Тем не менее, если это нужно, то: Код (Text): void foo() {} #pragma pack(1) struct { void * eip; short cs; } f = { foo, 0x1b }; void bar() { __asm call fword ptr f; }