首先,匯編語言是一種語言,一種低級語言,和C,C++,VB......是一樣的,和編譯、解釋不是一個概念;
關於解釋程序 和編譯程序的解釋和關系如下:
A、解釋程序
所謂解釋程序是高級語言翻譯程序的一種,它將源語言(如BASIC)書寫的源程序作為輸入,解釋一句後就提交計算機執行一句,並不形成目標程序。就像外語翻譯中的「口譯」一樣,說一句翻一句,不產生全文的翻譯文本。這種工作方式非常適合於人通過終端設備與計算機會話,如在終端上打一條命令或語句,解釋程序就立即將此語句解釋成一條或幾條指令並提交硬體立即執行且將執行結果反映到終端,從終端把命令打入後,就能立即得到計算結果。這的確是很方便的,很適合於一些小型機的計算問題。但解釋程序執行速度很慢,例如源程序中出現循環,則解釋程序也重復地解釋並提交執行這一組語句,這就造成很大浪費。
B、編譯程序
這是一類很重要的語言處理程序,它把高級語言(如FORTRAN、COBOL、Pascal、C等)源程序作為輸入,進行翻譯轉換,產生出機器語言的目標程序,然後再讓計算機去執行這個目標程序,得到計算結果。
編譯程序工作時,先分析,後綜合,從而得到目標程序。所謂分析,是指詞法分析和語法分析;所謂綜合是指代碼優化,存儲分配和代碼生成。為了完成這些分析綜合任務,編譯程序採用對源程序進行多次掃描的辦法,每次掃描集中完成一項或幾項任務,也有一項任務分散到幾次掃描去完成的。下面舉一個四遍掃描的例子:第一遍掃描做詞法分析;第二遍掃描做語法分析;第三遍掃描做代碼優化和存儲分配;第四遍掃描做代碼生成。
值得一提的是,大多數的編譯程序直接產生機器語言的目標代碼,形成可執行的目標文件,但也有的編譯程序則先產生匯編語言一級的符號代碼文件,然後再調用匯編程序進行翻譯加工處理,最後產生可執行的機器語言目標文件。
在實際應用中,對於需要經常使用的有大量計算的大型題目,採用招待速度較快的編譯型的高級語言較好,雖然編譯過程本身較為復雜,但一旦形成目標文件,以後可多次使用。相反,對於小型題目或計算簡單不太費機時的題目,則多選用解釋型的會話式高級語言,如BASIC,這樣可以大大縮短編程及調試的時間。
B. vc編程:「調試程序」與「編譯,連接」有什麼關系,什麼區別
這要說的一個程序的生命周期了,首先自己寫的代碼是源代碼,通過調試編譯之後,生成匯編代碼,再通過鏈接生成目標代碼即可執行程序
C. 什麼是編譯程序和匯編程序
分類: 電腦/網路
問題描述:
什麼是編譯程序和匯編程序?他們有什麼區別?和機器語言、高級語言匯編語言有什麼樣的聯系
解析:
用匯編語言或高級語言編寫的程序,必須先送入計算機,經過轉換成用機器語言表示的目標程序(這個過程即編譯),才能由計算機執行。執行轉換過程的程序叫編譯程序。匯編程序是指沒有編譯過的匯編語言源文件。
編譯程序轉換過的叫目標程序,也就是機器語言。
編譯程序的工作情況有三種:匯編型、解釋型和編譯型。匯編型編稿冊譯程序用來將匯編語言編寫的程序,按照一一對應的關系,轉換鄭鬥成用機器語言表示的程序。解釋型編譯程序將高喊敬磨級語言程序的一個語句,先解釋成為一組機器語言的指令,然後立即執行,執行完了,取下一組語句解釋和執行,如此繼續到完成一個程序為止。用解釋型編譯程序,執行速度很慢,但可以進行人和計算機的"對話",隨時可以修改高級語言的程序。BASIC語言就是解釋型高級語言。編譯型編譯程序將高級語言編寫的程序,一次就會部翻譯成機器語言表示的程序,而且過程進行很快,在過程中,不能進行人機對話修改。FORTRAN語言就是編譯型高級語言。
D. 匯編和編譯程序的區別急
匯編程序是將匯編語言(低級語言)翻譯成二進制機器指令的程序
編譯程序是將高級語言(java,c++)翻譯成二進制機器指令的程序
E. 從預處理、編譯、匯編到鏈接,編譯系統都作了哪些工作使用哪些工具生成了哪些文件
這個問題可煩可簡,可深可淺。
對於編譯執行語言而言:
我所知的籠統過程有
(1)源代碼==》目標代碼==》可執行程序
(資源==》目標代碼)
(2)源代碼==》中間代碼==》目標代碼==》可執行程序
第(1)種一般的為低級匯編採用的模式,第一個主要步驟統稱為Assembly(匯編),由「匯編程序」(或稱匯編編譯器)完成,其包含預處理操作,生成的主要文件是目標文件,當然在生成目的文件前還有許多輔助文件,一般會被「匯編程序」臨時生成,用完即刪除,不指定控制選項的話最終用戶是看不到這些文件的,有哪些中間臨時文件,用處是什麼可以查看「匯編編譯器」的幫助選項得到。第二個主要步驟就是link(鏈接),其將目標代碼文件,鏈接庫里的目標代碼塊整合為可執行代碼,中間也臨時生成一些中間文件,如映射文件等,同樣可通過鏈接器的選項查看。
當然,在一些高級匯編里還會有資源編譯器,其將各種資源轉為(編譯為)目標文件(作為鏈接器的輸入)
第(2)種一般是高級語言採用的模式,但有些比較高級的直接跳過中間代碼由源代碼生成目標代碼,其就跟(1)類似,只是此時第一個主要步驟不叫「匯編」而稱compile(編譯),低級匯編的步驟一「匯編」也可稱」編譯「。如果有中間代碼生成,這中間代碼就是匯編代碼,此後續處理就同(1)了,此時的中間代碼其實也就是臨時文件中的一種。
概述:源代碼到目標代碼的過程通常稱為編譯,而目標代碼到可執行程序的過程稱問鏈接。
或將兩個過程統稱為代碼的編譯(全稱應為編譯連接),這涉及具體的語境,事實上編譯器如VC的cl.exe若沒有指定/c(只生產目標代碼選項),其就是編譯連接的統一過程(cl會調用相應的鏈接器),若指定,則只有編譯過程(只生成目標代碼而不鏈接稱可執行程序)
上述編譯執行類語言開發平台所開發生成的程序一般稱為」非託管類程序「
而對於託管類程序(如.NET平台語言C#,VB.NET,JVM平台的java等)
其雖然也有編譯過程,但其直接將源代碼轉為中間代碼而不是目標代碼(此時不是匯編代碼更不是機器碼,而是可被.NET或JVM引擎解釋執行的代碼)
可參看編譯原理等相關教材,阿門。。。
F. 為什麼要對C源程序進行編譯、鏈接
首先要說的是C語言屬於高級語言,不能直接被計算機識別而執行,所以需要一些操作來轉化。。一開始是編譯預處理,對宏,包含指令,編譯指令等進行處理,然後是詞法語法分析,將源代碼翻譯成中間代碼(一般是匯編),接著優化代碼,,然後將中間代碼翻譯成機器語言(目標文件),機器語言是計算機的基層語言,能被計算機直接識別。。接著鏈接目標文件,生成可以執行文件。。。大概就是這樣。。詳細的LZ可看這個總結。。http://bbs.zdnet.com.cn/thread-1614727-1-1.html
G. 如何查看vc編譯的exe程序對應的匯編代碼
如果是為了學習的話,在vc裡面直接運行程序,然後切換回vc6.0的界面,把混合模式的按鈕點下去就行了。直接顯示語句對應的匯編指令。如果想看別人的程序的話,一般弄個ollydbg來看就可以,不過要是加殼了的話要先脫殼才能看。
H. keil怎樣看編譯產生的匯編代碼
在成功編譯的前提下,按Ctrl+F5,或依次點擊菜單欄的「Debug」>>「Start/StopDebugSession」,切換到調試界面。
調試界面下,依次點擊菜單欄的「View」>>「DisassemblyWindow」,即可打開反匯編窗口,其中包含有混排的源代碼以及編譯生成的匯編代碼,如圖所示。
注意經過優化後,源代碼與匯編代碼並不一定一致。