21. СПИСОК ИНСТРУКЦИЙ С ПЛАВАЮЩЕЙ ТОЧКОЙ
========================================
Пояснения:
Операнды: r - регистр, m - память, m32 - 32 битный операнд памяти, и т.д.
Такты:
Цифры указывают минимальные значения. Промахи кеша, рассогласование и
исключения могут увеличить количество тактов.
Спариваемость:
+=спаривается с FXCH, np=не спаривается с FXCH.
i:
Перекрываются с целочисленными инструкциями. i=4 означает, что последние 4
такта могут перекрыться с целочисленными инструкциями.
fp:
Перекрываются с инструкциями с плавающей точкой. fp=2 означает. что
последние 2 такта могут перекрыться с инструкцией с плавающей точкой.
(WAIT - здесь считается инструкцией с плавающей точкой)
Опкод Операнд Число тактов Спариваемость i fp
-----------------------------------------------------------------------------
FLD r/m32/m64 1 + 0 0
FLD m80 3 np 0 0
FBLD m80 49 np 0 0
FST(P) r 1 np 0 0
FST(P) m32/m64 2 з) np 0 0
FST(P) m80 3 з) np 0 0
FBSTP m80 153 np 0 0
FILD m 3 np 2 2
FIST(P) m 6 np 0 0
FLDZ FLD1 2 np 0 0
FLDPI FLDL2E etc. 5 np 0 0
FNSTSW AX/m16 6 np 0 0
FLDCW m16 8 np 0 0
FNSTCW m16 2 np 0 0
FADD(P) r/m 3 + 2 2
FSUB(R)(P) r/m 3 + 2 2
FMUL(P) r/m 3 + 2 2 и)
FDIV(R)(P) r/m 19/33/39 м) + к) 38 л) 2
FCHS FABS 1 + 0 0
FCOM(P)(P) FUCOM r/m 1 + 0 0
FIADD FISUB(R) m 6 np 2 2
FIMUL m 6 np 2 2
FIDIV(R) m 22/36/42 м) np 38 л) 2
FICOM m 4 np 0 0
FTST 1 np 0 0
FXAM 17 np 4 0
FPREM 16-64 np 2 2
FPREM1 20-70 np 2 2
FRNDINT 19 np 0 0
FSCALE 32 np 5 0
FXTRACT 12-66 np 0 0
FSQRT 70 np 69 л) 2
FSIN FCOS FSINCOS варьируется np 2 2
F2XM1 FYL2X FYL2XP1 варьируется np 2 2
FPATAN варьируется np 2 2
FPTAN варьируется np 36 л) 0
FNOP 2 np 0 0
FXCH r 1 np 0 0
FINCSTP FDECSTP 2 np 0 0
FFREE r 2 np 0 0
FNCLEX 6-9 np 0 0
FNINIT 22 np 0 0
FNSAVE m около 300 np 0 0
FRSTOR m 73 np 0 0
WAIT 1 np 0 0
-----------------------------------------------------------------------------
Пояснения:
з) Что бы загрузить значение требуется один такт заранее.
и) 1, если перекрывается, например как FMUL
к) Если за инструкцией FXCH следует целочисленная инструкция, то спаривание
будет не полным, на один такт больше, так что целочисленная инструкция
начнется в 3 такта.
л) Не может перекрыться с инструкцией целочисленного умножения.
м) FDIV исполниться за 19, 33, 39 тактов, если операнд имеет точность 24, 53
и 64 бита соответственно. FIDIV потребуется на 3 такта больше. Точность
определяется 8-9 битами слова управления операциями с плавающей точкой.
Дальше
|