2. Загрузка регистра из памяти¶
2.1. Соглашения документа¶
Обозначения: Rt, Rn обозначают регистры ARM R0-R7, за исключением случаев, где указано иное. immN представляет непосредственное значение шириной N бит, следовательно imm5 ограничено диапазоном 0-31. [Rn + immN] — это содержимое адреса памяти, полученного сложением Rn и смещения immN. Смещения измеряются в байтах. Эти инструкции влияют на флаги условий.
2.2. Загрузка регистра¶
ldr(Rt, [Rn, imm7])
Rt = [Rn + imm7]Загрузить 32-битное словоldrb(Rt, [Rn, imm5])
Rt = [Rn + imm5]Загрузить байтldrh(Rt, [Rn, imm6])
Rt = [Rn + imm6]Загрузить 16-битное полуслово
При загрузке байта или полуслова оно дополняется нулями до 32 бит.
Указанные непосредственные смещения измеряются в байтах. Следовательно, в случае ldr 7-битное значение позволяет обращаться к значениям, выровненным по границе 32-битного слова, с максимальным смещением 31 слово. В случае ldrh 6-битное значение позволяет обращаться к значениям, выровненным по границе 16-битного полуслова, с максимальным смещением 31 полуслово.