導航:首頁 > 源碼編譯 > 匯編語言還用編譯為機器語言嗎

匯編語言還用編譯為機器語言嗎

發布時間:2022-05-15 19:39:24

⑴ 從匯編語言到機器語言需要編譯器嗎

由匯編語言源程序生成機器語言程序,必須使用編譯軟體(或稱編譯器),
例如 Keil ,就是可在Windows平台運行的編譯軟體。

⑵ 高級編程語言也要編譯成匯編語言,不同的cpu匯編語言不一樣,那會編譯成那種匯編語言呢

高級語言一般最終不是編譯成匯編語言而是機器語言,而像C#這類語言編譯後為公共語言,不是機器碼,運行時公共語言代碼由NET框架負責進一步即時翻譯即時執行為機器指令。只有C++這類語言編譯後為CPU可以直接執行的機器碼。


附圖是VS2019中C++語言的一段調試時的反匯編窗口,其中白字是C++源代碼,下面是對應的匯編碼,匯編行左列為內存地址,中間是對應的機器指令和數據(內存中的實際值),右側是對應的匯編碼。

比如,定義整數變數a並賦值1的語句,被編譯器編譯成C7 45 F8 01 00 00 00 這樣幾個位元組,其中C7為匯編碼中的MOV指令,可以操作16位寄存器和內存以及立即數,45 F8 是當前命名空間中變數地址,即變數a的地址(F845),而01 00 00 00 為32位寬度的數值1(內存排列順序是前低後高)。也就是說機器語言的指令格式為:指令代碼,地址,數據,當然根據不同指令,有時候地址和數據是不需要的。而右側 MOV dword ptr[a],1 是指令助記符,也就是匯編指令,而用匯編指令編寫的程序也是需要編譯成機器指令的。


指令C7對應的匯編碼及含義

⑶ 匯編語言是一種符號化的機器語言對嗎

對。

匯編語言面向機器的低級語言,通常是為特定的計算機或系列計算機專門設計的,保持了機器語言的優點,具有直接和簡捷的特點,可有效地訪問、控制計算機的各種硬體設備,如磁碟、存儲器、CPU、I/O埠等,目標代碼簡短,佔用內存少,執行速度快,是高效的程序設計語言。

(3)匯編語言還用編譯為機器語言嗎擴展閱讀:

注意事項:

匯編語言(assembly language)包含用短助記符如 ADD、MOV、SUB 和 CALL 書寫的語句。匯編語言與機器語言是一對一(one-to-one)的關系:每一條匯編語言指令對應一條機器語言指令。

高級語言如 Python、C++ 和 Java 與匯編語言和機器語言的關系是一對多(one-to-many)。比如,C++ 的一條語句就會擴展為多條匯編指令或機器指令。

⑷ 匯編語言是不是最容易被計算機翻譯成機器語言

匯編語言和機器語言的指令是一一對應的(就像英文字母的大寫字母和對應的小寫字母一樣),根本就沒有翻譯的過程,這個過程叫做匯編,所以叫匯編語言,當然你要把這個過程叫做翻譯也是可以的。既然是一一對應的映射關系,那自然是最快的了
因為不同的硬體體系其機器語言指令集不同,所以匯編語言自然也不同,也就沒有可移植性。
機器語言和匯編語言的代碼邏輯是一模一樣的,匯編指令僅僅是個助記符而已,就是個別名
比如 MOV AX,BX 對應的8086機器碼就是8BC3,在任何8086平台上都是這樣的。
這和高級語言不同,高級語言的代碼用不同的編譯器編譯出來的機器碼可能不同,甚至用同一的編譯器在不同環境下編譯出來的機器碼也可能不同
比如除以2 ,編譯器可能處理成除法指令,也可能處理成右移一位的方式

⑸ 匯編語言是一種機器語言嗎怎麼有的說不是有的說是啊

