彙編語言屬於底層架構嗎?有什麼作用?

WYF蓬萊


1、首先負責的說,彙編屬於底層架構。計算機只能識別0和1兩個數字,那我啥我們平時編程都是直接英文字符呢?這中間就是一個轉換的問題,那是不是直接將高級語言轉換成可執行的二進制(也就是0和1)呢?其實也不是,現在編譯器大多數都是將高級語言轉成中間的彙編語言。那為啥必須裝成彙編語言呢?因為計算機硬件不同,可行性的命令集是不一樣的,比如intel與amd,彙編語言就是操作這些cpu的符號語言。所以高級語言需要轉換成依賴於硬件的彙編語言。

2、有什麼用呢?

(1)優化,因為我們直接使用高級語言,在某些情況下,不能直接發現性能問題,使用匯編可以很好的分析程序真正的執行流程,進而看到問題所在。

(2)破解,發行的軟件都是編譯好的二進制可執行文件,無法得到源碼,但二進制指令與彙編符號是一一對應的,我們可以通過逆向工程,反彙編得到軟件的彙編代碼,進而觀察註冊行為,破解軟件。

(3)內核啟動,在電腦開啟之時,操作系統軟件還未加載,這時只能使用機器識別的語言進行控制運行。

不過隨著互聯網發展,版權保護等等,現在使用匯編的人數在減少,但它會一直存在。


ShenZhen之圍


簡介

彙編語言(assembly language)是一種用於電子計算機、微處理器、微控制器或其它可編程器件的低級語言,亦稱為符號語言。屬於第二代計算機語言,它是採用一些容易理解和記憶的字母、單詞來代替一個特定的機器指令,如:“ADD”代表數字邏輯上的加減。這樣一來,通過將字母、單詞與機器語言指令進行一一對應,便可提高一定的程序可讀性,有助於bug修復等開發操作。


應用場景

彙編語言只是將機器語言做了簡單編譯,但是並沒有改變機器語言本身對不同硬件環境的特定性。因此,彙編語言的推廣和移植很難,但也正是其未改變機器語言的特定性,使得它能夠完美適配特定型號的計算機,故而運行效率遠遠高過其它語言。又由於其與機器語言相比,提高了可閱讀性和簡便性,故其通常被應用在底層架構、硬件操作和高要求的程序優化場景中。


優勢

  • 可輕鬆讀取存儲器以及硬件I/O接口狀態

  • 保持了機器語言優秀的執行效率

  • 可擴展性高等


總結

彙編語言是一種比較貼近機器語言的符號語言,因而具有很高的執行效率,但與機器語言相比,又避免了其閱讀性差和bug修復過程困難等缺陷,因此,成為了常用的編程語言之一。

此外,對於計算機技術的學習者而言,彙編語言成為了很好的出發點,這是由彙編語言本身的特性所決定的:其充分接觸硬件,可以讓操作者充分感知計算機的運行過程和原理,從而能夠對計算機硬件和應用程序之間的聯繫和交互形成一個清晰的認識,這也是最能夠鍛鍊編程者編程思維邏輯的。


如果喜歡,可以關注我,謝謝!


Fortitude


彙編語言(assembly language)是最接近於機器語言的編程語言。如果說機器語言是計算機操作的本質,那麼彙編語言就是最最接近本質的語言。彙編語言操作直接面向硬件。彙編語言是一種用於電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。在彙編語言中,用助記符代替機器指令的操作碼,用地址符號或標號代替指令或操作數的地址。在不同的設備中,彙編語言對應著不同的機器語言指令集,通過彙編過程轉換成機器指令。特定的彙編語言和特定的機器語言指令集是一一對應的,不同平臺之間不可直接移植。

所以從平臺角度上看,彙編語言屬於底層架構。

在早期的硬件平臺,處理器速度比較慢、內存比較小,所以早期程序不得不使用匯編語言編寫。

而如今使用匯編語言開發可以讓你更好的理解高級語言,尤其是高級語言中的C語言。彙編語言對於內存的操作都是基於內存地址的,

而C語言中最令人頭疼的指針概念,說白了就是內存的地址。指針的學習和應用中最頭疼的就是在指針這個抽象的概念,和實際的內存單元之間建立思維映射,而這些恰恰是我們在彙編語言學習中頻繁做的一件平常事。另外,對於C語言中的數據類型、形參實參、函數調用、全局變量、局部變量等概念及操作,我們都可以用匯編語言中的一些操作相關聯。把這些抽象的概念和過程通過彙編語言形成一個具體的映像,深度剖析,這樣我們才能真正的學會、學好C這類高級語言。


老徐聊IT互聯網


