1问题背景
客户迁移过程中,编译自研代码时,有如果两个编译报错:
Ø不识别xchgl汇编指令
{standard input}: Assembler messages:
{standard input}:1222: Error: unknown mnemonic `xchgl' -- `xchgl x1,[x19,112]'
{standard input}:1225: Error: unknown mnemonic `xchgl' -- `xchgl x0,[x19,88]'
Ø不识别cmpxchgl汇编指令
{standard input}: Assembler messages:
{standard input}:1222: Error: unknown mnemonic `cmpxchgl'
2原因分析
xchgl和 cmpxchgl都是X86上的指令集,ARM64上不识别,需要进行替换。xchgl指令的作用是交换 (寄存器/内存变量)和 (寄存器) 的值。如果交换的两个变量中有内存变量,会对内存变量增加原子锁操作。详细见以下释义:
cmpxchgl指令的作用是比较并交换两数。详细见官网释义: