该错误通常是由于寄存器或内存操作数的约束错误而引起的。此时需要检查asm语句中约束有没有错误,并确保它与输入或输出指令所期望的相同。例如,以下示例代码中的约束“i”可能会出现错误:
int val; asm ("movl %1,%%eax; addl $1,%%eax; movl %%eax,%0;" :"=m"(val) :"i"(val));
可以将“i”修改为适当的约束符,例如“r”表示寄存器、或“b”表示字节寄存器。然后,重新编译并运行程序即可解决问题。
上一篇:ASM在执行指令之前会查看maxStack吗?
下一篇:ASM中的visitMethod不访问Scala中的方法。