ARM Assembly, манипулирование переменными - PullRequest
0 голосов
/ 06 ноября 2018

Я пытался сделать несколько простых манипуляций в сборке для процессора ARM M0 +.

Пока я потерпел неудачу.

Я хочу выделить две переменные, a & b для некоторых значений, 3 и 8, затем я хочу установить одну переменную в значение другой.

На любом языке более высокого уровня мне понадобится только

int a = 3;
int b = 8;
b = a;

Пока в сборке я разобрался, как распределять и устанавливать переменные.

a DCD 3
b DCD 8

И я выяснил, как получить значение и адрес переменных

LDR r0, =a    ; r0 = &a
LDR r0, [r0]  ; r0 = a

Вот где я застреваю, как мне сохранить значение r0 в переменной b?

1 Ответ

0 голосов
/ 06 ноября 2018

Просто переведите операцию загрузки в операцию сохранения, то есть вам нужен адрес памяти, где зарезервировано пространство для b:

LDR r1, =b    ; r1 = &b (do not overwrite "a" value in r0)

А затем вы сохраняете в памяти значение "a":

STR r0, [r1]  ; b = r0 (a)

Это похоже на материал, который должен быть частью любого базового учебника или книги, так что, возможно, попробуйте поискать один, «угадать» все о сборке самостоятельно, использование только руководства по набору инструкций является жизненно важной практикой позже, но для использования основ также некоторые учебные пособия или книги, которые помогут вам начать работу намного быстрее, сборка не "дружелюбна".

Имейте в виду, что инструкции ЦП разработаны в соответствии с конструкцией ЦП ЦП, поэтому их внутренняя "логика" является компромиссом между тем, что может понадобиться и использовать "логика программирования" языков высокого уровня, и тем, какой набор транзисторов может эффективно выполнять (HW-логика), сборка - это не столько «язык программирования», сколько «HW-дизайн описания процессора», поэтому, если вы продолжаете ожидать «программирование», вы часто сталкиваетесь со странными вещами (которые имеют смысл, как только вы попробуйте рассмотреть образ мышления HW, и тогда эти странные вещи скрываются компиляторами языков программирования высокого уровня, поэтому обычному программисту не нужно точно знать, как работает HW).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...