Старый 29.04.2009, 23:35   #1
HolyAnimal
RAM 96MB
 
Аватар для HolyAnimal
 
Регистрация: 25.04.2009
Сообщений: 114
HolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всем
HolyAnimal вне форума

По умолчанию Память, регистры, ОЗУ


Память

Разделим память на три уровня, критерий разделения будет по «близости» к процессору.
Самый нижний уровень – Регистры, это память, с которой непосредственное работает процессор, её характеризует высокая скорость обращения с данными, она крайне мала по объёму. Регистры подразделяются на категории по методу использования.
Следующее звено, это ОЗУ (Оперативно запоминающее устройство), оно же (D)RAM ((dynamic) random access memory). Это временно хранилище для обработки, поскольку регистр не может в себя чисто физически поместить большой объём информации промежуточные итоги хранятся именно в ОЗУ, так же данные ожидающие своей очереди на обработку (в поле зрения исполняемого кода) находятся в ОЗУ. Более подробно ниже.
Самый верхний уровень – это так называемая не энергозависимая память, к примеру, это может быть жёсткий диск. Низкая скорость обработки данных, низкая стоимость и энергонезависимость (для хранения информации не требуется подавать напряжение). При недостаточности места в ОЗУ внешняя память хранит обрабатываемые данные (так называемая виртуальная память, файл подкачки).
Самые важные процессы проходят именно в ОЗУ и регистрах, следует отметить, что в ОЗУ к примеру пароли хранятся без кодировки/шифрования. То есть работа с ОЗУ это весьма полезный процесс )))
__________________
live(Action) {
while (Me.Emo_coder == True){
Me.Living();
If (Me.Emo == false){return 0;}
}
}
  Ответить с цитированием
Регистры
Старый 29.04.2009, 23:36   #2
HolyAnimal
RAM 96MB
 
Аватар для HolyAnimal
 
Регистрация: 25.04.2009
Сообщений: 114
HolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всем
HolyAnimal вне форума
По умолчанию Регистры

Регистры

Регистр процессора – это память с крайне высокой скоростью обращения к данным, предназначена в первую очередь для хранения промежуточных результатов обрабатываемых данных (регистр общего назначения, регистры данных). Либо в целях размещения данных необходимых для работы процессора (специальные регистры) к примеру, для смещения базовых таблиц, уровни доступа и т.д.

Итак, теперь поговорим о важном пункте, таком как объём регистров.
RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP, R8 — R15 - 64-битные
EAX, EBX, ECX, EDX - 32-битные
AX, BX, CX, DX - 16-битные
AH, AL, BH, BL, CH, CL, DH, DL - 8-битные

А вот иерархия регистров:

Код:
 EAX     EBX      ECX          EDX
 AX       BX        CX         DX
AH AL    BH BL     CH  CL      DH DL


Рассмотрим на примере AX, AH, AL, чем обусловлена иерархия:

Код:
  AX
AH   AL
Вообще AX он состоит из двух частей, то есть из AH (high) и AL (low). Если вспомнить, что AX это 16 бит, то в значение может быть от 0 до FF FF hex. А AH и AL могут принимать соответственно от 0 до FF hex.
Насколько помним, то 16 бит это тетрада в hex, её принято называть словом, состоящее из старшей (AH) и младшей части (AL).

На теории засиделись сильно. Нужно вам показать регистры вашего компа, точнее их значения.
Что ж, запускаем cmd (командная строка). Далее вводим:
debug после этого как только появится знак «-» вводим r либо R. И о чудо появляется...

И так приступим к наглядной демонстрации.
вводим:
-r AX
: 1234
-r
И о чудо, значение AX приняло 1234. Хм, это собственно и хотели показать.
__________________
live(Action) {
while (Me.Emo_coder == True){
Me.Living();
If (Me.Emo == false){return 0;}
}
}
  Ответить с цитированием
Последний раз редактировалось HolyAnimal; 15.08.2012 в 20:20. Причина: it`s not too late
Использование регистров
Старый 29.04.2009, 23:37   #3
HolyAnimal
RAM 96MB
 
Аватар для HolyAnimal
 
Регистрация: 25.04.2009
Сообщений: 114
HolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всем
HolyAnimal вне форума
По умолчанию Использование регистров

Использование регистров

Начнём с более подробного рассмотрения регистров общего назначения. Вообще регистры находятся физически в самом микропроцессоре, как следствие каждый из регистров имеет своё назначение, конечно же, в том числе использование их для хранения данных. Название регистров складывается из букв, которые означают непосредственно их назначение и свойство. Рассмотрим номенклатуру регистров общего назначения:
e X y:
е (Extended) – в переводе как расширенный, это увеличенный по объёму регистр, используется в 32 битной архитектуре.

X – условно обозначил одно из 4 значений:
A (Accumulator register) – собирать, концентрировать в дословном переводе. Используется для размещения промежуточных данных. Использование этот регистр не обязательно в некоторых командах.
B (Base register) – основной, базовый. Исходный адрес некоторого объекта хранится именно здесь.
С (Count register) – счётчик. Используется в командах производящих повторные действия. Его использование зачастую скрытно в алгоритме работы соответствующей команды.
D (Data register) – Данные. Регистр хранения данных, используется во многих командах. В некоторых командах участие этого регистра не явно.

y – характеризующая «целостности» регистра. x – слово, полная часть; h (high) – верхняя часть от целого; l (low) – нижняя часть от целого. Ну об этом уже говорилось ранее. Так вот, что значит часть от целого слова, рассмотрим на примере конкретного регистра Ax:
Задать регистр можно двумя равносильными способами,
Ax = 1A2B
Либо:
Ah = 1A Al =2B
В любом из этих случаем результат будет один и тот же, по сути Ax состоит из двух частей.
__________________
live(Action) {
while (Me.Emo_coder == True){
Me.Living();
If (Me.Emo == false){return 0;}
}
}
  Ответить с цитированием
Использование регистров
Старый 29.04.2009, 23:38   #4
HolyAnimal
RAM 96MB
 
Аватар для HolyAnimal
 
Регистрация: 25.04.2009
Сообщений: 114
HolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всем
HolyAnimal вне форума
По умолчанию Использование регистров

Использование регистров

Теперь рассмотрим более специфичные регистры общего назначения.
Регистры, используемые для сохранения целостности передачи так называемых цепочных операций. Это операции производящие обработку цепочек элементов. Длинна может быть равной: 32, 16 или 8 бит.
Опять вернёмся к тому обозначению, которое я давал ранее e X y, так как эти регистры не предназначены для хранения данных они не имеют биения слова, то есть в моём условном обозначения не имеют «y»:
si (Source Index register) – индекс источника. Содержит текущий адрес в цепочечных операциях о цепочке источнике.
di (Destination Index register) – индекс получателя. Содержит текущий адрес в цепочечных операциях о цепочке приёмнике.
__________________
live(Action) {
while (Me.Emo_coder == True){
Me.Living();
If (Me.Emo == false){return 0;}
}
}
  Ответить с цитированием
Стековые регистры
Старый 29.04.2009, 23:39   #5
HolyAnimal
RAM 96MB
 
Аватар для HolyAnimal
 
Регистрация: 25.04.2009
Сообщений: 114
HolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всем
HolyAnimal вне форума
По умолчанию Стековые регистры

Стековые регистры:
sp (Stack Pointer register) – указатель стека. Указатель вершины стека в текущем сегменте.
bp (Base Pointer register) – указатель базы кадра стека. Для организации доступа к данным внутри стека.

Немного отойдём от темы, что же такое за страшное слово стек, а то использовал это понятие, не объяснив предварительно. Так вот, в компе всё выполняется по очереди определённое время, и после того как время закончилось, то есть процессор стал выполнять другую задачу данные должны уметь прерываться. Это как кадры на плёнке, кадр прошёл одного фильма, кадр другого фильма и так по очереди и по кругу. В результате смотрим несколько фильмов одновременно. Теперь о стеке, стек можно сравнить в поездом, последний вагон будет вершиной поезда. В результате получаем, что всё идёт последовательно, и в составе можно изменять только «вершину», если хотим добавить вагон, то цеплять его можно исключительно к последнему (это же именуемое продавливанием стека push) . А убирать можно только последний (вершину) вагон (это называется выталкивание pop).
__________________
live(Action) {
while (Me.Emo_coder == True){
Me.Living();
If (Me.Emo == false){return 0;}
}
}
  Ответить с цитированием
использование регистров. сегментная организация памяти
Старый 29.04.2009, 23:39   #6
HolyAnimal
RAM 96MB
 
Аватар для HolyAnimal
 
Регистрация: 25.04.2009
Сообщений: 114
HolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всем
HolyAnimal вне форума
По умолчанию использование регистров. сегментная организация памяти

Использование регистров. Сегментная организация памяти

Сегментные регистры очень удобный инструментарий. Начнём с рассмотрения, что же такое сегмент и как они организованны в процессе использования микропроцессором памяти.

Всего используется шесть сегментных регистров: CS, SS, DS, ES, GS, FS. И так, почему же именно шесть? Это обусловлено методом использования ОЗУ и спецификой организации.

Сегментная организация памяти

Адрес ячейки состоит из трёх частей:
1)Номер страницы(page);
2)Номер сегмента(Segment),;
3)Смещение(length);

Более подробно, о сегментной / сегментно-страничной организации память в разделе ОЗУ и виртуальная память.

Сегментные регистры необходимы, для того что бы указать программе к каким сегментам она имеет доступ в данный момент времени. Фактически в регистрах находятся адреса памяти начала соответствующих сегментов.

Перечислим их, и рассмотрим более подробной каждый из них

Сегментный регистр кода (code segment register). CS
Адрес сегмента с машинными кодами, загружаемыми в конвейер микропроцессора.

Сегментный регистр данных (data segment register). DS
Содержит адрес сегмента, содержащий данные обрабатываемые в данный момент программой.

Сегментный регистр стека (stack segment register). SS
Сегмент, указывающий на область памяти, содержащую стек. Со стеком процессор работает по принципу: последний записанный элемент берётся первым.

Расширенные регистры сегментов данных (extension data segment registers). ES, GS, FS
В случае, когда для исполнения программы не хватает сегментов данных, используется дополнительные сегменты. Но в отличие от основного сегмента данных DS, в дополнительных регистрах адрес указывается, явно при помощи специальных префиксов переопределения сегментов в команде.
__________________
live(Action) {
while (Me.Emo_coder == True){
Me.Living();
If (Me.Emo == false){return 0;}
}
}
  Ответить с цитированием
Системные регистры
Старый 29.04.2009, 23:40   #7
HolyAnimal
RAM 96MB
 
Аватар для HolyAnimal
 
Регистрация: 25.04.2009
Сообщений: 114
HolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всем
HolyAnimal вне форума
По умолчанию Системные регистры

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

одно только название внушает ужас и страх ))).
рассматривать, пожалуй, их не буду подробно, поскольку для их объяснения необходимо чётко понимать архитектуру процессора.

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

разделения идут на:
8 регистров отладки
4 регистра управления
4 регистра системных адресов
__________________
live(Action) {
while (Me.Emo_coder == True){
Me.Living();
If (Me.Emo == false){return 0;}
}
}
  Ответить с цитированием
Регистры отладки
Старый 29.04.2009, 23:41   #8
HolyAnimal
RAM 96MB
 
Аватар для HolyAnimal
 
Регистрация: 25.04.2009
Сообщений: 114
HolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всем
HolyAnimal вне форума
По умолчанию Регистры отладки

Регистры отладки

Регистры отладки предназначены для аппаратной отладки. Всего их имеется 8, но фактически используется только 6.

dr0, dr1, dr2, dr3 – регистры хранящие линейные адреса точек прерывания. Разрядность регистра 32 бита. Если бит имеет значение 1, значит последние прерывание, возникло в результате достижения определённой в регистре контрольной точки.
Принцип работы в следующем, адрес выполняемой программы сравнивается с адресами указанные в регистрах, и в случае совпадения, значение бита регистра отладки принимает значение 1.

dr6 – регистр состояние отладки, содержит причину возникновения последнего появления значения 1.

Регистр dr6 называется регистром состояния отладки. Биты этого регистра устанавливаются в соответствии с причинами, которые вызвали возникновение последнего исключения с номером 1.

bd (бит 13) - служит для защиты регистров отладки;
bs (бит 14) - устанавливается в 1, если исключение 1 было вызвано состоянием флага tf = 1 в регистре eflags;
bt (бит 15) устанавливается в 1, если исключение 1 было вызвано переключением на задачу с установленным битом ловушки в TSS t = 1.
Все остальные биты в этом регистре заполняются нулями. Обработчик исключения 1 по содержимому dr6 должен определить причину, по которой произошло исключение, и выполнить необходимые действия.

Регистр dr7 называется регистром управления отладкой. В нем для каждого из четырех регистров контрольных точек отладки имеются поля, с помощью которых можно уточнить следующие условия, при которых следует сгенерировать прерывание:
место регистрации контрольной точки - только в текущей задаче или в любой задаче. Эти биты занимают младшие восемь бит регистра dr7 (по два бита на каждую контрольную точку (фактически точку прерывания), задаваемую регистрами dr0, dr1, dr2, dr3 соответственно).
Первый бит из каждой пары - это так называемое локальное разрешение; его установка говорит о том, что точка прерывания действует если она находится в пределах адресного пространства текущей задачи.
Второй бит в каждой паре определяет глобальное разрешение, которое говорит о том, что данная контрольная точка действует в пределах адресных пространств всех задач, находящихся в системе;
тип доступа, по которому инициируется прерывание: только при выборке команды, при записи или при записи/чтении данных. Биты, определяющие подобную природу возникновения прерывания, локализуются в старшей части данного регистра.
Большинство из системных регистров программно доступны. Не все из них понадобятся в нашем дальнейшем изложении, но, тем не менее, я коротко рассмотрел их с тем, чтобы возбудить у читателя интерес к дальнейшему исследованию архитектуры микропроцессора.
__________________
live(Action) {
while (Me.Emo_coder == True){
Me.Living();
If (Me.Emo == false){return 0;}
}
}
  Ответить с цитированием
регистры управления
Старый 29.04.2009, 23:43   #9
HolyAnimal
RAM 96MB
 
Аватар для HolyAnimal
 
Регистрация: 25.04.2009
Сообщений: 114
HolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всем
HolyAnimal вне форума
По умолчанию регистры управления

В группу регистров управления входят 4 регистра:
cr0, cr1, cr2, cr3.
Эти регистры предназначены для общего управления системой.
Регистры управления доступны только программам с уровнем привилегий 0.
Хотя микропроцессор имеет четыре регистра управления, доступными являются только три из них - исключается cr1, функции которого пока не определены (он зарезервирован для будущего использования).
Регистр cr0 содержит системные флаги, управляющие режимами работы микропроцессора и отражающие его состояние глобально, независимо от конкретных выполняющихся задач.
Назначение системных флагов:
pe (Protect Enable), бит 0 - разрешение защищенного режима работы.
Состояние этого флага показывает, в каком из двух режимов - реальном (pe=0) или защищенном (pe=1) - работает микропроцессор в данный момент времени.
mp (Math Present), бит 1 - наличие сопроцессора. Всегда 1.
ts (Task Switched), бит 3 - переключение задач.
Процессор автоматически устанавливает этот бит при переключении на выполнение другой задачи.
am (Aligment Mask), бит 18 - маска выравнивания.
Этот бит разрешает (am = 1) или запрещает (am = 0) контроль выравнивания.
cd (Cache Disable), бит 30, - запрещение кэш-памяти.
С помощью этого бита можно запретить (cd = 1) или разрешить (cd = 0) использование внутренней кэш-памяти (кэш-памяти первого уровня).
pg (PaGing), бит 31, - разрешение (pg = 1) или запрещение (pg = 0) страничного преобразования.
Флаг используется при страничной модели организации памяти.
Регистр cr2 используется при страничной организации оперативной памяти для регистрации ситуации, когда текущая команда обратилась по адресу, содержащемуся в странице памяти, отсутствующей в данный момент времени в памяти.
В такой ситуации в микропроцессоре возникает исключительная ситуация с номером 14, и линейный 32-битный адрес команды, вызвавшей это исключение, записывается в регистр cr2. Имея эту информацию, обработчик исключения 14 определяет нужную страницу, осуществляет ее подкачку в память и возобновляет нормальную работу программы;
Регистр cr3 также используется при страничной организации памяти.
Это так называемый регистр каталога страниц первого уровня. Он содержит 20-битный физический базовый адрес каталога страниц текущей задачи. Этот каталог содержит 1024 32-битных дескриптора, каждый из которых содержит адрес таблицы страниц второго уровня. В свою очередь каждая из таблиц страниц второго уровня содержит 1024 32-битных дескриптора, адресующих страничные кадры в памяти. Размер страничного кадра - 4 Кбайт.
__________________
live(Action) {
while (Me.Emo_coder == True){
Me.Living();
If (Me.Emo == false){return 0;}
}
}
  Ответить с цитированием
Re: Память, регистры, ОЗУ
Старый 29.04.2009, 23:43   #10
HolyAnimal
RAM 96MB
 
Аватар для HolyAnimal
 
Регистрация: 25.04.2009
Сообщений: 114
HolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всем
HolyAnimal вне форума
По умолчанию

Эти регистры еще называют регистрами управления памятью.
Они предназначены для защиты программ и данных в мультизадачном режиме работы микропроцессора.
При работе в защищенном режиме микропроцессора адресное пространство делится на:
глобальное - общее для всех задач;
локальное - отдельное для каждой задачи.
Этим разделением и объясняется присутствие в архитектуре микропроцессора следующих системных регистров:
регистра таблицы глобальных дескрипторов gdtr (Global Descriptor Table Register) имеющего размер 48 бит и содержащего 32-битовый (биты 16-47) базовый адрес глобальной дескрипторной таблицы GDT и 16-битовое (биты 0-15) значение предела, представляющее собой размер в байтах таблицы GDT;
регистра таблицы локальных дескрипторов ldtr (Local Descriptor Table Register) имеющего размер 16 бит и содержащего так называемый селектор дескриптора локальной дескрипторной таблицы LDT. Этот селектор является указателем в таблице GDT, который и описывает сегмент, содержащий локальную дескрипторную таблицу LDT;
регистра таблицы дескрипторов прерываний idtr (Interrupt Descriptor Table Register) имеющего размер 48 бит и содержащего 32-битовый (биты 16-47) базовый адрес дескрипторной таблицы прерываний IDT и 16-битовое (биты 0-15) значение предела, представляющее собой размер в байтах таблицы IDT;
16-битового регистра задачи tr (Task Register), который подобно регистру ldtr, содержит селектор, то есть указатель на дескриптор в таблице GDT. Этот дескриптор описывает текущий сегмент состояния задачи (TSS - Task Segment Status). Этот сегмент создается для каждой задачи в системе, имеет жестко регламентированную структуру и содержит контекст (текущее состояние) задачи. Основное назначение сегментов TSS - сохранять текущее состояние задачи в момент переключения на другую задачу.
__________________
live(Action) {
while (Me.Emo_coder == True){
Me.Living();
If (Me.Emo == false){return 0;}
}
}
  Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



взломать аську аську взломать взлом программы сделать взлом программы как сделать взлом программы хакерские сайты как легко взломать аську лучшие хакерские сайты топ список хакерские сайты взлом паролей легкий взлом паролей

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd. Перевод: zCarot