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 полуслово.