以下是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");
答案 0 :(得分:0)
您的开发环境已经在stdatomic.h的某些变体中具有等价物。关键概念是相同的,除了你必须在难以理解的变体之间做出选择,如“弱”和“强”...
至少,维护基于程序协议的方法来处理这些变量;这就像对待魔法饼干一样只能由神秘的图书馆操作。标准版本鼓励一个令人遗憾的模糊定义由编译器直接实现;我能想象的最好的结果是调试编译器/运行时很多小时......
隔离机器或执行特定的依赖关系始终是很好的软件工程。