これは私の現在のコードです:
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
変更されません。