
- •Команды пересылки и условия
- •Передача и возврат управления
- •Пересылка данных
- •Условные команды
- •Базовая арифметика (основной набор)
- •Арифметика: сложение и вычитание
- •Арифметика: умножение и деление
- •Знаковое расширение A и обнуление
- •Загрузка значений в стек FPU
- •Выгрузка и пересылка значений
- •Основные арифметические операции
- •Дополнительные арифметические и трансцендентные команды
- •FPU (флаги)
- •Команды сравнения

|
МИЭТ, СПИНТех, КАИ |
Команды, упоминаемые на прошедших лекциях |
|
12 / 18 |
|
||||||||||||||
Загрузка значений в стек |
FPU |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
||||||||||
|
fld src |
Вещественное число (здесь и далее src 2 fst(i); smemg) |
|
|
|
|
|||||||||||||
|
|
|
Загрузка целых чисел |
|
|
|
|
|
|
|
|||||||||
|
fild smem |
Целое знаковое число |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
fbld smem |
Целое дв.-десятичное 80-бит. упакованное знаковое число |
|
|
|
|
|||||||||||||
|
|
|
|
Загрузка констант |
|
|
|
|
|
|
|
||||||||
|
fldz |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fld1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fldpi |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fldl2t |
log2 10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fldl2e |
log2 e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fldlg2 |
log10 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fldln2 |
ln 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Суффиксы |
|
|
|
|
|
|
|||||||||||||
|
операнд |
|
вещественный (f) |
целый (fi) |
|||||||||||||||
размера |
|
s или без суффикса |
single (32) |
short (16) |
|
||||||||||||||
команд FPU |
|
l |
|
|
double (64) |
long (32) |
|
||||||||||||
с smem; dmem |
t |
|
|
ten bytes (80) |
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
Команды пересылки и условия |
Загрузка значений в стек FPU |
|
|
|
|
|
|
|
|||||||||
|
Базовая арифметика (основной набор) |
Выгрузка и пересылка значений |
|
|
|
|
|
|
|
||||||||||
|
|
|
|
FPU |
Основные арифметические операции |
|
|
|
|
||||||||||
|
|
|
FPU (флаги) |
Дополнительные арифметические и трансцендентные ко |

|
МИЭТ, СПИНТех, КАИ |
|
Команды, упоминаемые на прошедших лекциях |
|
13 / 18 |
|
|||||||||||
Выгрузка и пересылка |
значений |
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
||||||||
|
fst dest |
|
Копирует st(0) в dest |
|
|
|
|
|
|||||||||
|
fstp dest |
|
Выталкивает st(0) в dest |
|
|
|
|
|
|||||||||
|
|
Выгрузка с округлением |
|
|
|
|
|
||||||||||
|
fist dmem |
|
Копирует st(0) в dmem как целое |
|
|
|
|
|
|||||||||
|
fistp dmem |
|
Выталкивает st(0) в dmem как целое |
|
|
|
|
|
|||||||||
|
fbst dmem |
|
Копирует st(0) в dmem как двоично-десятичное |
|
|||||||||||||
|
|
|
80-битное целое |
|
|
|
|
|
|||||||||
|
fbstp dmem |
|
Выталкивает st(0) в dmem как |
|
|
|
|
|
|||||||||
|
|
|
двоично-десятичное 80-битное целое |
|
|
|
|
|
|||||||||
|
Переименование регистров стека FPU |
|
|
|
|
|
|||||||||||
|
fxch |
|
Меняет местами st(0) и st(1) |
|
|
|
|
|
|||||||||
|
fxch %st(i) |
|
Меняет местами st(0) и st(i) |
|
|
|
|
|
|||||||||
|
Условное копирование, |
CC 2 fe; ne; b=nae; be=na; ae=nb; a=nbe; u; nug |
|
||||||||||||||
|
fcmovCC %st(i), %st(0) |
|
st(i) ! st(0); если CC 2 flags |
|
|
|
|
|
|||||||||
|
|
|
Управление тегами |
|
|
|
|
|
|||||||||
|
ffree %st(i) |
|
Помечает st(i) как свободный |
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
||||||||||
|
Команды пересылки и условия |
|
Загрузка значений в стек FPU |
|
|
|
|
|
|||||||||
|
Базовая арифметика (основной набор) |
|
Выгрузка и пересылка значений |
|
|
|
|
|
|||||||||
|
|
|
|
FPU |
|
Основные арифметические операции |
|
|
|
|
|
||||||
|
|
FPU (флаги) |
|
Дополнительные арифметические и трансцендентные ко |

