Сообщения ассемблера -> Ошибка: регистрационный номер вне диапазона
Я пытаюсь использовать инструкцию 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 в качестве последнего аргумента регистра.