2012-02-23 122 views
3

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

+0

程序集是一种糟糕的编程语言,它必须绝对没有错误,例如驱动程序。可能有些部分,但绝对不是全部。 – 2012-02-23 17:46:27

+0

我真的不知道该语言的用途。也可以用其他语言编写整个驱动程序,而不是用Assembly进行一些部分。 – phadaphunk 2012-02-23 17:54:13

+0

参见[Wikipedia](http://en.wikipedia.org/wiki/Assembly_language)。 – 2012-02-23 18:03:14

回答

1

汇编语言在很多情况下都可以使用。

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

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

1

当今的程序集主要用于选择的高级语言不允许程序员访问某些CPU功能(如向量指令或预取)的情况。

2

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

将高级代码转换为机器代码的工作由compiler执行,并且程序集通常作为中间表示在创建之前被转换为机器代码。有鉴于此,程序集至少被编写为常用的高级编程语言 - 它由另一个程序编写。

原因你可能用汇编语言写一个程序:

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

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

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。唯一的区别是我们利用计算机自己将我们可读的“代码”编译成二进制。

我希望这一切都有道理!