我已经对“何时使用ASM?”这一主题进行了一些谷歌搜索研究。并找到了一些有用的信息。当然人们提到了广泛的应用领域:HL代码的大小和速度优化,引导加载程序,嵌入式系统,驱动程序开发,逆向工程等。
现在,我想问一下,在英特尔处理器(x86)上使用普通的C编译器(比如gcc),ASM无法实现(或效率很高)?
我听说过:
lock
,xchg
)bsf
,bsr
),测试位是否为1(bt
,bts
... ),旋转值(ror
,rol
)sti
,cli
)cpuid
)有些人建议在ASM中重写标准记忆功能(例如memcpy())。我认为现在编译器已经以最佳方式实现了这些操作,但也许我错了?
有人还提到了我不明白的int / float转换。我的意思是手动执行这样的转换效率会更高效吗?
答案 0 :(得分:1)
利用编译器不支持的CPU架构优势。当你的编译器不好时,你需要在计算上执行vectorizations
以获得更好的性能,你也可以使用程序集。考虑使用支持AVX的CPU中的单个指令进行32个字符计算。