【问题标题】:Assembler messages -> Error : register number out of range汇编器消息 -> 错误:寄存器编号超出范围
【发布时间】:2019-08-14 06:13:07
【问题描述】:

我正在尝试使用该指令 mula.dd.ll.ldinc m3 , a5 , m0 ,m1
在我的汇编代码中 在具有 xtensa LX6 处理器的 ESP32 上。

它不会对其他指令产生错误,但对于这条特定指令,它会产生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 )

【问题讨论】:

    标签: assembly compiler-errors esp32 xtensa


    【解决方案1】:

    此语法与指令集中使用的语法完全相同。

    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 作为最后一个寄存器参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 2013-06-12
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      相关资源
      最近更新 更多