3. Сохранение регистра в память

3.1. Соглашения документа

Обозначения: Rt, Rn обозначают регистры ARM R0-R7, за исключением случаев, где указано иное. immN представляет непосредственное значение шириной N бит, следовательно imm5 ограничено диапазоном 0-31. [Rn + imm5] — это содержимое адреса памяти, полученного сложением Rn и смещения imm5. Смещения измеряются в байтах. Эти инструкции не влияют на флаги условий.

3.2. Сохранение регистра

  • str(Rt, [Rn, imm7]) [Rn + imm7] = Rt Сохранить 32-битное слово

  • strb(Rt, [Rn, imm5]) [Rn + imm5] = Rt Сохранить байт (b0-b7)

  • strh(Rt, [Rn, imm6]) [Rn + imm6] = Rt Сохранить 16-битное полуслово (b0-b15)

Указанные непосредственные смещения измеряются в байтах. Следовательно, в случае str 7-битное значение позволяет обращаться к значениям, выровненным по границе 32-битного слова, с максимальным смещением 31 слово. В случае strh 6-битное значение позволяет обращаться к значениям, выровненным по границе 16-битного полуслова, с максимальным смещением 31 полуслово.