我对“何时使用ASM?”主题做了一些Google搜索研究。并找到了一些有用的信息。当然,人们提到了广泛的应用领域:HL代码的大小和速度优化,引导程序,嵌入式系统,驱动程序开发,逆向工程等。在C中使用x86内联汇编的好处?
现在,我想问一下用ASM可以实现哪些不能在Intel处理器(x86)上使用正常的C编译器(如gcc)完成(或高度无效)?
我听说过: - (如:lock
,xchg
)
- 实现互斥CPU直接支持所需
- 看中位操作 - 寻找最高/最低位设置为1(
bsf
,bsr
) ,如果测试一个位为1(bt
,bts
...),旋转的值(ror
,rol
) - 中断屏蔽(
sti
,cli
) - 访问CPU特定信息(
cpuid
)
有人建议标准内存功能写,再(例如, memcpy())在ASM中。我认为现在编译器已经以最佳方式实现了这些操作,但也许我错了?
有人还提到我不明白的int/float转换。我的意思是手动执行这种转换也更有效率吗?
可能重复:http://stackoverflow.com/questions/143561/is-there-a-need-to-use-assembly - 这几天 –
感谢您的链接。我已经通过了这个话题,找到了一些答案,但仍然想要更多:) –