imk*_*dal 7 cpu performance assembly popularity machine-code
我最近开始学习装配,当我浏览互联网时,我看到越来越多的人说装配并非无用,但是用一种需要花费时间和精力的语言编写东西也是不值得的.高级语言.高级语言程序和低级语言程序之间的效率是否真的不足以引起人们现在的关注,是否还有另一种低级语言,如程序集更广泛使用?
小智 11
高级语言程序和低级语言程序之间的效率是否真的不足以引起现在的注意
通常,编译器生成的组件比开发人员编写的要好得多.有些开发人员可以击败编译器.但是,由于编写低级代码需要更多地关注细节并且更难编写和维护,因此通常只需要在汇编中实现一小段特定代码就可以提高效率.差异可能是显而易见的.但是,如果开发人员进行错误优化,那么它也可能并不显着.
我建议你阅读Michael Abrash的图形编程黑皮书 - 它有很多关于装配和优化+现实生活中的好故事.
是否有另一种低级语言,如装配更广泛使用?
汇编程序可能是最低级别的应用程序编程语言.唯一的另一个手段是手工编写二进制代码,但二进制操作码几乎不能称为"语言".
然而,编程超越了软件.硬件也需要编程.有硬件描述语言(HDL)可用于编程硬件(即您可以创建自己的CPU).最流行的HDL语言是Verilog和VHDL.
在较简单的时间内编写程序集是合适的.回到C编译器中的代码生成器还不是很聪明的时候,预测机器代码的执行时间很简单.
这已经结束了,人类无法击败现代代码生成器中的智能,也无法击败对细节的不懈追求.确切地知道何时插入缓存预取以使数据在恰当的时间可用时所需的详细信息.如何正确地重新排序指令可以获得最佳的超级可扩展性.并且恰好插入nops以使跳跃目标对齐.以及如何机械地展开循环.以及如何利用SIMD提供的自动并行化.等等.并且这不仅仅是一次,而是在代码改变时一遍又一遍地做到这一点.
| 归档时间: |
|
| 查看次数: |
11718 次 |
| 最近记录: |