Главная страница
Предыдущая страница (как организована работа с FPU)

Основные команды загрузки и сохранения

С помощью команд fld|fild|fst|fstp происходит обмен данными между ячейками памяти и регистрами сопроцессора:
1) fld источник – загрузить вещественное число в стек. Источник – m32|m64|m80. Например: fld qword ptr x – в Паскале загружает число типа double в сопроцессор

2) fild источник – загрузить целое число со знаком в стек. Источник – m16|m32|m64. Например, команды fild dword ptr x в Паскале загружает целое число типа longint (32-разрядное) в сопроцессор. При этом считается, что загружается число со знаком

3) fst|fstp приёмник – копирует st(0) в приёмник. Приёмник – m32|m64|st(n) для fst и m32|m64|m80|st(n) для fstp. fstp после этого выталкивает число st(0) из стека, а fst оставляет на месте. В случае st(n) команда fstp сначала загружает значение, а потом выталкивает из стека

4) fist|fistp приёмник – преобразовывает число из вершины стека в целое со знаком и записывает его в приёмник. Не грузить слишком большие числа! Если IM=0, то программа вылетает. Для fist приёмник – m16|m32; для fistp приёмник – m16|m32|m64. fistp после этого выталкивает число из стека, а fist оставляет на месте. При этом считается, что вещественное число преобразуется в целое со знаком

5) fnop – отсутствие операции. Занимает место и время, но не выполняет никакого действия

Загрузка некоторых чисел в сопроцессор

Вообще, целые числа загружаются в сопроцессор с помощью команды fild. Но некоторые числа также можно загрузить следующими командами:

Начиная с сопроцессора 80387, все константы хранятся в более точном формате, чем 80-битный, и при загрузке в стек происходит округление в соответствии с полем RC

Следующая страница (арифметические команды сопроцессора)