汇编语言用法

时间:2012-02-23 17:44:14

标签: assembly q

汇编是我想要学习的一种语言,但你仍然不会经常听到汇编中已编程的东西。我的问题是汇编语言的用途是什么?它还在使用吗?

4 个答案:

答案 0 :(得分:3)

什么是装配用于?

简短回答:与软件有关的一切。

它还在使用吗?

简短回答:这是最纯粹的形式,很少这样。间接地,它被用于所有软件。

更长的答案:

汇编是一种使原始二进制代码对人类可读的方法。当第一台计算机被构建时,可以简单地拨打指令来执行操作,但是随着计算机变得越来越复杂并且需要更高级的计算,所有用于组成原始二进制程序的指令的拨号变得乏味,非常乏味。考虑使用8位宽操作码和16位操作数(和/或寄存器或存储器地址)的220行长程序,这意味着每个指令都是24位,即24个零和1,长。将此乘以220(假设每条线上有一条指令的指令数量),您得到5280.这是您必须拨入的零和数量,而不会出现任何错误。单调乏味,容易出错。

因此,计算机科学家想出了使用助记符来描述所有不同指令的想法。一个例子是缩写'mov',它在x86程序集中代表'move'。确实如此,它将数据从一个地方移动(或实际复制)到另一个地方。这使得阅读和编写程序变得更加容易。

因为程序集仅使用单词和规则来描述二进制代码,所以它总是最快的。您正在直接与CPU通信。这是一个有利的地方。

仍然计算机变得更加复杂,软件变得更先进,或者说更大。打几行装配很好,但是在装配中编写一个Web浏览器将是一个完整的灾难,需要跟踪并且很容易出错。

因此开发了更高级的语言。像C / C ++这样的语言通常被称为高级语言,因为它们不直接与CPU对话。这些语言通常使用内置函数,用于执行特定任务的迷你ASM程序。可以说所有高级编程语言基本上都是一个庞大的ASM函数库。

现在,python例如用C编写,C本身调用二进制代码上的汇编和汇编调用。基本上,我们获得的越高,我们从ASM得到的解释就越多,但它仍然是CORE的ASM。唯一的区别是我们利用计算机本身将我们人类可读的“代码”编译成二进制文件。

我希望这一切都有意义!

答案 1 :(得分:2)

汇编语言用于将C等高级编程语言转换为机器代码。处理器只能运行机器代码 - 一系列以二进制格式编码的短,离散的指令。每次任何程序运行时,处理器都会执行机器代码。汇编语言只是一种人类可读的机器代码形式。

将高级代码转换为机器代码的工作由compiler执行,并且通常在转换为机器代码之前将程序集作为中间表示创建。从这个角度来看,汇编至少是经常流行的高级编程语言 - 它只是由另一个程序编写。

您可能使用汇编语言编写程序的原因

  • 你的教授告诉你
  • 您不信任编译器生成优化或工作的机器代码
  • 您正在编写自己的编译器或编程语言

常用汇编语言(及底层ISA)

答案 2 :(得分:1)

现在,汇编主要用于选择高级语言并不授予程序员访问某些CPU功能的权限,例如向量指令或预取。

答案 3 :(得分:1)

汇编语言在许多情况下都有意义。

  1. 高容量,最低成本的嵌入式系统。运行类似C的额外硬件可能会让人望而却步。
  2. 提高效率。
  3. 通过更高级别的语言访问无法/可用的硬件。
  4. 2过去很重要,但在过去的几十年中几乎已经萎缩了。