Поделиться через


Использование символов C или C++ в блоках __asm

Блок, относящийся только к системам Майкрософт

Блок __asm может обозначать любой символ C или C++ в той области видимости, в которой находится этот блок. (Символами C и C++ считаются имена переменных, имена функций и метки, то есть имена, которые не являются символьными константами или членами объекта enum. Вызов функций-членов C++ невозможен.)

На использование символов C и C++ накладывается несколько ограничений.

  • Каждый оператор языка ассемблера может содержать только один символ C или C++. Несколько символов может находиться в одной и той же инструкции ассемблера только с выражениями LENGTH, TYPE и SIZE.

  • Объявления (прототипы) функций, ссылки на которые находятся в блоке __asm, должны быть созданы в более ранней точке программы. В противном случае компилятор не может различать имена функций и метки, находящиеся в блоке __asm.

  • Блок __asm не может использовать символы C или C++, совпадающие по написанию с зарезервированными словами MASM (вне зависимости от регистра). К зарезервированным словам MASM относятся имена инструкций, например PUSH, и имена регистров, например SI.

  • В блоках __asm не распознаются маркеры структуры и объединения.

Завершение блока, относящегося только к системам Майкрософт

См. также

Ссылки

Использование C или C++ в блоках __asm