【发布时间】:2016-12-24 12:36:44
【问题描述】:
简单函数(x86-64,-O2):
__attribute__( (noinline,noclone,pure) )
uint foo() {
register const uint* _reg asm ("r15");
return *_reg;
}
这个函数的汇编输出:
push r15
mov eax, [r15]
pop r15
retn
为什么插入了不需要的 pop/push 指令?
【问题讨论】:
-
另外,这也是内联汇编是邪恶的原因之一。