我正在使用 Apple 的 llvm-gcc 使用内联汇编编译一些代码。我写了我想要它做的事情,但是它添加了一些无关的命令,这些命令不断地将变量写入内存。为什么要这样做,我该如何阻止它?
例子:
__asm__{
mov r11, [rax]
and r11, 0xff
cmp r11, '\0'
}
变为(在“装配”助手视图中):
mov 0(%rax), %r11 // correct
movq %r11, -104(%rbp) // no, GCC, obviously wrong
and $255, %r11
movq %r11, -104(%rbp)
cmp $0, %r11
干杯。