我有以下代码。当我尝试编译代码片段后提到的给出错误时。
void func()
__asm__ (
"mfspr 12, 1017;"
"rotrwi 12,12,%0;"
"andi. 11, 12, %1;"
"beq done;"
"3:;"
"mfspr 12, 1017;"
"andi. 11, 12, %2;"
"bne 3b;"
"ori 12, 12, %2;"
"mtspr 1017, 12;"
"isync;"
"3:;"
"mfspr 12, 1017;"
"andi. 11, 12, %2;"
"bne 3b;"
"done:;"
::"r"(31), "r"(1), "r"(2048));
}
错误:
{standard input}: Assembler messages:
{standard input}:3607: Error: bad expression
{standard input}:3607: Error: missing ')'
{standard input}:3607: Error: missing ')'
{standard input}:3607: Error: syntax error; found `r', expected `,'
{standard input}:3607: Error: junk at end of line: `r9)!31)&((%r9)|31),0,31'
我认为我正在做分支的一些问题,但我不确定什么是错的。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:0)
请改为尝试:
void func()
__asm__ (
"mfspr 12, 1017\n"
"rotrwi 12,12,%0\n"
"andi. 11, 12, %1\n"
"beq done\n"
"3:\n"
"mfspr 12, 1017\n"
"andi. 11, 12, %2\n"
"bne 3b\n"
"ori 12, 12, %2\n"
"mtspr 1017, 12\n"
"isync\n"
"3:\n"
"mfspr 12, 1017\n"
"andi. 11, 12, %2\n"
"bne 3b\n"
"done:\n"
::"i"(31), "i"(1), "i"(2048));
}
;
已更改为\n
,以便更容易查看哪些行有误。
"r"(N)
更改为"i"(N)
。