0x8048384 <main+16>: 0x00fc45c7     0x83000000     0x7e09fc7d     0xc713eb02
0x8048394 <main+32>: 0x84842404     0x01e80804     0x8dffffff     0x00fffc45

Таким образом, каждый адрес памяти содержит 16 байтов данных? 4х4 = 16. Таким образом, 4 байта = 0x00fc45c7

Я прав?

1 ответ1

5

Это не так. Определенный адрес в памяти обычно указывает на один байт памяти. Тем не менее, ваш дисплей показывает вам каждый байт памяти от 0x8048384 до 0x80483A4 - это 32 байта памяти, организованных в 2 строки по 4 4-байтовых значения.

Если вы внимательно посмотрите на левую сторону, адреса будут увеличиваться не на единицу между строками, а на 16: 84 -> 94 (в базе 16), что говорит о том, что на каждом из них отображается 16 байт памяти. линия. Это часто более удобно, чем 1 байт на строку, и эти 16-байтовые строки далее разбиваются на 4-байтовые группы, потому что довольно часто используются выровненные 32-битные числа, которые представляет каждая группа из 4 байтов. Это облегчает визуальную обработку информации, не прибегая к другим инструментам интерпретации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .