我正在使用 xtensa-esp32-elf-8.2.0 工具链进行编译(基于 gcc 8)。我还尝试使用 xtensa-esp32-elf-5.2.0 工具链(基于 gcc 5)。两者都生成相同的错误消息。
我写了一个跳转表,它有 10 次以下指令,基本上是用来跳转特定地址并执行特定指令。但是我在编译时遇到错误
汇编程序消息:错误:尝试向后移动 .org
.org .LSAC_jumptable_base + (16 * 6)
mov a6, a4
l32i a2, sp, 0x08
l32i a4, sp, 0x10
mov a1, a0
rsr a0, excsave1
rfe
我已经在网上冲浪了,但是大多数页面都没有提供可行的答案,或者他们说这是编译器版本问题(我认为这不是正确的解决方案,因为我使用了最新的工具链)
有人可以帮忙吗
我的跳转表的示例使用:
movi a3, .LSAC_jumptable_base
l32i a0, sp, 0
addx8 a2, a2, a3 // a2 is now the address to jump to
l32i a3, sp, 0x0c
jx a2
.org .LSAC_jumptable_base + (16 * 5)
mov a5, a4 //Here, a4 is the correctly read value
l32i a2, sp, 0x08
l32i a4, sp, 0x10
mov a1, a0
rsr a0, excsave1
rfe
.org .LSAC_jumptable_base + (16 * 6)
mov a6, a4
l32i a2, sp, 0x08
l32i a4, sp, 0x10
mov a1, a0
rsr a0, excsave1
rfe