2012-02-23 164 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。唯一的區別是我們利用計算機自己將我們可讀的「代碼」編譯成二進制。

我希望這一切都有道理!