Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 [ 78 ] 79 80 81 82 83 84 85 86 87 88

Инструкции

Операнды

Такты

Спариваемость

r/m, r/m/i

r/m, sr

sr, r/m

>=2b)

m, accum

XCHG

(E)AX,r

XCHG

r, r

XCHG

r, m

>15

XLAT

PUSH

PUSH

PUSH

>=3b)

PUSHF

POPF

PUSHA POPA

5-9 i)

Инструкции

Операнды

Такты

Спариваемость

PUSHAD POPAD

LAHFSAHF

MOVSX MOVZX

r,r/m

r, m

LDS LES LFS LGS LSS

4 c)

ADD SUB AND OR XOR

r,r/i

ADD SUB AND OR XOR

r, m

ADD SUB AND OR XOR

m,r/i

ADCSBB

r,r/i

ADCSBB

r, m

ADCSBB

m ,r/i

r,r/i

m, r/i

TEST

r, r

TEST

m, r

TEST

TEST

m ,i

INC DEC

INC DEC

NEG NOT

MULIMUL

r8/rl6/m8/ml6

MULIMUL

all other versions

r8/m8

rl6/ml6

г32/т32

IDIV

r8/m8

IDIV

rl6/ml6

IDIV

r32/m32

CBW CWDE

CWD CDQ

SHR SHL SAR SAL

SHR SHL SAR SAL

SHR SHL SAR SAL

r/m, CL

ROR ROL RCR RCL

r/m,l

6.28. Список периодов вьшолнения инструкций дляПиРММХ

Пояснения

Операнды: г - регистр, m - память, i - число, sr - сегментный регистр, т32 - 32. битный операнд памяти и т. д.

Такты: указанные значения являются минимальными. Промахи кэша, невыравнен-ность и исключения могут значительно увеличить количество требуемых для выполнений тактов.

Спариваемость: и - спаривается в и-конвейере, v - спаривается в v-конвейере, uv -спаривается в любом конвейере, пр - не спаривается.

6.28.1. Целочисленные инструкции (Р1 и РММХ)

Таблица 6.8. Время выполнения инструкций. Процессоры Р1 и РММХ



Инструкции

Операнды

Такты

Спариваемость

ROR ROL

r/m, i(xl)

ROR ROL

r/m, CL

RCR RCL

r/m,i(xl)

8/10

RCR RCL

r/m, CL

SHLDSHRD

r, i/CL

4 a)

SHLDSHRD

m, i/CL

5 a)

np J

r,r/i

4 a)

ВТ

m, i

4 a)

np 1

9 a)

np 1

BTR BTS ВТС

r,r/i

7 a)

BTR BTS ВТС

m, i

8 a)

BTR BTS ВТС

m, r

14 a)

BSF BSR

r, r/m

7-73 a)

SETcc

1/2 a)

JMP CALL

short/near

JMP CALL

>=3e)

conditionaljump

short/near

1/4/5/6 e)

CALL JMP

2/5 e

RETN

2/5 e

RETN

3/6 e)

RETF

4/7 e)

RETF

5/8 e)

J(E)CXZ

short

4-11 e)

LOOP

short

5-10 e)

BOUND

r, m

CLC STC CMC CLD STD

CLI STI

LODS

REP LODS

7+3*n g)

STOS

REP STOS

10+n g)

MOVS

REP MOVS

12+n g)

SCAS

REP(N)E SCAS

9+4*n g)

Инструкции

Операнды

Такты

Спариваемость

CMPS

REP(N)ECMPS

8+4*n g)

BSWAP

CPUID

13-16 a)

RDTSC

6-13 a) j)

Примечания

a) у этой инструкции есть префикс OFH, который занимает дополнительный такт; на Р1, если до этого не было мультитактовой инструкции (см. раздел 6.12).

b) у версий с FS и GS есть префикс OFH, смотри примечание а;

c) у версий с SS, FS и GS есть префикс OFH, смотри примечание а;

d) у версий с двумя операндами (не числами) есть префикс OFH, смотри примечание

e) смотри главу 6.22;

f) спаривается, только если в качестве приемника регистр, смотри пункт 6.26.14;

