1
CでインラインアセンブリコードとしてAtomic LDSET ARM命令(http://www.keil.com/support/man/docs/armclang_asm/armclang_asm_chi1476202820379.htm)を使用しようとしていますが、何らかの形で正しいオペランドを特定できません。私はこのLDSETインラインアセンブリとしてのARM命令
int value = 1024; //operate on this value
int setBit = 7; //set the 7th bit
int initValue = 0; //return the original value in this
asm("ldset %w0, %w2, %x1" : "+r"(value), "=r"(initValue) : "r"(setBit));
を書いて、このエラーを得た :
test-lib.cpp:26:9: error: invalid operand for instruction
asm("ldset %w0, %w2, %x1" : "+r"(value), "=r"(initValue) : "r"(setBit));
^
<inline asm>:1:17: note: instantiated into assembly here
ldset w9, w10, x10
^
はこの上でいくつかの助けをしてください必要があります。