Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11766
Последний выпуск: 19.06.2015

Регистры

Регистр - это определенный участок памяти внутри самого процессора, от 8-ми до 32-х бит длиной, который используется для промежуточного хранения информации, обрабатываемой процессором. Некоторые регистры содержат только определенную информацию.

Регистры общего назначения - EAX, EBX, ECX, EDX. Они 32-х битные и делятся еще на две части, нижние из которых AX, BX, CD, DX - 16-ти битные, и деляется еще на два 8-ми битных регистра. Так, АХ делится на AH и AL, DX на DH и DL и т.д. Буква "Н" означает верхний регистр.

Так, AH и AL каждый по одному байту, АХ - 2 байта (или word - слово), ЕАХ - 4 байта (или dword - двойное слово). Эти регистры используются для операций с данными, такими, как сравнение, математические операции или запись данных в память.

Регистр СХ чаще всего используется как счетчик в циклах.

АН в DOS программах используется как определитель, какой сервис будет использоваться при вызове INT.

Регистры сегментов - это CS, DS, ES, FS, GS, SS. Эти регистры 16-ти битные, и содержат в себе первую половину адреса "оффсет:сегмент".

  • CS - сегмент кода (страница памяти) исполняемой в данный момент программы.
  • DS - сегмент (страница) данных исполняемой программы, т.е. константы, строковые ссылки и т.д.
  • SS - сегмент стека исполняемой программы.
  • ES, FS, GS - дополнительные сегменты, и могут не использоваться программой.

Регистры оффсета - EIP, ESP, EBP, ESI, EDI. Эти регистры 32-х битные, нижняя половина которых доступна как регистры IP, SP, BP, SI, DI.

  • EIP - указатель команд, и содержит оффсет (величину смещения относительно начала программы) на линию кода, которая будет исполняться следующей. То есть полный адрес на следующую исполняемую линию кода будет CS:ЕIP.
  • Регистр ESP указывает на адрес вершины стека (адрес, куда будет заноситься следующая переменная командой PUSH).
  • Регистр ЕВР содержит адрес, начиная с которого в стек вносится или забирается информация (или "глубина" стека). Параметры функций имеют положительный сдвиг относительно ЕВР, локальные переменные - отрицательный сдвиг, а полный адрес этого участка памяти будет SS:EBP.
  • Регистр ESI - адрес источника, и содержит адрес начала блока информации для операции "переместить блок" (полный адрес DS:SI), а регистр EDI- адрес назначения в этой операции (полный адрес ES:EDI).

Регистры управления - CR0, CR1, CR2, CR3. Эти 32-х битные регистры устанавливают режим работы процессора (нормальный, защищенный и т.д.), постраничное распределение памяти и т.д. Они доступны только для программ в первом кольце памяти (Kernel, например). Трогать их не следует.

Регистры дебаггера - DR0, DR1, DR2, DR3, DR4, DR5, DR6, DR7. Первые четыре регистра содержат адреса на точки прерывания, остальные устанавливают, что должно произойти при достижении точки прерывания.

Контрольные регистры - TR6, TR7. Используются для контроля постраничной системы распределения памяти операционной системой. Нужны только если вы собираетесь написать свою ОС.

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 

Комментарии

1.
Аноним
+0 / -1
Мне нравитсяМне не нравится
9 мая 2006, 00:25:58
ECX - разве не счетчик цикла?
2.
Аноним
+1 / -0
Мне нравитсяМне не нравится
21 апреля 2006, 03:03:57
To DVA
Это условное название. Даже регистры A (accelerator), D (data), C (counter), B (base) используются в особых целях. Например, A и D при умножении (mul), C в циклах (loop), B в 16-разрядной адресации как база.
Так, что сложно назвать их регистрами общего назначения.
3.
Аноним
Мне нравитсяМне не нравится
7 апреля 2006, 20:49:25
Блин, опечатка (в конце): не ESP, а EIP.
4.
Аноним
Мне нравитсяМне не нравится
7 апреля 2006, 20:48:03
А как же регистры для 64-разрядных систем:
rax, rcx, rdx, rbx, rsi, rdi, rsp, rbp, ...

"Регистры общего назначения - EAX, EBX, ECX, EDX." - Ха-ха-ха, вроде все EXX регистры, кроме ESP - общего назначения ;)
5.
Аноним
+2 / -0
Мне нравитсяМне не нравится
15 марта 2006, 01:48:41
"Трогать их не следует" - это меня прикалывает больше всего - типа: они есть, но не про вашу честь :)

А как же, позвольте, раз уж мы говорим о кольцах и т.п., то уж и о защищенном режиме подразумеваем, а как в него переходить нетрогая эти регистры - загадка.
6.
Аноним
+4 / -0
Мне нравитсяМне не нравится
6 июня 2005, 09:44:03
мм.. могу ошибаться, но cr0
и подобные доступны не на
первом кольце, а на нулевом.
т.е. в тексте очепятка.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог