2

汇编是我想学习的一种语言,但您仍然不会经常听到有人在汇编中编写了某些东西。我的问题是汇编语言的用途是什么?还在用吗?

4

4 回答 4

3

组装是做什么用的?

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

它还在使用吗?

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

更长的答案:

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

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

因为汇编只是使用文字和规则来描述二进制代码,所以它总是最快的。您正在直接与 CPU 对话。这真是一大优势。

尽管如此,计算机变得更加复杂,软件变得更先进,或者更确切地说,更大。键入几行汇编代码很好,但是编写,比如说,在汇编中编写一个 Web 浏览器将是一场彻底的灾难,需要跟踪的数据太多,而且很容易出错。

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

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

我希望这一切都有意义!

于 2012-02-23T19:58:09.980 回答
2

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

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

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

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

通用汇编语言(和底层 ISA)

于 2012-02-23T18:21:14.767 回答
1

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

于 2012-02-23T18:11:05.440 回答
1

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

  1. 大容量、最低成本的嵌入式系统。运行 C 之类的额外硬件可能令人望而却步。
  2. 提高效率。
  3. 无法/无法通过高级语言访问硬件。

2曾经很重要,但在过去的几十年里几乎被遗忘了。

于 2012-02-23T18:11:44.753 回答