ARM - Где на самом деле указывает номер адреса памяти - верхняя часть адреса или нижняя часть? - PullRequest
0 голосов
/ 11 января 2019

Я читал инструкции LDRB / STRB в ARM и задавался вопросом, является ли адрес памяти (например, полное 32-разрядное число, с которым вы будете ссылаться на адрес - не меткой или переменной, созданной с помощью DEFW) указывает на верхнюю часть адреса памяти или низ.

Я буду говорить о 32 битах в каждом адресе, как об уровнях полки. Насколько я понимаю, пространство памяти похоже на огромную книжную полку, от земли до потолка с миллиардами уровней, в то время как каждый уровень может содержать одну книгу (немного данных).

Адреса памяти в ARM имеют размер 32 бита, то есть 32 уровня. Предполагая, что нижняя полка имеет номер 0, а верхняя - 0xFFFFFFFF, 32-разрядные длинные числа, которые мы используем для ссылки на адрес памяти (группа из 32 уровней полок), указывают на верхнюю полку в этой группе или на нижнюю.

Хотя этот вопрос возник, когда я узнал больше о реализации инструкций LDRB и STRB, я подумал, что этот вопрос в большей степени связан с теорией, поскольку он обсуждает структуру памяти больше, чем что-либо еще. Если я ошибся, моды могут смело удалять теги или менять их. Заранее спасибо за любую помощь!

1 Ответ

0 голосов
/ 11 января 2019

Вы, кажется, думаете, что память ARM адресуется по битам. На самом деле это адрес байта, поэтому каждый адрес указывает на один байт памяти. Если вы рассматриваете более крупные операнды (половинные слова, слова), то address - это начало, то есть дно в ваших терминах. Операнд слова занял бы address+0, address+1, address+2 и address+3.

...