具有多次收益时对业绩的影响

问题描述 投票:0回答:1

看看下面的情况。

;some code 
 test reg1,reg2
je jump1
 ;do something
 add rsp,20
 pop rdx
 ret
jump1:
 ;do something
 cmp reg2,reg3
 jg jump2
 add rsp,20
 pop rdx
 ret
jump2:
 ;do something
 add rsp,20
 pop rdx
 ret

类似的汇编在反汇编代码中并不常见。也许编译器可以如此高效地处理。

具有多个return语句会影响性能吗?与上述相比,单收益jmp可能带来的绩效结果是什么?

assembly x86 micro-optimization
1个回答
0
投票

这称为“尾巴重复”优化。一些编译器有时会这样做。例如LLVM blog post about it

您也可以为在循环内部具有分支的循环执行此操作。

[通常,当函数结尾很小时(只有1次弹出),这是一件好事,因此花费不多,尤其是在现代的x86上,它具有大的缓存和良好的代码密度(retpop为单字节) )。

© www.soinside.com 2019 - 2024. All rights reserved.