独占加载和存储寄存器。 LDREX{ STREX{ LDREXB{ STREXB{ LDREXH{ STREXH{ LDREXD{ STREXD{ 其中:
r15 不可用于 对于 对于 ARM 指令:
对于 Thumb 指令:
利用 出于性能方面的考虑,请将相应 ARM ARM 所有这些 32 位 Thumb 指令均可用于 ARMv6T2 及更高版本,但 这些指令均无 16 位版本。 MOV r1, #0x1 ; load the ‘lock taken’ value try LDREX r0, [LockAddr] ; load the lock value CMP r0, #0 ; is the lock free? STREXEQ r0, r1, [LockAddr] ; try and claim the lock CMPEQ r0, #0 ; did this succeed? BNE try ; no – try again .... ; yes – we have the lock
|
|
来自: own360 > 《ldrex_and_strex》