【发布时间】:2013-11-02 00:49:23
【问题描述】:
这是我当前的代码:
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 的值不会改变。
【问题讨论】:
标签: c gcc assembly arm inline-assembly