我正在尝试使用GNU汇编程序编译一些汇编代码,目标作为ARM平台。 但是出现了一些错误。我不熟悉汇编语法。
任何人都可以告诉我如何解决此错误?
error: invalid operand in inline asm: 'str ${2:Q}, $0
str ${2:R}, $1
导致此编译错误的内联asm代码位于:
static av_always_inline void AV_WN64(void *p, uint64_t v)
{
__asm__ ("str %Q2, %0 \n\t"
"str %R2, %1 \n\t"
: "=m"(*(uint32_t*)p), "=m"(*((uint32_t*)p+1))
: "r"(v));
}
答案 0 :(得分:0)
尝试:
__asm__ ("strd [%0], %1\n\t" : : "r"(p), "r"(v) : "memory");
编译器应该认识到v
为64位数量需要寄存器对。