以下是X86-64代码的代码,其中包含一些汇编,您可以帮助我们转换为ARMv8 aarch64汇编
__asm__ __volatile__ ("lock; cmpxchgw %1,%2"
: "=a"(sPrev)
: "q"(aWith),
"m"(*(volatile acp_sint16_t *)aAddr),
"0"(aCmp)
: "memory");
__asm__ __volatile__ ("mov %%ebx,%%eax\n\t"
"mov %%ecx,%%edx\n\t"
"lock; cmpxchg8b %1"
: "=&A"(sVal)
: "m"(*(volatile acp_sint64_t *)aAddr)
: "cc");
__asm__ __volatile__ ("lock; xaddq %0,%1"
: "+r"(sPrev), "+m"(*(volatile acp_sint64_t *)aAddr)
:
: "memory");发布于 2018-06-18 11:35:06
您的开发环境在stdatomic.h的某些变体中已经有了等价物。关键概念是相同的,除了你必须在难以理解的变体之间做出选择,比如“弱”和“强”……
至少,保持您的程序对这些变量的基于协议的方法;也就是说,将它们视为只能由神秘的库操作的魔力cookie。standard- be jour鼓励由编译器直接实现一个模糊的定义;我能想象的最好的结果就是花很多小时调试编译器/运行时.
隔离特定于机器或执行的依赖关系总是很好的软件工程。
https://stackoverflow.com/questions/50849545
复制相似问题