Курсовая работа: Эмуляция команды математического сопроцессора FSUB

Процесс обработки информации приближен к процессам, проводимым в математическом сопроцессоре Intel 80x87. В программе на диалоговом уровне реализована возможность задания числового значения, которое нужно будет вычесть из вершиной стека эмулированного математического сопроцессора, и вычитание разных элементов стека. В том числе и идущих не по порядку. В процессе работы эмуляции сопроцессора часто необходимо быстрое обращение к битам отдельного числа для этого используется следующая структура bits, представленная в таблице 2.1

Таблица 2.1

тип

имя переменной

размер(бит)

unsigned char

b0

1

unsigned char

b1

1

unsigned char

b2

1

unsigned char

b3

1

unsigned char

b4

1

unsigned char

b5

1

unsigned char

b6

1

unsigned char

b7

1

Структура bits объединенa в структур bait_tabс полями в таблице 2.2

Таблица 2.2

тип

название

bits

bit

unsigned char

bait


Определим структуры для мантиссы и порядка:

Структура ud16 с полями в таблице 2.3

Таблица 2.3

тип

название

bait_tab

data[2]

short

val

Структура ud64 с полями в таблице 2.4

Таблица 2.4

тип

название

bait_tab

data[8]

_int64

val

Структура ud80 с полями в таблице 2.5

Таблица 2.5

тип

название

ud64

mant

ud16

exp

В самом же сопроцессоре стековые регистры имеют вид структуры str с полями, преставленной в таблице 2.6

Таблица 2.6

типа

название

bait_tab

data[10]

ud80

val

Также в программе определены регистры состояния, тегов и контроля.

Структура regs представлена в таблице 2.7


Таблица 2.7

тип

имя переменной

размер(бит)

unsigned

IE

1

unsigned

DE

1

unsigned

ZE

1

unsigned

OE

1

unsigned

UE

1

unsigned

PE

1

unsigned

SF

1

unsigned

ES

1

unsigned

C0

1

unsigned

C1

1

unsigned

C2

1

unsigned

TOP

3

unsigned

C3

1

unsigned

B

1

Структура _sreg с полями в таблице 2.8

Таблица 2.8

тип

название

regs

data

unsigned short int

sreg

Структура _creg, включает в себя следующую структуру:

Таблица 2.9

тип

имя переменной

размер(бит)

unsigned

IM

1

unsigned

DM

1

unsigned

ZM

1

unsigned

OM

1

unsigned

UM

1

unsigned

PM

1

unsigned

PC

2

unsigned

RC

2


Таблица 2.10

тип

название

unsigned short int

creg

Структура _twr, включает в себя следующую структуру:

Таблица 2.11

тип

имя переменной

размер(бит)

unsigned char

pr0

2

структура _twr с полями в таблице 2.12

Таблица 2.12

типа

название

unsigned short int

twr

2.2 Выбор методов решения задачи и разработка основных алгоритмов предметной области

Для вычитания двух стековых регистров, приводим порядок к одному значению и вычитаем мантиссы. Далее если необходимо производим нормализацию. Если в результате произошло переполнение мантиссы или порядка, устанавливаем флаги и возвращаем 0.

К-во Просмотров: 253
Бесплатно скачать Курсовая работа: Эмуляция команды математического сопроцессора FSUB