Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛК_МашЗавЯП_А4.doc
Скачиваний:
157
Добавлен:
10.06.2015
Размер:
19.94 Mб
Скачать
      1. Команды поддержки языков высокого уровня

        Команда

        Описание

        ENTER Размер,Вложенность

        Подготовка стека для локальных параметров процедуры. Алгоритм:

        • (EBP) => стек.

        • (ESP) => промежуточная переменная fp.

        Если Вложенность не 0, то коррекция EBP по режиму адресации и (EBP) => стек.

        • (fp) => EBP.

        • (fp) => стек.

        • ESP = (ESP) - Размер

        LEAVE

        LEAVE from procedure – выход изпроцедкры.

        Выполгяет действия, обратные комаде ENTER, приводя стек в исходное состояние:

        • (EBP) => ESP – восстановление состояния стека до процедуры.

        • EBP восстанавливается из стека.

        BOUND

        РегистрИндекса, ГраницыМассива

        BOUND check array BOUNDs – контроль нахождения индекса в гоаницах массива.

        РегистрИндекса содержит текущий индекс массива, а второй операнда определяет в памяти 2 слова или 2 двойных слова. Первое считается минимальным значением индекса, а второе - максимальным. Если текущий индекс оказывается вне границ, то генерируется команда INT 5. Используется для контроля нахождения индекса в заданных рамках, что является важным средством отладки.

      2. Команды прерываний

        Команда

        Описание

        INT НомерПрерывания

        INTerrupt – прерывание.

        Вызов прерывания с заданным номером. Алгоритм:

        • В стек содержимое регистра флагов.

        • В стек полный адрес возврата.

        Сбрасывается флаг TF.

        • Косвенный переход через элемент дескрипторной таблицы прерываний по НомерПрерывания.

        INTO

        INTerrupt if Overflow – прерывание, если переполнение.

        Вызов прерывания с заданным номером. Алгоритм:

        • Если флаг переполнения OF = 0, ничего не делается.

        • Если флаг переполнения OF = 1, то вызов команды INT.

        IRET

        Interrupt RETurn – возврат из прерывания. Алгоритм:

        • Если флаг NT = 0, то возврат в прерванную программу.

        • Если флаг NT = 1, то переключение задач.

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

      3. Команды синхронизации процессора

        Команда

        Описание

        HLT

        HaLT – останов.

        Останавливает процессор. Из него процессор может быть выведен внешним прерыванием или перезагрузкоц.

        LOCK

        LOCK signal prefix – блокировка.

        Представляет собой префикс блокировки шины. Он заставляет процессор сформировать сигнал LOCK# на время выполнения находящейся за префиксом команды. Этот сигнал блокирует запросы шины другими процессорами в мультипроцессорной системе.

        NOP

        No Operanion – нетоперации.

        Холостая команда. Не производит никаких действий.

        WAIT

        WAIT – ожидание.

        Синхронизация с сопроцессором, останавливает основной процессор до завершение операции в сопроцессоре.. Большинство команд сопроцессора автоматически вырабатывают команду.FWAIT, выполняющую то же самое.

      4. Команды обработки цепочки бит

        Команда

        Описание

        BSFприемник, источник

        BitScanForward– побитовое сканирование вперед.

        Проверка наличия битов 1 в источнике

        Номер первого бита, находящегося в состоянии 1, помещается в приемник, флажок ZF сбрасывается в 0. Если источниксодержит 0, то флаг ZF=1, а содержимое приемника не определено.

        BSR приемник, источник

        BitScanRevers– побитовое сканирование назад.

        Аналогична BSF. Разница в направлении просмотра..

        BTисточник, индекс

        BitTest – проверка битов.

        Извлечение бита (с номером индекс) из источника, помещение в флаг CF..

        BTCисточник, индекс

        Bit Test and Complement – проверка битов и инверсия.

        Извлечение бита (с номером индекс) из источника, помещение в флаг CF, инверсия.

        BTRисточник, индекс

        BitTestandReset– проверка битов и сброс в 0.

        Извлечение бита (с номером индекс) из источника, помещение в флаг CF, сброс в 0.

        BTSисточник, индекс

        BitTestandSet– проверка битов и установка в 1.

        Извлечение бита (с номером индекс) из источника, помещение в флаг CF, установка в 1.

      5. Команды управления защитой

        Команда

        Описание

        LGDT источник_48

        Load Global Descriptor Table

        Загрузка 48-битного регистра глобальной дескрипторной таблицы GDTR из памяти. Источник_48 указывает на 6-байтную величину. Это 16 бит размера и 32 бита базового адреса начала таблицы GDT.

        SGDT приемник_48

        Store Global Descriptor Table

        Сохранить регистр GDTR в памяти.

        LIDT источник_16

        Load Interrupt Descriptor Table

        Загрузка 16-битного регистра дескрипторной таблицы прерываний IDTR из памяти.

        SIDT приемник_16

        SIDT

        Сохранить регистр IDTR в памяти.

        LLDT источник_16

        Load Local Descriptor Table

        Загрузка 16-битного регистра локальной дескрипторной таблицы LLDR значением селектора глобальной дескрипторной таблицы GDT из памяти (16 бит).

        SLDT приемник_16

        Store Local Descriptor Table

        Сохранить регистр LDTR в регистре или памяти (16 бит).

        LMSW источник_16

        LoadMachineStatusWord

        Загрузка слова состояния машины MSW (младшие 16 бит регистра CRO) значением 16-битного слова памяти или регистра.

        SMSW приемник_16

        StoreMachineStatusWord

        Сохранить MSW в регистре или памяти (16 бит).

        LTRисточник_16

        LoadTestRegister

        Загрузка регистра задачи TR селектором сегмента Tss задачи из регистра или памяти (16 бит).

        STR приемник_16

        StoreTestRegister

        Сохранить регистр задачи TR в регистре или памяти (16 бит).

        LAR приемник, источник

        LoadAccessRightsbyte

        Загрузка в приемник байта прав доступа, дескриптор которого задан в источнике.

        LSL приемник, источник

        LosdSegmentLimit

        Загрузка в приемник лимита сегмента, дескриптор которого задан в источнике.

        ARPL приемник, источник

        Adjust RPL field of selector – настройка поля RPL селектора. Алгоритм:

        • ЕслиRPL_прием> RPL_источ,тофлагZF=0.

        • ЕслиRPL_прием< RPL_источ,тофлагZF=1, RPL_прием= RPL_источ.

        VERR сегмент

        VERify for Reading – проверка сегмента на чтение. Алгоритм:

        • Проверка определения сегмента в таблицах CDT или LDT.

        • Проверка, указывет ли дескриптор сегмента на сегмент кода или данных.

        • Проверка, является ли сегмент записываемым.

        • Проверка уровня привилегий..

        • Если проверки положительны, то флаг ZF=1, иначе ZF=0.

        VERW сегмент

        VERify for Writing – проверка сегмента на чтение. Алгоритм:

        • Проверка определения сегмента в таблицах CDT или LDT.

        • Проверка, указывет ли дескриптор сегмента на сегмент кода или данных.

        • Проверка, является ли сегмент считываемым.

        • Если проверки положительны, то флаг ZF=1, иначе ZF=0.

      6. Команды обмена с управляющими регистрами

        Команда

        Описание

        MOV CRn,источник

        MOV operand to system register

        Загрузка управляющего регистра CRn.

        MOV приемник,CRn

        MOV operand from system register

        Чтение управляющего регистра CRn.

        MOV DRn, источник

        MOV operand to system register

        Загрузка регистра отладки DRn.

        MOV приемник,DRn

        MOV operand from system register

        Чтение регистра отладки DRn.

        MOV TRn, источник

        MOV operand to system register

        Загрузка регистра тестирования TRn.

        MOV приемник,TRn

        MOV operand from system register

        Чтение регистра тестирования TRn.

        RDTSC

        ReaD from Time Stamp Counter

        Чтение счетчика тактов.

      7. Команды идентификации и управления архитектурой

        Команда

        Описание

        CPUID

        CPU IDentification

        Получение информации о текущем процессоре. Требует параметр в регистре EAX.

        Если EAX=0, то процессор в регистрах EBX,EDX,ECX возвращает символьную строку, специфичную для производителя. Процессоры AMD возвращают строку "AuthenticAMD", процессоры Intel - "Genuinelntel".

        Если EAX=1, то в младшем слове регистра EAX возвращает код идентификации.

        Если EAX=2, то в регистрах EAX, EBX, ECX, EDX возвращаются параметры конфигурации процессора.

        RDMSR

        ReaD from Model Specific Register

        Чтение из 64 разрядного модельно-специфического регистра MSR. Номер MSR должен находиться в регистре ECX. Алгоритм:

        • Проверить на нулевой привилегий.

        • Проверка правильности номера в регистре ECX.

        • Если все правильно, то поместить значение адресуемого MSR в регистровую пару EDX:EAX.

        WRMSR

        Write to Model Specific Register

        Запись в 64 разрядный модельно-специфического регистра MSR. Номер MSR должен находиться в регистре ECX. Алгоритм:

        • Проверить на нулевой привилегий.

        • Проверка правильности номера в регистре ECX.

        • Если все правильно, то поместить в адресуемый MSR значние из регистровой пары EDX:EAX.

      8. Управление кэшированием

Необходимость управления кэшированием вызвана тем, что большинство мультимедийных приложений оперируют большими объемами данных, при этом может случиться, что данные, загруженные в кэш, никогда не понадобятся. Чтобы оптимизировать работу кэша, в систему команд SSE-расширения и были включены команды управления кэшем.

Мнемоника

Описание

MOVNTI

MOVe using Non-Temporal of Int32

Сохранение двойного слова из 32-разрядного регистра общего назначения в памяти без использования кэша.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]