Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lectures / 18-19

.pdf
Скачиваний:
45
Добавлен:
16.04.2013
Размер:
229.86 Кб
Скачать

Нумерация регистров стека

До записи

Поле top

SWR 000

r0 st(0)

r1 st(1)

r2 st(2)

r3 st(3)

r4 st(4)

r5 st(5)

r6 st(6)

r7 st(7)

После записи

Поле top

SWR 111

r0 st(1)

r1 st(2)

r2 st(3)

r3 st(4)

r4 st(5)

r5 st(6)

r6 st(7)

r7 st(0)

Нумерация регистров стека

До записи

Поле top

SWR 111

r0 st(1)

r1 st(2)

r2 st(3)

r3 st(4)

r4 st(5)

r5 st(6)

r6 st(7)

r7 st(0)

После записи

Поле top

SWR 110

r0 st(2)

r1 st(3)

r2 st(4)

r3 st(5)

r4 st(6)

r5 st(7)

r6 st(0)

r7 st(1)

Регистр состояния swr

Флаги исключений

Указатель

вершины

стека

Коды условий Флаг исключения

 

Ошибка стека

 

Точность

 

Антипереполнение

 

Занятость FPU

Переполнение

 

Деление на ноль

 

 

Денормализация

 

Неверная операция

Регистр управления cwr

Управление

Управление

 

 

округлением

точностью

 

Маски исключений

 

 

 

 

00

- К ближайше-

00

- короткий

му или четному

01

- резерв

01

- Округлить к

10

- двойной

большему

10

- Округлить к

11

- расшир.

меньшему

Точность

11

- Отбросить

дробную часть

Антипереполнение

 

 

 

Резерв

Переполнение

 

Деление на ноль

 

 

 

 

Денормализация

 

 

Неверная операция

Три формы математических команд

1) Без операндов

OP ; ST(1) = ST(1) OP ST(0) и

выталкивание из стека, ST(0)=результат

2) С одним операндом

OP mem ; ST(0 )= ST(0) OP mem

3) С двумя операндами

OP ST(0), ST(i)

OP ST(i), ST(0) ; dest = dest OP source

dest source

1) Команда FADD: без операндов

OP ; ST(1) = ST(1) OP ST(0) и

выталкивание из стека, ST(0)=результат

; Сегмент кода

ST(0)

ST(1)

ST(2)

 

fld

x1

41.8

?

?

 

fld

x2

12.4

41.8

?

 

fadd

 

54.2

?

?

; Сегмент данных

 

 

 

 

 

 

x1

dd

41.8

 

 

 

x2

dd

12.4

 

 

 

2) Команда FADD: один операнд

OP mem ; ST(0 )= ST(0) OP mem

; Сегмент кода

ST(0)

ST(1)

fld x1

41.8e13

?

fadd x2

54.2e13

?

 

 

 

; Сегмент данных x1 dd 41.8e13 x2 dq 12.4e13

3) Команда FADD: два операнда

 

OP

ST(0), ST(i)

 

 

 

 

OP

ST(i), ST(0); dest = dest OP source

;

 

 

 

Сегмент кода

 

 

 

 

ST(0) ST(1)

ST(2) ST(3)

fld

x1

 

4.8

?

?

?

fld

x2

 

1.4

4.8

?

?

fld

x3

 

5.2

1.4

4.8

?

fadd ST(2),ST

5.2

1.4

10.0

?

 

 

 

 

 

 

; Сегмент данных

 

 

 

x1

dd

4.8

 

 

 

 

x2

dq

1.4

 

 

 

 

x3

dt

5.2

 

 

 

 

Выражения: инфиксная и

постфиксная формы

 

 

 

Инфиксная

a + b

 

 

Постфиксная

 

 

(обратная польская запись)

+

+

a

b

a

b

 

Обход слева

 

Обход снизу

 

направо

 

вверх

a + b

a b +

Вычисление выражений

x=a+b*c-d/(a+b)

-

+

 

 

/

a

*

d

+

b

c

a

b

abc*+dab+/-

fld a fld b fld c fmul fadd fld d fld a fld b fadd fdiv fsub fstp x

Соседние файлы в папке Lectures