2016-09-21 9 views
2

Я учусь на ассемблере для ARM Cortex и у меня есть следующая проблема:сдвиг вправо и добавить в одну команду

Написать одна строка инструкции сборки для следующего расчета: Применить арифметический сдвиг вправо на содержание из R2, затем добавить содержимое R1 и R2 и сохранить результат в R0.

Я понимаю арифметический сдвиг вправо, как:

ASR R0, R2, #9

И сделать надстройку просто:

ADD R0, R1, R2

Но я не уверен, как объединить их в один команда. До сих пор я придумал следующее из примера я увидел, что выглядело, как будто они делают две команды в одной строке аналогичным образом:

ASR R0, R2, #9, [ADD R1, R2]

Я знаю, что это, вероятно, неправильно, так может кто-нибудь объяснит мне, как это должно быть сделано?

+1

Используйте 'add' со сдвинутым входным операндом. Это не работает по-другому. http://www.davespace.co.uk/arm/introduction-to-arm/barrel-shifter.html –

+1

@PeterCordes, что-то вроде: 'ADD R0, R1, R2, ASR # 9'? –

+1

Это почти как один из примеров на странице, с которой я связан, так что да, я думаю, что это правильный синтаксис. Вы должны проверить, что он собирается. –

ответ