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

时间:2011-12-15 17:44:00

标签: assembly x86

我常常听到身边的人喜欢讨论汇编语言的写作,这也是我想学习写作的原因之一。目前我正在学习装配和C。

所以,我的问题是你什么时候需要用实际代码编写汇编? 学习真好吗? 在C中编写代码时是否有任何实际用途?

任何有用的评论或答案将不胜感激!

6 个答案:

答案 0 :(得分:8)

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

如果为新架构,极低级库或具有严格资源限制的嵌入式系统编写编译器,则可能需要使用汇编。对于其他一切,C和C ++也可以做得更好。

答案 1 :(得分:5)

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

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

答案 2 :(得分:4)

很少见。我从未有过23年的职业生涯。但我主要在Client Server数据库应用程序空间工作,有些工作你会经常使用它,或者至少需要知道处理器实际上是如何工作的。

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

答案 3 :(得分:3)

汇编语言的专业使用在嵌入式世界中非常普遍。我们周围有许多应用程序,其中微控制器做简单但有用的事情。例如,看一下tinyAVR family of microcontrollers from Atmel,尤其是ATtiny13,它的1kB程序内存非常小,除了32位8位CPU寄存器外,根本没有RAM。但令人惊讶的是,这些筹码是capable of。大量购买时,该芯片的成本约为1美元。因此,当您生产大量需要简单(甚至不是非常简单)逻辑的设备时,硬件生产成本的节省远远超过手工制作汇编程序中的代码以使其在极其有限的平台上运行的开销。

答案 4 :(得分:2)

我有很多时候需要在工作中编写asm代码,在C中你要么根本不能做某些事情(例如访问特殊的CPU寄存器或使用CPU的系统指令),或者编译的C代码太慢了或者太大(编译器不够好)。

尽管如此,asm代码的一小部分或写入它的时间花费非常小。

学习asm很好。它让你“看到”你的C代码,预测什么指令和它变成多少,粗略估计代码部分的速度。在这个过程中,您将学习许多优化和其他技巧以及一些很酷的算法/方法,然后您可以将它们传输到C代码中。只需看看有关C指针或二进制和十进制或任意精度算术之间的数字转换的众多问题。知道asm有助于这些和其他事情。

答案 5 :(得分:2)

到目前为止,我已经在2011年完成了两次,而且我主要从事Java业务应用程序的工作。使用快速setup.exe包装JRE和应用程序安装派上用场。可以在C中完成,但是它比编译器更快地获取和设置汇编程序,并且对于这样一个简单的应用程序,写入时间可以比较两种方式...也用它来处理与a连接的问题USB设备。由于未知的原因通过JNA失败,所以我在汇编中写了它,以确保我知道每一点的进展和时间。