Сообщения ассемблера -> Ошибка: регистрационный номер вне диапазона

Я пытаюсь использовать инструкцию mula.dd.ll.ldinc m3 , a5 , m0 ,m1
в моем коде сборки на ESP32, который имеет процессоры Xtensa LX6.

Он не выдает ошибку для других инструкций, но для этой конкретной инструкции он выдает register number out of range,

Я использую a2-a4 для ввода аргументов в коде сборки и использования других регистров для своих целей. Процессоры xtensa LX6 имеют 16 (AR, 32-битных) регистров общего назначения.


Я также попытался уменьшить количество аргументов, передаваемых в функцию сборки и использовал

mula.dd.ll.ldinc m3 , a3 , m0 ,m1

но это обеспечивает ту же ошибку

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

mula.dd.ll.ldinc m3 , a3 , m0  ,m1 // the instruction multiplies m0 * m1 and adds it to the accumulator and then loads data at a3+4 into m3 ( +4 is because of auto increment )

0 ответов

Этот синтаксис точно такой, как он используется в наборе инструкций.

mula.dd.ll.ldinc m3 , a3 , m0  ,m1

Нет, не совсем так. В главе книги ISA для этого кода операции говорится следующее:

MULA.DD.*.LDINC mw, as, mx, my

The mx operand can designate either MAC16 register m0 or m1.
The my operand can designate either MAC16 register m2 or m3.

поэтому у вас не может быть m1 в качестве последнего аргумента регистра.

Другие вопросы по тегам