Биты в адресе памяти - PullRequest
       42

Биты в адресе памяти

0 голосов
/ 29 сентября 2010

При отладке в 32-разрядной Windows XP с использованием отладчика иммунитет в стеке отображается следующее:

_Address_ -Value_
00ff2254 ff090045
00ff2258 00000002

Насколько я понимаю, каждое адресное местоположение содержит 8 бит.

Это правильно?

Ответы [ 4 ]

4 голосов
/ 29 сентября 2010

Если я правильно понимаю ваш вопрос, ответ - да, каждая отдельная ячейка памяти содержит 8 бит.

Отладчик показывает вам 4 байта (32 бита) за раз, чтобы отобразитьболее компактный (и поскольку многие типы данных занимают 32 бита, поэтому часто полезно видеть 32-битные значения).Вот почему адреса в левом столбце расположены на расстоянии 4 позиций.

Если бы отладчик показывал один байт (8 бит) за раз, дисплей выглядел бы так:

_Address_ -Value_
00ff2254 45
00ff2255 00
00ff2256 09
00ff2257 ff
00ff2258 02
00ff2259 00
00ff225a 00
00ff225b 00

(при условии, что вы работаете на машине " little-endian ", которая является большинством современных настольных ПК.)

3 голосов
/ 29 сентября 2010

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

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

Если ваш вопрос действительно «Почему я вижу 8-значное значение в качестве содержимого по адресу в моем дампе стека», то причина в том, что он выводит 32-разрядный (4 байта)) значения.

Другими словами, вы можете взять адрес, адрес + 1, адрес + 2 и адрес + 3, получить байты из каждого из них и объединить в 32-битныйзначение.

Это действительно ваш вопрос?

1 голос
/ 29 сентября 2010

Чтобы завершить ответ RH, вы можете быть удивлены, имея так много цифр для данного адреса.

Вы должны рассмотреть

Address  Byte (8 bits)
00ff2254 45
00ff2255 00
00ff2256 09
00ff2257 ff
00ff2258 02
... 

(на архитектуре процессора, используемой XP)

0 голосов
/ 29 сентября 2010

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

...