Win32 в машинных кодах


           

в качетве своего рода переключателей,


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

Инструкция сравнения в зависимости от полученного результата операции изменяет все эти 6 флагов. В данном случае нас интересует состояние одного флага, а именно: флага нуля. Если сравниваемые величины равны, этот флаг будет установлен (1), если нет - сброшен (0).

Изменить ход выполнения программы в зависимости от значений флагов состояния позволяют инструкции условного перехода, имеющие следующий общий формат:

0111 ttt n &lt1 байт смещения&gt

Где ttt является кодом состояния определенных флагов (условием), а n указывает, нужно использовать само условие (при n = 0) или его отрицание (при n = 1). При выполнении условия (или его отрицания, если n = 1) к значению EIP прибавляется (с учетом знака) следующий за опкодом 1 байт смещения. В результате осуществляется переход на исполнение команд в другом месте. Если условие не выполняется - ничего не происходит, выполнение продолжается со следующей инструкции (как будто команды условного перехода не было).

Как видим, эта инструкция действует подобно короткой инструкции безусловного перехода, за тем исключением, что "работает" она избирательно - лишь при заданном состоянии определенных флагов. Коды состояния флагов приведены в следующей таблице:

КодФлагиУсловие 000OF=1Переполнение 001CF=1Перенос 010ZF=1Нулевой результат 011CF=1 или ZF=1Нулевой результат или перенос 100SF=1Отрицательный результат 101PF=1Четный паритет в младших 8 битах 110SF != OFСравнение со знаком: меньше 111ZF=0 или SF != OFСравнение со знаком: меньше или равно Таблица отражает работу команды на низком уровне. Использование состояния различных флагов, их комбинаций и создаваемые этим условия мы будем изучать по мере необходимости. Сейчас не будем углубляться в детали, рассмотрим лишь конкретный пример.


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





Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий