Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Понятие регистров и стека

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Прочее] >> Понятие регистров и стека
Имя
Сообщение << Старые топики   Новые топики >>
Понятие регистров и стека - 2008-10-30 22:05:33.140000   
Mend

Сообщений: 15
Оценки: 0
Присоединился: 2008-10-28 08:22:46.700000
Начал учить асм. И опять натолкнулся на описание регистров и стека, о которых много раз читал. Но как оказалось так и не понял смысл прочитанного. Может кто нибудь объяснить как это все работает. То есть при запуске программы что куда помещается и что в процессе происходит. Надеюсь понятно сформулировал, в поиске не нашел.
Post #: 1
RE: Понятие регистров и стека - 2008-10-30 23:13:17.900000   
kreol

Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
quote:


Регистр процессора — сверхбыстрая память внутри процессора, предназначенная прежде всего для хранения промежуточных результатов вычисления (регистр общего назначения/регистр данных) или содержащая данные, необходимые для работы процессора — смещения базовых таблиц, уровни доступа и т. д. (специальные регистры).

Доступ к значениям, хранящимся в регистрах как правило в несколько раз быстрее чем доступ к ячейкам оперативной памяти (даже если кеш-память содержит нужные данные), но объем оперативной памяти намного превосходит суммарный объем регистров (объем среднего модуля оперативной памяти сегодня составляет 1 Гб - 4 Гб[1], суммарная «ёмкость» регистров общего назначения/данных для процессора Intel 80x86 16 битов * 4 = 64 бита (8 байт)).


То есть физически каждый регистр - это маленький кусок памяти внутри самого процессора. Маленький, но оооочень быстрый.

Со стеком сложнее. Для начала почитай про очереди LIFO (ну и FIFO заодно, чтобы понять разницу), иначе будет сложно врубиться в схему его работы.
Физически у стека бывают разные реализации. В простейшем случае стек - это просто кусок оперативной памяти, на который указывает один из регистров. Поскольку доступ к регистрам - самый быстрый, и адрес вершины стека уже лежит там (то есть его не нужно никак высчитывать, просто бери и используй), то обращение к этой памяти также происходит на порядок быстрее, чем к обычным переменным.
Со стеком главное не запутаться в терминах. Стек, как и LIFO, - это просто названия принципа работы. А как этот принцип используется - другой вопрос. Например, в более высокоуровневых языках стек может создаваться программно просто как цепочка связанныъ кусков памяти, и может нести любую информацию, которую вложит туда программист. При этом такой программный-стек-цепочка отличается от стека вызовов подпрограмм (который и используется, когда ты пишешь push smth) и сосуществует с ним рядом: стек вызовов - при вызове процедур, программный стек - по усмотрению программиста.
Более подробно о стеке вызовов, который тебя, видимо, и интересует, здесь:
http://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B5%D0%BA_%D0%B2%D1%8B%D0%B7%D0%BE%D0%B2%D0%BE%D0%B2
Post #: 2
RE: Понятие регистров и стека - 2008-10-31 09:38:55.763333   
ZoAs

Сообщений: 10
Оценки: 0
Присоединился: 2008-10-31 09:25:31.133333
Вот на этом сайте объяснено хорошо: kalashnikoff.ru. Вроде с первого раза понять можно.
Post #: 3
RE: Понятие регистров и стека - 2008-10-31 12:54:36.916666   
Смаил

Сообщений: 49
Оценки: 0
Присоединился: 2008-10-31 08:59:57.420000
quote:

ORIGINAL: ZoAs

Вот на этом сайте объяснено хорошо: kalashnikoff.ru. Вроде с первого раза понять можно.

Я прочитала, действительно все понятно, никаких вопросов не возникло.
Post #: 4
RE: Понятие регистров и стека - 2008-10-31 19:41:37.113333   
Mend

Сообщений: 15
Оценки: 0
Присоединился: 2008-10-28 08:22:46.700000
Спасибо ответившим, вроде стало прояснятся
Post #: 5
Страниц:  [1]
Все форумы >> [Прочее] >> Понятие регистров и стека







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.