这个问题的答案当然是“编写一些汇编代码!”

但是我可以做到:我知道基本的x86语法,寄存器的类型以及如何使用它们,子例程等。

当我参加汇编课程时,每个作业都有最大数量的允许使用的指令。如果我们过去了,那么我们将失去点数-因此这教会了我们高效地做事。您知道,以一种有效的方式,如果您看到C程序正在做这样的事情,您可能会因为创建难以理解的代码而对那个人竖琴。

对于C,可以建议“编写多线程程序”或“编写套接字服务器/客户端”。对于PHP,建议是“编写个人博客软件”。为了学习一种语言的语法,通常建议使用“项目欧拉”。

所以我的问题是:


我可以在汇编中编写哪些类型的东西,使我能够磨练自己的汇编和效率技能?例如,我可以在x86中解决项目欧拉问题,但这对我特定于装配的技能没有帮助。我只能在汇编程序中编码的项目想法是什么?
无论我是否在编写“好”代码,我将如何进行性能分析?例如,使用C和套接字,Web上有十亿个教程,并且在我的好友列表中有十亿人可以查看我的代码,并且有十亿个关于它们的SO问题:因此更容易衡量一个人的进步。
是否有现有的组装繁重项目可供我学习?还是什至为了效率而将它们分解成[特定任务]的程序部分?
我应该读哪种书?经常看低级事物的人的博客?


(最好是我可以在Linux上的x86上做的事情。我认为这些概念会延续到其他体系结构。)

最佳答案

汇编可以完成C不能完成的许多事情,并且优化器不是魔术。就是说,不需要您成为程序集半神的最有用的事情包括在编译器,标准库和解释器运行时类别中。

例如,蹦床在全部三个中都有用,或者可能有用,而且您不能使用C来组成任意调用堆栈。

要编写更好的汇编,请在此处阅读手册:

http://www.agner.org/optimize/

要查看专门用汇编语言编写的程序,以及痴迷于优化的社区来对您进行基准测试:

http://flatassembler.net/

07-26 09:41
查看更多