Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 курс / Лекции / Лекция 15 - Программная модель IA-32.ppt
Скачиваний:
67
Добавлен:
18.02.2023
Размер:
389.12 Кб
Скачать

Модели памяти

Плоская модель памяти:

память представляется для программы как одно непрерывное адресное пространство, называемое линейным адресным пространством.

Код, данные и стек находятся этом пространстве.

Линейное адресное пространство состоит из байт, а диапазон адресов от 0 до 2^32-1.

Линейный адрес

Линейное

адресное

пространство

Модели памяти

Сегментная модель памяти:

память представляется для программы как группа независимых адресных пространств, называемых сегментами.

Код, данные и стек обычно содержатся в различных сегментах. Для адресации байта в сегменте программы использует логический адрес, состоящий из селектора сегмента и смещения внутри сегмента.

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

Модели памяти

Сегменты

Смещение

Сегмент

Линейное адресное пространство

Модели памяти

Адресация

 

в

реальном

 

 

 

 

 

 

 

 

 

 

 

 

 

 

режиме:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S

 

S

S

 

S

0

 

 

это

наиболее

старая

 

 

 

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

модель

памяти,

которая

 

 

 

 

 

 

 

 

 

 

 

 

 

является

 

основной

 

 

 

 

 

O

O

 

O

O

 

 

единственной)

моделью

для

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8086 процессора.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

 

A

A

 

A

A

 

 

Эта модель

похожа

на

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сегментную модель, но в этой

 

 

 

 

 

 

 

 

 

 

 

 

 

 

модели

используются

16-

 

 

 

 

Смещение

 

 

 

 

 

разрядные

 

смещения,

а

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

максимальный размер сегмента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

– 64Кб.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сегмент

 

 

 

 

 

 

Максимальный

размер

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

линейного

 

 

адресного

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пространства

в

этом

режиме

 

 

 

 

 

 

 

 

 

 

 

 

 

 

составляет 2^20 (1 Мб).

Регистры базовой среды

выполнения

В архитектуре IA-32 предусмотрено 16 основных регистров, используемых обычно при разработке программ. Все эти регистры делятся на следующие группы:

регистры общего назначения,сегментные регистры,регистр флагов,счетчик команд.

Регистры общего

назначенияРегистры общего назначения используются для хранения:

операндов логических и арифметических операций;

операндов для вычисления адреса;

указателей в памяти.

31

16 15

8 7

0

16 bit

32 bit

 

 

 

 

 

 

 

 

 

 

 

AH

 

AL

AX

EAX

 

 

 

 

 

 

 

 

 

 

 

BH

 

BL

BX

EBX

 

 

 

 

 

 

 

 

 

 

 

CH

 

CL

CX

ECX

 

 

 

 

 

 

 

 

 

 

 

DH

 

DL

DX

EDX

 

 

 

 

 

 

 

 

 

 

 

BP

 

 

EBP

 

 

 

 

 

 

 

 

 

 

 

SI

 

 

ESI

 

 

 

 

 

 

 

 

 

 

 

DI

 

 

EDI

 

 

 

 

 

 

 

 

 

 

 

SP

 

 

ESP

 

 

 

 

 

 

 

 

Регистры общего

назначенияEAX – аккумулятор, хранение результата

EBX – указатель на данные в сегменте DS

ECX – счетчик для строковых операций и циклов

EDX – I/O указатель, данные

ESI – указатель на данные в сегменте DS, источник в строковых операциях

EDI – указатель на данные в сегменте ES, назначение в строковых операциях

ESP – указатель в стеке (сегмент SS).

EBP – указатель на данные в сегменте стека (сегмент SS).

Сегментные регистры

В архитектуре IA-32 предусмотрено шесть 16- ти разрядных сегментных регистра. Это:

CS – сегмент кода,DS – сегмент данных,

ES – дополнительный сегмент данных,FS – сегмент данных (386+),

GS – сегмент данных (386+),SS – сегмент стека.

Регистр флагов

31

...

22

21

20

19

18

17

16

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

I

V

V

A

V

R

0

N

IOPL

O

D

I

T

S

Z

0

A

0

P

1

C

 

 

 

D

I

I

C

M

F

 

T

 

 

F

F

F

F

F

F

 

F

 

F

 

F

 

 

 

 

P

F

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CF – флаг переноса (1 – был перенос старшего разряда при выполнении арифметической операции, 0 – переноса не было)

PF – флаг паритета (1 – в младших 8-ми разрядах результата четное количество единиц, 0 – нет)

AF – дополнительный флаг переноса (1 – был перенос 3-го разряда, 0 – переноса не было), используется при арифметике BCD чисел.

ZF – флаг нуля (1 – результат равен нулю, 0 – не равен нулю).SF – флаг знака (дублирует старший разряд результата).

OF – флаг переполнения (1 – если был перенос из (в) разряд знака при выполнении арифметической операции, в противном случае – 0).

Счетчик команд

Регистр EIP (IP) – содержит смещение следующей команды в сегменте кода.

Программно доступен только для чтения.

Значение изменяется только с помощью команд управления.

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