很高興回答這個問題!

彙編語言是最接近硬件的語言,與二進制機器語言一一對應。

彙編語言屬於最底層的需要,主要用於計算機.微處理器,微控制器或者其他可編程器件的低級需要,也可以稱之為符號語言。

彙編語言沒有像其他程序語言一樣用於編碼,程序設計,也沒有被廣泛用於程序應用開發中,在今天的實際應用中,它通常被應用於底層,硬件操作和高要求的程序優化的場合。驅動程序,嵌入式操作系統和實時運行程序都需要彙編語言。

整體來說,彙編語言能面向機器並且較好的發揮機器的特性,得到質量較高的程序,佔用內存少,執行速度快,是高效的程序設計語言。

希望樓主採納



J小勁


您好!很高興回答您的問題!

首先,彙編語言肯定是屬於底層架構的!

彙編語言就是將一些難於記憶的0100100轉換為便於記憶的格式,讓人能夠稍微理解點。如 將寄存器bx的內容送到ax中,對應的機器指令是: 100001001110110000(完全不知道是啥玩意,如果真要細究,那麼你就得去查看其電路連接了),而變成彙編指令後: mov ax, bx 。哈哈,是不是容易理解多了。所以,我也總結出一個道理,其實所謂的困難與簡單,真的只是相對的,沒有對比就沒有傷害!

  回到前面的問題,彙編語言能幹什麼? 這個問題有點low了,機器語言都能幹成的事,彙編都能幹?但是,機器語言這麼牛逼嗎?難道現在這麼多高科技的東西機器語言都能幹嗎?這是廢話,所有語言轉到最後,都是機器語言,沒有機器語言幹不了的事,也可以說,沒有彙編幹不了的事,只是咱功力不夠,哈哈!

  彙編主要有三類指令:1)彙編指令(機器碼助記符,與機器指令一一對應,如果可以,其實只要這玩意你就可以操作計算機所有硬件了); 2)偽指令(沒有對應機器碼,由編譯器執行,計算機不執行,也就是說被編譯器轉換成了一組或更多的機器碼去了,現代高級語言編譯器都是幹這事兒的); 3) 其他符號(如+-*/,和第二個一樣,由編譯器識別轉換)

越是技巧性性的東西,我覺得現代的語言已經夠多了,咱也沒必要在彙編上去花費太多功夫。

  瞭解彙編,不是想用來寫什麼牛逼的功能,而是讓自己更清楚的明白自己在做的是什麼事情。

  我覺得有必要好好了解!


國際科技資訊


彙編語言屬於最低級的語言了,也是最底層的語言,再下去就是二進制機器碼(101010)對應模擬電路的高低電平了。

在彙編語言中,用助記符代替機器指令的操作碼,用地址符號或標號代替指令或操作數的地址。不同CPU架構一般都有不同的機器語言指令集,相應的彙編語言語法也有一定的差異,基本上都不能通用。比如intel的x86平臺和ARM精簡指令集,還有一些其他的比如MIPS等等都不一樣。

在今天的實際應用中,它通常被應用在底層,硬件操作和高要求的程序優化的場合。驅動程序、嵌入式操作系統和實時運行程序都需要彙編語言。 由於彙編更接近機器語言,能夠直接對硬件進行操作,生成的程序與其他的語言相比具有更高的運行速度,佔用更小的內存,因此在一些對於時效性要求很高的程序、許多大型程序的核心模塊以及工業控制方面大量應用。

其他高級語言,比如C/C++的程序在編譯時,都會先生成對應的彙編指令,再最終生成二進制執行程序。


碼中尋樂


彙編語言是底層語言,不屬於架構。

彙編語言(assembly language)是一種用於電子計算機、微處理器、微控制器或其他可編程器件的低級語言,亦稱為符號語言。在彙編語言中,用助記符代替機器指令的操作碼,用地址符號或標號代替指令或操作數的地址。在不同的設備中,彙編語言對應著不同的機器語言指令集,通過彙編過程轉換成機器指令。特定的彙編語言和特定的機器語言指令集是一一對應的,不同平臺之間不可直接移植。

計算機系統中各個語言又低到高順序:

二進制-----彙編語言-----高級語言(例如c, c++等)。


golang深耕者


彙編語言是介於高級語言與機器語言間的底層語言,它面向處理器、寄存器操作指令的操作語言。它比二進制的機器語言更具備可讀性和維護性,是軟件與硬件交互的中間件,屬於底層架構的一環,對於單片機程序具有重要意義


秉筆書春秋


相比高級編程語言來說,執行效率高,優化好,編寫效率比較低,一般底層驅動採用彙編語言


分享到:


相關文章: