Зачем в ARM разделение "mov" на "ldr" и "mov"
Каким обрзом разделение функционала mov на три команды (ldr, str, mov) оптимизирует выполнение программы в ARM системах?
Ответы (1 шт):
В RISC процессорах принято ограничивать операции с памятью выборкой инструкций, загрузкой данных из памяти в регистр (Load) и записью из регистра в память (Store).
Инструкции ldr/str это команды Load/Store.
Инструкция mov (это по сути макрос, который раскрывается ассемблером в любой из нескольких подходящих кодов операций (orr, add, mov..., ...)) переносит непосредственный операнд, т.е. констанату в регистр (также, одна из форм MOV копирует один регистр в другой). Этот перенос может производиться со смещением, инвертированием и т.п. опрерациями, проводимыми над заданной константой ассемблером во время трансляции.
Не уверен, что тут можно говорить об оптимизации исполнения кода. Скорее, это разделение для програмиста. Если написано ldr/str, то обмен с памятью, все остальное это операции внутри процессора.