Assembly 如何将即时值作为参数写入汇编宏中的riscv CSR?

Assembly 如何将即时值作为参数写入汇编宏中的riscv CSR?,assembly,gnu-assembler,riscv,Assembly,Gnu Assembler,Riscv,我试图编写一个可重用的宏来配置程序集中的一些CSR 例如 然后使用它(至少用于测试): 编译(汇编)时,我遇到以下错误: start.S:179: Error: Instruction csrwi requires absolute expression start.S:179: Error: Instruction csrwi requires absolute expression start.S:179: Error: Instruction csrwi requires absolute

我试图编写一个可重用的宏来配置程序集中的一些CSR

例如

然后使用它(至少用于测试):

编译(汇编)时,我遇到以下错误:

start.S:179: Error: Instruction csrwi requires absolute expression
start.S:179: Error: Instruction csrwi requires absolute expression
start.S:179: Error: Instruction csrwi requires absolute expression

有没有一种方法可以创建一个宏,在不出现此错误的情况下传入即时值?(除了《ASM编程指南》之外,我似乎找不到任何关于risc-v汇编宏的文档,这正是我走到这一步的原因)

答案:参数使用时需要反斜杠

.macro initTrap entry, status, enable
    la          t0, \entry
    csrw        mtvec, t0
    csrwi       mstatus, \status
    csrwi       mie, \enable
.endm

似乎眼前的价值不是问题所在,而是问题本身。我做错了吗?
start.S:179: Error: Instruction csrwi requires absolute expression
start.S:179: Error: Instruction csrwi requires absolute expression
start.S:179: Error: Instruction csrwi requires absolute expression
.macro initTrap entry, status, enable
    la          t0, \entry
    csrw        mtvec, t0
    csrwi       mstatus, \status
    csrwi       mie, \enable
.endm