Уважаемые, подскажите пожалуйста каким образомможно в прогамме на языке C вставить машинный код (не ассемблер именно машинный !)
нужно спрашивать не про C, а про конкретный компилятор вообще в асме машинные инструкции вставляются с помощью db асм в C вставляется с помощью __asm но в MS Visual C так не получится
ну можно сделать массив вроде char code[]=... потом __asm { lea eax, code jmp eax } ну или как то в этом духе
это типа db но для асм-вставок в си. пример - команда NOP: Код (Text): __asm { __emit 0x90 } аналог db 90h Вообщем-то, __emit и есть ответ на вопрос топика. Другой пример - XOR EAX,EAX: Код (Text): __asm { __emit 0x33 __emit 0xC0 } Аналог db 33h, 0c0h spencer извращенец ))
я тоже узнал о ней не так давно =) кодга потребность возникла, потыкал db, повтыкал долго на ошибку компиляции и забил))
Кстати, а если собирать под 64х битную машину, то это не прокатит.. Надо отдельно асм файл билдить ml64 и линковать объектник.
эх, блин.. люди уже вовсю юзают 64 бита, а у меня до сих пор Athlon 1333 )) нуна срочно апгрейдиться.. ) (оффтоп)
__asm __volatile (".byte 0xEB;" ".byte 0x04;" ".byte 0xEB;" ".byte 0x05;" ".byte 0x89;" ".byte 0x01;");
Nouzui Практически то же, что и для ЦеПеПе - способ сказать компилятору - "не выделывайся, оптимизатор хренов, пиши шо говорят"