pou*_*def 9 performance assembly
当然,这个问题的答案是"编写一些汇编代码!"
但我可以这样做:我知道基本的x86语法,寄存器的类型以及如何使用它们,子程序等.
当我参加汇编课程时,每个作业都有我们允许使用的最大指令数.如果我们过去,那么我们就会失去分数 - 所以这教会我们有效地做事.你知道,如果你看到一个C程序做这样的事情,那么你可能会因为创建难以理解的代码而对这个人有所帮助.
对于C,可以建议"编写多线程程序"或"编写套接字服务器/客户端".对于PHP,建议可能是"编写个人博客软件".要学习语言的语法,通常会建议使用"项目euler".
所以我的问题是:
我可以在大会上写什么样的东西,让我磨练我的装配和效率技能?例如,我可以在x86中执行项目euler问题,但这对我的程序集特定技能没有帮助.我能做的项目创意是什么,只能在汇编程序中真正编码?
我将如何分析是否正在编写"好"代码?例如,使用C和套接字,网上有十亿个教程,我的好友列表中有十亿人可以查看我的代码,并且有十亿个关于它们的SO问题:因此更容易测量一个人的进步.
是否有现有的装配重型项目,我可以从中学习?或者为了提高效率,他们甚至为了[特定任务]而进入程序集的部分程序?
我应该读什么样的书?那些经常看低级别事物的人的博客?
(最好是我可以在linux上的x86上做的事情.我认为这些概念会延续到其他架构.)
好的答案.我还建议编写一个小编译器并让它为您编写汇编语言.这样,您可以考虑在汇编程序中执行不同的方法,例如传递参数,制作堆栈帧,组合地址表达式,数组索引,管理内存,条件,循环,try-catch等.
小智 3
汇编可以做很多 C 做不到的事情,而且优化器并不神奇。也就是说,不需要你成为汇编半神的最有用的东西都属于编译器、标准库和解释器运行时类别。
例如,蹦床在这三个方面都有用或可能有用,而且您不能使用 C 来组成任意调用堆栈。
要编写更好的程序集,请阅读此处的手册:
http://www.agner.org/optimize/
要查看专门用汇编语言编写的程序以及痴迷于优化的社区来对您进行基准测试: