Описание функций Си



         

__Emit__



     __emit__

Функция Вставляет значение литерала непосредственно в код.

Синтаксис #include

void __emit__(argument,...);

Файл, содержащий dos.h прототип

Описание Функция __emit__ позволяет вам вставить значение литерала непосредственно в объектный код, как если бы он был откомпилирован. Она используется для ге- нерирования машинных инструкций без использования встроенных операторов ассемблера.

Обычно аргументы __emit__ вызывают однобайтовые машинные команды. Однако возможности данной функ- ции позволяют строить более сложные команды, вплоть до ссылок на переменные Си.

Предупреждение! Этой функцией могут воспользовать- ся только программисты, хорошо ориентирующиеся в машинном языке процессоров семейства 80х86. Вы мо- жете использовать данную функцию для помещения произвольных байтов в машинный код функции. Если эти байты будут неправильными, то это может при- вести к неисправимой ошибке. Turbo C++ не анализи- рует код, помещаемый таким образом. Если эти ма- шинные команды изменяют значение регистров или пе- ременных, то Turbo C++ не знает об этом и не сох- раняет их перед использованием данного кода, как он делает это при работе со встроенным ассембле- ром, где он, например, распознает использование регистров SI и DI и сохраняет их. Здесь же вы пре- доставлены сами себе.

Вы должны передать __emit__ по меньшей мере 1 ар- гумент; реальное число может быть больше. Аргумен- ты этой функции рассматриваются не так, как других функций: никаких преобразований они не претерпева- ют.

Имеется специальное ограничение формы аргументов __emit__. Они должны иметь форму константных выра- женй, т.е. чтобы их можно было использовать для инициализации статических объектов. Это означает, что в выражениях можно использовать целые констан- ты, константы с плавающей точкой и адреса стати- ческих объектов. Значение записывается в точке вы- зова функции также, как если они используются для инициализации данных. Можно также использовать ад- реса параметров и автоматических переменных, плюс или минус константное смещение. Для этих аргумен- тов запоминается смещение переменной в BP.




Содержание    Вперед