Assembly 您是否需要用汇编语言编写真正的代码?

Assembly 您是否需要用汇编语言编写真正的代码?,assembly,x86,Assembly,X86,我经常听到我周围的人喜欢讨论用汇编语言写作,这也是我也想学习写作的原因之一。目前我正在一起学习汇编和C 所以,我的问题是什么时候需要用真实代码编写程序集? 只是学习好吗? 在用C编写代码时,它有什么真正的用途吗 任何有帮助的评论或回答将不胜感激 这很少见。在23年多的职业生涯中,我从来没有这样做过。但我主要在客户机-服务器DB应用程序领域工作,有些工作需要大量使用它,或者至少需要了解处理器的实际工作方式 然而,这是我学到的第一件事,不包括基本的数字电子技术,我要说的是,这一学习对我的职业生涯和爱

我经常听到我周围的人喜欢讨论用汇编语言写作,这也是我也想学习写作的原因之一。目前我正在一起学习汇编和C

所以,我的问题是什么时候需要用真实代码编写程序集?
只是学习好吗?
在用C编写代码时,它有什么真正的用途吗


任何有帮助的评论或回答将不胜感激

这很少见。在23年多的职业生涯中,我从来没有这样做过。但我主要在客户机-服务器DB应用程序领域工作,有些工作需要大量使用它,或者至少需要了解处理器的实际工作方式


然而,这是我学到的第一件事,不包括基本的数字电子技术,我要说的是,这一学习对我的职业生涯和爱好编程有很大帮助。

我本来打算写一篇长文章,但决定总结一下:

  • 嵌入式代码、引导加载程序、编译器后端
  • 是的,它将帮助您理解和调试编译的代码
  • 我唯一一次在c中使用它是为了读取实时时钟寄存器

  • 尽管在汇编语言中编写代码变得越来越少,但学习汇编语言仅仅是为了理解如何在后台工作仍然是非常好的。现代的C/C++优化编译器允许您用C编写代码,将代码转换为高质量的汇编指令,通常超过您可以手动编写的代码,但代价是降低结果的可读性(例如,插入空指令以优化CPU管道的使用)


    如果您为新体系结构、非常低级的库或具有严格资源约束的嵌入式系统编写编译器,则可能需要使用汇编。对于其他所有的东西,C和C++都会做得更好。

    < P>我在工作中需要写ASM代码的时候有很多次,C中要么你不能做某些事情(例如访问特殊CPU寄存器或使用CPU的系统指令),要么编译的C代码太慢或太大(编译器不够好)。 尽管如此,asm代码的一小部分或花在编写它上的时间还是微不足道的


    学习asm是很好的。它使您能够“看穿”C代码,预测指令以及指令的数量,粗略估计部分代码的速度。在此过程中,您将学习一些优化和其他技巧,以及一些很酷的算法/方法,然后可以将这些算法/方法转换到您的C代码中。只要看看那些关于C指针、二进制和十进制之间的数字转换或任意精度算术的众多问题。了解asm有助于解决这些问题和其他问题。

    在嵌入式世界中,汇编语言的专业使用非常普遍。我们周围有很多应用程序,微控制器可以做简单但有用的事情。例如,看看,尤其是ATtiny13,它的1kB程序内存小得离谱,除了32个8位CPU寄存器外,根本没有RAM。这些芯片是什么真是太神奇了。当大量购买时,这种芯片的价格约为一美元。因此,当您生产大量需要简单(甚至不太简单)逻辑的设备时,硬件生产成本的节约远远超过在汇编程序中手工制作代码以使其在极其有限的平台上工作的开销。

    到目前为止,我在2011年已经做了两次,并且我主要在Java业务线应用程序上工作。很方便快速启动setup.exe来包装JRE和应用程序安装。在C中可以做到这一点,但它比编译器更快地获取和设置汇编程序,而且对于这样一个简单的应用程序,无论哪种方式,编写时间都是相当的。。。还用于解决与USB设备接口的问题。由于未知的原因,通过JNA失败,所以我在汇编中编写了它,以确保我知道每一位的去向和时间。

    汇编在我看来不再很有用,但当它真的有用时,读取它通常比编写它更有用。编译器真的不需要它的时候,你就需要它。比如处理视频数据的代码,科学模拟,游戏中的一些东西,特别是当你的周期预算非常紧张的时候,Bashwork提到的东西,等等。这并不像一些人想象的那么罕见。在枯燥的公司应用程序中,当你编写它们时,它们会把你的生命吸走,这是很少见的。