Зачем в ARM разделение "mov" на "ldr" и "mov"

Каким обрзом разделение функционала mov на три команды (ldr, str, mov) оптимизирует выполнение программы в ARM системах?


Ответы (1 шт):

Автор решения: avp

В RISC процессорах принято ограничивать операции с памятью выборкой инструкций, загрузкой данных из памяти в регистр (Load) и записью из регистра в память (Store).

Инструкции ldr/str это команды Load/Store.

Инструкция mov (это по сути макрос, который раскрывается ассемблером в любой из нескольких подходящих кодов операций (orr, add, mov..., ...)) переносит непосредственный операнд, т.е. констанату в регистр (также, одна из форм MOV копирует один регистр в другой). Этот перенос может производиться со смещением, инвертированием и т.п. опрерациями, проводимыми над заданной константой ассемблером во время трансляции.

Не уверен, что тут можно говорить об оптимизации исполнения кода. Скорее, это разделение для програмиста. Если написано ldr/str, то обмен с памятью, все остальное это операции внутри процессора.

→ Ссылка