Вставка кода Assembler-a

652
15 декабря 2016, 16:13

Мне необходимо выставить значение 0xFFFE по адресу 0x80002040, я написал для этого такой код:

  __asm
    {
      mov r0, 0xFFFE        Строка 1
      mov #0x80002040, r0   Строка 2
      mov r0, 0xFFFE
    }

Всё это делается в Eclipse для микропроцессора NT2000.
Я получаю в ответ при компиляции:

warning #1267-D: Implicit physical register R0 should be defined as a variable

error #1093: Must be a modifiable lvalue

Предупреждение приходит на строку 1, а ошибка на строку 2.

Answer 1

Уже заработало, необходимо было сделать так:

  mov   r6, #0x80002040 
  mov   r7, #0xFFFE
  str r7,[r6]
  mov   r6, #0x80002040

Символ "#" значит, что это 16-ричное число, проблема была в том, что нельзя было переслать напрямую в память, необходимо было из регистра в регистр, который хранит память.

Обновление

И ещё кое-что забыл: необходимо было перед вставкой кода ассемблера объявить 2 переменные типа int, r6 и r7, т.к. ассемблер не поймёт названия этих регистров без их объявления, а на самом деле проц будет использовать какие-то свои регистры, у которых название может быть любое.

READ ALSO
С чего начать изучение C++? [дубликат]

С чего начать изучение C++? [дубликат]

На данный вопрос уже ответили:

333
Множества как индекс в массиве C++

Множества как индекс в массиве C++

Имеется следующий код:

254
C++11: Expression Templates VS RValue References

C++11: Expression Templates VS RValue References

Доброго времени суток!

331