Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 80x86上的原子位场操作?_Assembly_Atomic_Bit_Operation_X86 - Fatal编程技术网

Assembly 80x86上的原子位场操作?

Assembly 80x86上的原子位场操作?,assembly,atomic,bit,operation,x86,Assembly,Atomic,Bit,Operation,X86,80x86是否有用于原子测试和设置单词单个位的指令?如果您是指将位作为单个原子操作进行测试和修改,那么位测试指令(BT、BTS、BTR和BTC)都可以通过使用锁前缀使其原子化 如果您的意思是以原子方式测试位,然后以原子方式将位设置为单独的操作,则可以使用标准原子读取来测试位,并且可以使用LOCK或、LOCK和、LOCK XOR指令来修改位 如果您需要更复杂的操作,例如测试一个位,然后设置另一个位,则必须在重试循环中使用标准的比较和交换CMPXCHG指令。如果您的意思是将一个位作为单个原子操作进行

80x86是否有用于原子测试和设置单词单个位的指令?

如果您是指将位作为单个原子操作进行测试和修改,那么位测试指令(BT、BTS、BTR和BTC)都可以通过使用锁前缀使其原子化

如果您的意思是以原子方式测试位,然后以原子方式将位设置为单独的操作,则可以使用标准原子读取来测试位,并且可以使用LOCK或、LOCK和、LOCK XOR指令来修改位


如果您需要更复杂的操作,例如测试一个位,然后设置另一个位,则必须在重试循环中使用标准的比较和交换CMPXCHG指令。

如果您的意思是将一个位作为单个原子操作进行测试和修改,则必须使用位测试指令(BT、BTS、BTR和BTC)通过使用锁前缀,可以使所有这些都成为原子

如果您的意思是以原子方式测试位,然后以原子方式将位设置为单独的操作,则可以使用标准原子读取来测试位,并且可以使用LOCK或、LOCK和、LOCK XOR指令来修改位

如果需要更复杂的操作,例如测试一个位,然后设置另一个位,则必须在重试循环中使用标准的比较和交换CMPXCHG指令