这是我当前的代码:
void int32hex(u32 val, char *out) {
asm("rev %[dst], %[src]" :: [dst]"=r"(val), [src]"r"(val));
binhex((u8*)&val, 4, out);
}
我的想法是接受参数val
,使用指令翻转它(字节序)rev
,然后传递它。
根据我的阅读,上面的代码似乎是正确的,目标寄存器有=r
标志,这意味着可以写入寄存器。但是,当通过 GCC 运行时,出现错误:输入操作数约束包含 '='
如果我将标志更改为简单r
,那么它将编译正常,但值val
不会改变。