g) добавляет один такт для раскодировки префикса повторения, если ранее не пр шествовала мультитактовая инстукция (такая как CLD, например, смотри раздел 6.12)

h) спаривается, как если бы производилась запись в приемник, смотри пункт 6.26.1

i) 9, если SP кратно 4, смотри пункт 6.10.2;

j) на Р1: 6 в привилигированном или реальном режиме, 11 в непривилигированн ошибка в виртуальном. На РММХ: 8 и 13 тактов соответственно.

6.28.2. Инструкции FPU (PI и РММХ) Пояснения

Операнды: г - регистр, m - память, sr - сегментный регистр, т32 - 32-х битный о ранд памяти и так далее.

Такты: указанные значения являются минимальными. Промахи кэша, невыравн ность, ненормальные операнды и исключения могут значительно увеличить количес требуемых для выполнений тактов.

Pairability: + - pairable with FXCH, np = not pairable with FXCH.

Спариваемость: + - спариваемо с FXCH, np - не спариваемо с FXCH.

i-ov: пересечение времени выполнения с целочисленными инструкциями, i-ov - 4 оз чает, что последние четыре такта могут пересекаться с последующими целочисленнь инструкциями.



482 Ассемблер в задачах защиты uhcopmammj

fp-ov: пересечение времени выполнения с инструкциями FPU. fp-ov - 2 означает, что последние два такта могут пересекаться с последующими инструкциями FPU (Wait здесь считается как инструкция FPU).

Таблица 6.9. Время выполнения инструкций FPU. Процессоры Р1 и РММХ

Инструкция

Операнд

Такты

Спариваемоаь

i-ov

fp-ov

r/m32/m64

FBLD

48-58

FST(P)

FST(P)

m32/m64

2 m)

FST(P)

3 m)

FBSTP

148-154

FILD

FIST(P)

FLDZ FLDl

FLDPI FLDL2ET.fl.

FNSTSW

AX/ml6

FLOCW

FNSTCW

FADD(P)

FSUB(R)(P)

FMUL(P)

FDIV(R)(P)

19/33/39 p)

38 o)

FCHS FABS

FCOM(P)(P) FUCOM

FIADD FISUB(R) FIMUL

np np

J.

FIDIV(R)

22/36/42 p)

38 o)

FICOM

0

FTST

0

FX AM

17-21

0

FPREM

16-64

2

FPREMl

20-70

2

FRNDINT

9-20

Глава 6-. 0"Jh!t.V?..T.?..9f.?."P.?°P° семейства Pentium

-"Йнструкчия

Операнд

Такты

Спариваемость

i-ov

fp-ov

scale

20-32

"boract

12-66

"rqrt

69 0)

"rinTcos

65-100 r)

tsincos"

89-112 r)

"lixMi

53-59 r)

"Tix

103 r)

fySxpi

105 r)

fptan

120-147 r)

36 0)

fpatan

112-134 r)

fnop

fxch

fincstp fdecstp

ffree

fnclex

fninit

12-22

fnsave

124-300

frstor

70-95

wait

m) значение, которое нужно сохранить, должно быть готово на один такт раньше;

п) 1, если пересекающаяся инструкция, тоже что и FMUL;

о) не может пересекаться с инструкциями целочисленного умножения;

р) FDIV занимает 19, 33 или 39 тактов для 24-, 53- и 64-битной точности соответственно. FIDIV занимает на 3 такта больше. Точность задается битами 8-9 контрольного слова FPU;

г) такты типичны. Тривиальные случаи могут быть быстрее, нетривиальные - медленнее; s) может быть на 3 такта больше, когда требуется выходной результат FST, FCHS или FABS.

6.28.3. Инструкции ММХ (РММХ)

Список периодов выполнения инструкций ММХ приводить нет необходимости, посколь- они все занимают один такт, кроме инструкций умножения ММХ, которые занимают три Время выполнения инструкций умножения ММХ может пересекаться и конвейеризироваться, поэтому можно добиться производительности в одно умножение за такт.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 [ 78 ] 79 80 81 82 83 84 85 86 87 88