|
|
МИЭТ, СПИНТех, КАИ |
Команды, упоминаемые на прошедших лекциях |
|
14 / 18 |
|
||||||||||||||||||||
Основные арифметические |
|
операции |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
Форма |
src |
|
dest |
|
|
|
|
|
|
|
Стек FPU |
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
fXXX |
smem |
smem |
st(0) |
|
|
|
|
не изменяется |
|
|
|
|
|||||||||||||
|
fiXXX smem |
smem |
st(0) |
|
|
|
|
не изменяется |
|
|
|
|
||||||||||||||
|
fXXX |
%st(i), %st(0) |
st(i) |
st(0) |
|
|
|
|
не изменяется |
|
|
|
|
|||||||||||||
|
fXXX |
%st(0), %st(i) |
st(0) |
st(i) |
|
|
|
|
не изменяется |
|
|
|
|
|||||||||||||
|
fXXXp %st(0), %st(i) |
st(0) |
st(i) # st(i 1) |
|
pop src = st(0) |
|
|
|
|
|||||||||||||||||
|
fXXXp |
st(0) |
st(1) # st(0) |
|
|
pop src = st(0) |
|
|
|
|
||||||||||||||||
XXX 2 fadd; sub; subr; mul; div; divrg |
|
|
|
|
|
|
src;dest 2 fst(0); g |
|||||||||||||||||||
|
|
Команда |
|
|
|
GAS |
|
|
|
|
|
|
|
|
Intel |
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
fadd |
(сложение) |
|
|
|
st(0) + |
= |
dest + src |
! dest |
|
|
|
|
|||||||||||||
|
fsub |
(вычитание) |
|
|
st(0) |
! |
dest |
|
dest src |
! |
dest |
|
||||||||||||||
|
fsubr (обратное вычитание) |
|
st(0) |
! |
dest |
|
src dest |
! |
dest |
|
||||||||||||||||
|
fmul |
(умножение) |
|
|
|
st(0) |
= |
dest src |
! dest |
|
|
|
|
|||||||||||||
|
fdiv |
(деление) |
|
|
st(0)= |
! |
dest |
|
dest=src |
! |
|
dest |
|
|||||||||||||
|
fdivr (обратное деление) |
|
|
=st(0) |
! |
dest |
|
src=dest |
! |
|
dest |
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
Команды пересылки и условия |
|
Загрузка значений в стек FPU |
|
|
|
|
|
|
|
|||||||||||||||
|
|
Базовая арифметика (основной набор) |
|
Выгрузка и пересылка значений |
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
FPU |
|
Основные арифметические операции |
|
|
|
|
||||||||||||||
|
|
|
FPU (флаги) |
|
Дополнительные арифметические и трансцендентные ко |

МИЭТ, СПИНТех, КАИ Команды, упоминаемые на прошедших лекциях 15 / 18
Дополнительные арифметические и трансцендентные команды
Команда |
Операнды |
|
|
|
Результат |
|
||
|
|
|
|
|
|
|
|
|
fabs |
x = st(0) |
|
jxj |
|
y st(0) |
операнды |
||
fptan |
x = st(0) |
|
tg(x) y st(1) |
|||||
fsqrt |
x = st(0) |
|
p |
|
|
|
y st(0) |
|
|
x |
|
|
|||||
|
|
|
1 |
|
y st(0) |
|
||
|
|
|
|
замещает |
||||
fsincos |
x = st(0) |
y = st(1) |
sin(x) y st(1) |
|||||
fpatan |
x = st(0); |
азимут |
(x;y) |
y st(0) |
|
|||
|
|
|
cos(x) y st(0) |
|
||||
|
|
|
|
|
|
|
||
fsin |
x = st(0) |
|
sin(x) |
|
y st(0) |
результат |
||
fyl2x |
x = st(0) > 0; y = st(1) |
y log2(x) |
y st(0) |
|||||
fcos |
x = st(0) |
|
cos(x) |
|
y st(0) |
|
||
fscale |
x = st(0); |
y = st(1) |
xx 2byc ! st(0); st(1) = y |
|
||||
f2xm1 |
x = st(0) 2 ( 1; +1) |
2 1 |
|
y st(0) |
|
|||
|
|
|
y |
|||||
fyl2xp1 |
x = st(0) 0; y = st(1) |
y log2(x + 1) y st(0) |
||||||
fprem1 |
x = st(0); |
y = st(1) |
x mod y |
|
y st(0) |
|
Команды пересылки и условия |
Загрузка значений в стек FPU |
Базовая арифметика (основной набор) |
Выгрузка и пересылка значений |
FPU |
Основные арифметические операции |
FPU (флаги) |
Дополнительные арифметические и трансцендентные ко |