Сколько байтов данных может храниться в одном адресе памяти - PullRequest
0 голосов
/ 13 июля 2020

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

В настоящее время я изучаю, как использовать отладчик gdb для проверки памяти, но я не понимаю, как используется команда x gdb. Я также узнал, что число может быть добавлено к формату команды x для проверки нескольких модулей по целевому адресу, а также размер одного модуля по умолчанию составляет 4 байта.

Как это возможно, что 4-байтовые данные могут быть сохранены по адресу памяти, который может содержать только один байт? а также как возможно, что x/8xb также работает с заданным адресом памяти, когда все данные могут быть отображены, используя только слово (например, x/1w)?

1 Ответ

2 голосов
/ 13 июля 2020

Минимальная адресуемая память часто составляет 8 бит, но это не всегда так. Например, я работал в системе с 32 768 адресами 16-битных значений.

Как возможно, что 4-байтовые данные могут храниться по адресу памяти

Это не так. Адрес - это адрес первого байта.

0x11223344 по адресу 0x1000 в системе с прямым порядком байтов, которая может адресовать 8-битные значения:

       +--------+
0x1000 |  0x44  |
       +--------+
0x1001 |  0x33  |
       +--------+
0x1002 |  0x22  |
       +--------+
0x1003 |  0x11  |
       +--------+

0x11223344 по адресу 0x1000 на большом -индийская система, которая может адресовать 8-битные значения:

       +--------+
0x1000 |  0x11  |
       +--------+
0x1001 |  0x22  |
       +--------+
0x1002 |  0x33  |
       +--------+
0x1003 |  0x44  |
       +--------+
...