这样的事情怎么样:
void setHW(uint32_t val) { uint32_t reg; asm volatile ( mrc 15, 0, %[reg], ... orr %[reg], %[reg], %[val] mcr 15, 0, %[reg], ... :[reg]"=&r"(reg) :[val] "r"(val) : ); }
请注意 =&r 解决早期的问题(见 https://gcc.gnu.org/onlinedocs/gcc/Modifiers.html 描述 & )。
=&r
&