Команды управления сопроцессором
Последняя группа команд предназначена для общего управления работой сопроцессора. Команды этой группы имеют особенность — перед началом своего выполнения они не проверяют наличие незамаскированных исключений. Однако такая проверка может понадобиться, в частности, для того, чтобы при параллельной работе основного процессора и сопроцессора предотвратить разрушение информации, необходимой для корректной обработки исключений, возникающих в сопроцессоре. Поэтому некоторые команды управления имеют аналоги, выполняющие те же действия плюс одну дополнительную функцию — проверку наличия исключения в сопроцессоре! Эти команды имеют одинаковые мнемокоды (и машинные коды тоже), различающиеся только вторым символом — символом n:
– мнемокод, не содержащий второго символа n, обозначает команду, которая перед началом своего выполнения проверяет наличие незамаскированных исключений;
– мнемокод, содержащий второй символ n, обозначает команду, которая перед началом своего выполнения не проверяет наличия незамаскированных исключений, то есть выполняется немедленно, что позволяет сэкономить несколько машинных тактов.
Как уже упоминалось, эти команды имеют одинаковый машинный код. Отличие лишь в том, что перед командами, не содержащими символа n, транслятор ассемблера вставляет команду WAIT. Команда WAIT является полноценной командой основного процессора, и ее при необходимости можно указывать явно. Команда WAIT имеет аналог среди команд сопроцессора — FWAIT. Обеим этим командам соответствует код операции 9bh.
Команда WAIT/FWAIT — это команда ожидания. Она предназначена для синхронизации работы процессора и сопроцессора.
Команда инициализации сопроцессора FINIT/FNINIT. Она инициализирует управляющие регистры сопроцессора определенными значениями.
Следующие две команды работают с регистром состояния SWR.
FSTSW/FNSTSW ах — команда сохранения содержимого регистра состояния SWR в регистре АХ. Эту команду целесообразно использовать для подготовки к условным переходам по описанной при рассмотрении команд сравнения схеме.
FSTSW/FNSTSW приемник — команда сохранения содержимого регистра состояния SWR в ячейке памяти. От рассмотренной ранее команда отличается типом операнда — теперь это ячейка памяти размером два байта (в соответствии с размерностью регистра SWR).
Следующие две команды, работающие с информацией в регистре управления CWR, поддерживают действие записи и чтения содержимого этого регистра.
FSTCW/FNSTCW приемник — команда сохранения содержимого регистра управления CWR в ячейке памяти размером два байта. Эту команду целесообразно использовать для анализа полей маскирования исключений, управления точностью и округления. Следует заметить,что операндом не является регистр АХ, в отличие от команды FSTSW/FNSTSW.
FLDCW источник — команда загрузки значения ячейки памяти размером 16 битов в регистр управления CWR. Эта команда выполняет действие, противоположное действию команды FSTCW/FNSTCW. Команду FLDCW целесообразно использовать для задания или изменения режима работы сопроцессора.
Следующая команда — команда без операндов FCLEX/FNCLEX — позволяет сбросить флаги исключений в регистре состояния SWR сопроцессора.
Сопроцессор имеет две команды, которые работают с указателем стека в регистре SWR.
FINCSTP — команда увеличения указателя стека на единицу (поле ТОР) в регистре SWR. Команда не имеет операндов.
FDECSTP — команда уменьшения указателя стека (поле ТОР) в регистре SWR. Команда не имеет операндов.
Следующая команда,
FFREE st(i), помечает любой регистр стека сопроцессора как пустой. Это команда освобождения регистра стека ST(i).
В группе команд управления можно выделить подгруппу команд, работающих с так называемой средой сопроцессора. Среда сопроцессора — это совокупность регистров сопроцессора и их значений. Среда сопроцессора может быть частичной или полной. О какой именно среде идет речь, определяется одной из рассмотренных далее команд:
FSAVE/FNSAVE приемник — команда сохранения полного состояния среды сопроцессора в память, адрес которой указан операндом приемник.
FRSTOR источник – команда восстановления полного состояния среды сопроцессора из области памяти, адрес которой указан операндом источник. Сопроцессор будет работать в новой среде сразу после окончания работы команды FRSTOR.
Дата добавления: 2015-04-15; просмотров: 1041;