Отладка приложений

       

Встроенный ассемблер Visual C++


Прежде чем перейти к изучению инструкций языка ассемблера, поговорим немного о встроенном ассемблере Visual C++. Подобно большинству "профессиональных компиляторов C++, компилятор Visual C++ позволяет внедрить инструкции языка ассемблера прямо в строки исходного кода С и C++. Хотя в общем случае использование языка встроенного ассемблера не рекомендуется, потому что он ограничивает мобильность кода, иногда это единственный способ выполнить задачу. В главах 12 и 14 будет показано, как можно заполучить в программу импортированные функции, используя язык встроенного ассемблера.

В начале говорилось, что не обязательно знать, как писать программы на языке ассемблера, и здесь нет противоречия. Применять встроенный ассемблер — не то же самое, что писать на ассемблере полную программу — код C/C++ обеспечивает инфраструктуру приложения. Встроенный ассемблер облегчает понимание примеров и позволяет экспериментировать с инструкциями, наблюдая за их действием.

Представим первую инструкцию: 

  • NOP нет операции

NOP — это инструкция, которая ничего не делает. Компилятор иногда использует NOP как заполнитель внутри функций, чтобы держать функции, выровненными на подходящие границы памяти.

Строка встроенного ассемблера начинается с ключевого слова _asm, за которым следует инструкция языка ассемблера, которую нужно выполнить (или несколько инструкций в фигурных скобках). Две следующие подпрограммы функционально эквивалентны и показывают формат инструкций встроенного ассемблера:

void NOPFuncOne ( void ) 


{

_Asm NOP

 _Asm NOP 

}

void NOPFUncTwo ( void ) 

{

_Asm 

{

NOP

 NOP 

}

 }

В этой главе встроенный ассемблер используется для иллюстрации операций доступа к параметрам и переменным. Все рассмотренные ниже примеры с языком ассемблера содержатся в программе ASMer на сопровождающем компакт-диске.



Содержание раздела