匯編不是機器語言。
匯編語言(Assembly Language)是面向機器的程序設計語言.匯編語言是一種功能很強的程序設計語言,也是利用計算機所有硬體特性並能直接控制硬體的語言。匯編語言」作為一門語言,對應於高級語言的編譯器,需要一個「匯編器」來把匯編語言原文件匯編成機器可執行的代碼。高級的匯編器如MASM, TASM等等為我們寫匯編程序提供了很多類似於高級語言的特徵,比如結構化、抽象等。在這樣的環境中編寫的匯編程序,有很大一部分是面向匯編器的偽指令,已經類同於高級語言。現在的匯編環境已經如此高級,即使全部用匯編語言來編寫windows的應用程序也是可行的,但這不是匯編語言的長處。匯編語言的長處在於編寫高效且需要對機器硬體精確控制的程序。
在匯編語言中,用助記符(Mnemonic)代替操作碼,用地址符號(Symbol)或標號(Label)代替地址碼。這樣用符號代替機器語言的二進制碼,就把機器語言變成了匯編語言。因此匯編語言亦稱為符號語言。
使用匯編語言編寫的程序,機器不能直接識別,要由一種程序將匯編語言翻譯成機器語言,這種起翻譯作用的程序叫匯編程序,匯編程序是系統軟體中語言處理系統軟體。匯編語言編譯器把匯編程序翻譯成機器語言的過程稱為匯編。
匯編語言比機器語言易於讀寫、調試和修改,同時具有機器語言全部優點。但在編寫復雜程序時,相對高級語言代碼量較大,而且匯編語言依賴於具體的處理器體系結構,不能通用,因此不能直接在不同處理器體系結構之間移植。
匯編語言的特點:
1.面向機器的低級語言,通常是為特定的計算機或系列計算機專門設計的。
2.保持了機器語言的優點,具有直接和簡捷的特點。
3.可有效地訪問、控制計算機的各種硬體設備,如磁碟、存儲器、CPU、I/O埠等。
4.目標代碼簡短,佔用內存少,執行速度快,是高效的程序設計語言。
5.經常與高級語言配合使用,應用十分廣泛。
匯編語言的應用:
1.70%以上的系統軟體是用匯編語言編寫的。
2.某些快速處理、位處理、訪問硬體設備等高效程序是用匯編語言編寫的。
3.某些高級繪圖程序、視頻游戲程序是用匯編語言編寫的。
匯編語言是我們理解整個計算機系統的最佳起點和最有效途徑
人們經常認為匯編語言的應用范圍很小,而忽視它的重要性。其實匯編語言對每一個希望學習計算機科學與技術的人來說都是非常重要的,是不能不學習的語言。
所有可編程計算機都向人們提供機器指令,通過機器指令人們能夠使用機器的邏輯功能。
所有程序,不論用何種語言編制,都必須轉成機器指令,運用機器的邏輯功能,其功能才能得以實現。
機器的邏輯功能,軟體系統功能構築其上,硬體系統功能運行於下。
匯編語言直接描述機器指令,比機器指令容易記憶和理解。通過學習和使用匯編語言,能夠感知、體會、理解機器的邏輯功能,向上為理解各種軟體系統的原理,打下技術理論基礎;向下為掌握硬體系統的原理,打下實踐應用基礎。
學習匯編語言,向上可以理解軟體,向下能夠感知硬體,是我們理解整個計算機系統的最佳起點和最有效途徑。

⑹ 有關高級語言和匯編語言的一些問題

問題太長了
關於移植問題,之所以匯編語言移植性,而高級語言移植性好,是因為匯編語言轉成的機器碼跟具體CPU指令集相關,而CPU不只是有intel,還有一些其他架構CPU,這些CPU架構不同指令集也不一樣,所以並不通用。
之所以高級語言移植性好,比如C/C+-,是因為在語言包裝層面上已經實現了通用!同一個print函數,在不同操作系統上,分別使用本地系統API函數來實現print函數,所以在語言層面上自然就實現了通用。而你編寫的程序使用的是C語言的print函數,而不是本地系統的API,這里的lrint是可移植在哪都好用。
高級語言,也可以通過編譯參數轉成匯編語言代碼,為了查看對比調試等,這只是一個附帶的中間過程如果有需要的話。當然編譯結果就是最終的二進制可執行文件。而且,在什麼平台就會編譯成本地平台的指令,這里指令指的是不同的CPU。在什麼平台就會生成什麼平台可執行格式,這里的平台指的是windows Linux mac等操作系統。
系統API,只是在本地好用,windows的不能用在Linux上,同理。
中斷概念沒什麼區別,可能對於處理方式會有不同罷了。

⑺ 機器語言是匯編語言轉過來的嗎。就像高級語言通過編譯器轉到匯編語言,似得。請詳解。

機器語言 可以是人工編制,最好人們就用機器語言編程的,十分十分的辛苦和容易出錯。
機器語言當然不是匯編語言「轉」過來的,匯編語言經過編譯會最終生成機器語言。高級語言編譯後也不是生成匯編語言,而是生成機器語言,CPU只認機器語言。

⑻ 匯編語言原程序用編譯程序將其翻譯為機器語言程序對不對

嚴格地講,不對。
編譯程序,是對高級語言程序進行翻譯的程序。它具有語法分析重構的過程。
匯編語言源程序的翻譯,只是簡單的查表式翻譯,不需要按語法進行分析和重構。
將匯編語言的源程序翻譯成機器語言的翻譯程序,不能稱之為「編譯程序」,而是叫做「匯編程序」。
`

⑼ 高級語言是直接編譯成機器碼的嗎還是先編譯成匯編語言再由匯編語言編譯成機器嗎

機器語言就是直接的二進制代碼,是硬體能直接執行的最低級代碼
匯編語言是僅次於機器語言的低級語言,也能由硬體直接執行,只是代碼為了方便閱讀和記憶而使用符號化的語言
高級語言基本上不跟硬體打交道的,需要有編譯器編譯後機器才能執行
(個人理解)

閱讀全文

與匯編語言還用編譯為機器語言嗎相關的資料

熱點內容
ubuntu壓縮zip 瀏覽:2
vigenere演算法的方法是什麼 瀏覽:666
pdf保護破解 瀏覽:341
仿微信聊天系統源碼廣州公司 瀏覽:106
怎麼查看我的世界伺服器日誌 瀏覽:430
怎麼從程序員走到成功 瀏覽:824
把軟體放入文件夾中如何移出 瀏覽:209
紅包源碼企業即時聊天軟體 瀏覽:581
xp安裝python 瀏覽:10
西門子參數編程讀取半徑值 瀏覽:403
洗首飾解壓小視頻 瀏覽:966
01背包問題的演算法解決 瀏覽:373
sd卡放哪個文件夾 瀏覽:301
解釋器模式java 瀏覽:104
android垂直自動滾動條 瀏覽:153
計算器java小程序 瀏覽:27
java的簡稱 瀏覽:68
雲伺服器公網ip地址 瀏覽:581
php對資料庫操作 瀏覽:237
java爬圖片 瀏覽:866