導航:首頁 > 源碼編譯 > 編譯程序需要匯編程序的支持嗎

編譯程序需要匯編程序的支持嗎

發布時間:2022-06-30 12:45:08

① 什麼是編譯程序和匯編程

  1. 編譯程序是把用高級程序設計語言或計算機匯編語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序,屬於採用生成性實現途徑實現的翻譯程序。編譯程序以高級程序設計語言書寫的源程序作為輸入,而以匯編語言或機器語言表示的目標程序作為輸出;編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。

  2. 匯編程序是指把匯編語言書寫的程序翻譯成與之等價的機器語言程序的翻譯程序,是為特定計算機或計算機系列設計的一種面向機器的語言,由匯編執行指令和匯編偽指令組成。匯編程序輸入的是用匯編語言書寫的源程序,輸出的是用機器語言表示的目標程序。採用匯編語言編寫程序雖不如高級程序設計語言簡便、直觀,但是匯編出的目標程序佔用內存較少、運行效率較高,且能直接引用計算機的各種設備資源。它通常用於編寫系統的核心部分程序,或編寫需要耗費大量運行時間和實時性要求較高的程序段。匯編程序主要有簡單匯編程序、模塊匯編程序、條件匯編程序、宏匯編程序、高級匯編程序幾種。

② 程序的反編譯是否需要 用到 匯編語言, 學習匯編語言之前需要 了解和學習什麼,求指教

程序的反編譯都是32位的匯編,在此之前應該先了解16位的匯編,因為這些知識是相通的,會了16位匯編,32位的上手非常快。學習16位匯編我推薦王爽的 匯編語言 ,淺顯易懂,學習過程循序漸進。

③ 關於匯編語言編譯程序的問題

這么說把!簡單的可以這么理解,高級語言先轉換成匯編語言,匯編語言跟機器語言一一對應然後執行。雖然表達的可能不是很恰當,不過總體就是這個意思,就是說他就像你跟外國人說話一樣,他就跟翻譯員一樣

④ 寫編譯器必須要會匯編語言嗎

這種事情從理論層面來說:不一定要與匯編語言有什麼瓜葛。你完全可以讓你的編譯器直接編譯成機器碼。大部分C/C++編譯器(不是所有的)之所以先編譯成匯編語言,是為了解構。從C到匯編的「翻譯」相對容易(都算是抽象語言,有語義的),同時匯編語言的編譯器效率很高,可以生成質量非常高的機器碼。所以兩者結合,可以突出各自的優勢,減少復雜度。
但是如果有必要,當然也可以直接編寫產生機器碼的編譯器,實際上Java/C#這樣的半編譯語言和Js這樣的腳本語言,都沒有先轉換成匯編的這一步。前者是因為強大的虛擬機技術,直接把位元組碼轉換成機器碼執行了,後者是靈活的解釋器,實時把代碼轉換成機器碼執行,而完全沒有「編譯」這一步(當然如果深究的話,出於性能考慮,很多高性能的解釋器也會提前「預編譯」一部分代碼,但這是具體實現,不是宏觀概念)。

⑤ 用c語言寫程序時,還可以用匯編語言嗎

可以像樓上一樣用特定編譯器支持的asm、__asm一類關鍵字內嵌匯編,也可以讓編譯器編譯時輸出匯編代碼,然後再在上面進行改動,最後一並轉成機器碼。要用哪種方法還是看需要而定,如果是實現一個特定模塊,可以內嵌;如果是要做代碼調整,用後一種。
不過話說回來,在現代編譯器把優化已經做得很好的情況下,用C這么底層的語言已經很少用得到匯編了。

⑥ c語言編譯器是用匯編語言寫的嗎

這個是肯定的。演算法優化,首先是邏輯描述的精煉化。至於C,只是計算邏輯到計算機模式的一種映射,而匯編僅是利用特殊計算機指令的一個更深的藕荷。
不過有一點,C語言由於是計算邏輯到計算機模式的映射,所以不單單考慮演算法本身,還肩負數據組織的實現。數據流動方式,數據組織方式,對計算性能的影響也很大。這要看是否和計算機組成原理相貼近。其實這塊也是側重邏輯的設計,而不是具體機器指令的實現,因此匯編是無能為力的。
不過在DSP等特殊CPU架構,C語言和編譯器無法很好的將上述邏輯轉換為機器指令,或者C本身的邏輯無法很好的貼近CPU的特性,那麼還是得匯編。一個典型的例子就是如何使用DSP的並行指令(通常的矢量計算)和並發指令集,幾個不同的指令(隸屬不同處理單元)的同時執行。使用C語言無法描述清楚這些邏輯方式,而編譯器又太水,則還是不得不用匯編。此時C語言僅能淪落到大的計算機組織特性的貼近,和整體框架,模塊的設計上。細節方面無能為力了。

⑦ 可以編譯和運行匯編語言程序么

這個,你是不是補充一下問題,實在是不清楚你的問題的主題是什麼。我估計沒有人回答也是這個原因。

匯編語言程序當然是可以編譯和運行的,這毫無疑問。

我猜你是想問如何搭建編譯運行環境吧?如果是這樣,有幾種方案可供選擇:

  1. 使用emu8086程序,不錯的集成環境,缺點是需要花錢的。

  2. 使用dosbox模擬dos環境,在模擬環境中編譯、運行、調試,主要用於學習。

    我曾寫過一個《dosbox安裝使用說明與打包程序》的文檔,你可以搜索一下看看。

  3. 使用vmware之類的虛擬機,在上面安裝dos操作系統,在該系統中進行學習(這個比較麻煩,不推薦。好處是完全虛擬dos環境,但與外界交互文件等比較麻煩)

  4. 有些國產的集成環境,好像也是集成了dosbox,我自己沒用過,有興趣的話,你可以查找一下試試。

⑧ 匯編語言需要操作系統的支持嗎

這個問題比較特殊也比較難. 樓上的回答不是很准確. 我來解釋一下.

語言(不管是匯編, 機器語言, 還是高級語言)都是獨立於操作系統的. 不同的是低級語言(匯編, 機器語言)依賴與CPU的指令系統, 高級語言(C, Java, C++, Basic)等等完全獨立(與CPU的指令集都無關). ---- 你想想, 你在Window下寫C程序, 和在Linux下寫C程序, 語法會有變化嗎?

操作系統支持的是應用程序(也就是你寫的程序)的運行. 通俗的講你不管用什麼語言寫, 寫完之後你總要把源代碼變成exe文件(如果Windows下). exe文件的運行是要操作系統支持的. 另外junmarun說的很對, 源代碼編譯的過程本質上也是一個exe的運行過程, 也是要操作系統支持的.

所以操作系統支持的不是匯編語言本身, 而是匯編語言所編出的程序. 換句話說只要你編出的程序不是操作系統, 總是要操作系統的支持的, 與你用什麼方式編程無關.

可能你想問如果寫操作系統會怎麼樣? 那就要考慮硬體的支持了. 任何程序都是建立在一個平台上的.

⑨ 請問匯編程序, 解釋程序, 編譯程序分別指

1、匯編程序

把匯編語言書寫的程序翻譯成與之等價的機器語言程序的翻譯程序。匯編程序輸入的是用匯編語言書寫的源程序,輸出的是用機器語言表示的目標程序。匯編語言是為特定計算機或計算機系列設計的一種面向機器的語言,由匯編執行指令和匯編偽指令組成。

採用匯編語言編寫程序雖不如高級程序設計語言簡便、直觀,但是匯編出的目標程序佔用內存較少、運行效率較高,且能直接引用計算機的各種設備資源。它通常用於編寫系統的核心部分程序,或編寫需要耗費大量運行時間和實時性要求較高的程序段。

2、解釋程序

解釋程序是一種語言處理程序,在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但在運行用戶程序時,它直接執行源程序或源程序的內部形式(中間代碼)。因此,解釋程序並不產生目標程序,這是它和編譯程序的主要區別。

3、編譯程序

編譯程序也稱為編譯器,是指把用高級程序設計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。編譯程序屬於採用生成性實現途徑實現的翻譯程序。

它以高級程序設計語言書寫的源程序作為輸入,而以匯編語言或機器語言表示的目標程序作為輸出。編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。

(9)編譯程序需要匯編程序的支持嗎擴展閱讀:

工作過程

1、匯編程序

輸入匯編語言源程序。檢查語法的正確性,如果正確,則將源程序翻譯成等價的二進制或浮動二進制的機器語言程序,並根據用戶的需要輸出源程序和目標程序的對照清單;如果語法有錯,則輸出錯誤信息,指明錯誤的部位、類型和編號。最後,對已匯編出的目標程序進行善後處理。

2、解釋程序

由總控程序完成初始化工作。依次從源程序中取出一條語句進行語法檢查,如有錯,輸出錯誤信息;如果通過了語法檢查,則根據語句翻澤成相應的指令並執行它。檢查源程序是否已經全部解釋執行完畢,如果未完成則繼續解釋並執行下一條語句,直到全部語句都處理完畢。

3、編譯程序

先進行詞法分析與語法分析,然後生成中間代碼,接著對程序進行多種等價變換來代碼優化,最後生成目標代碼。

⑩ 匯編與編譯

匯編就是:mov ax,0
mov bx,0
mov cx,1
push ax
等等這些你寫的指令!
由於計算機只認識二進制數 也就是01代碼所以你寫的這些東西他並不懂
這就需要專門的軟體來翻譯 也就是編譯
上面的代碼經過編譯過後就變成了一大堆的01代碼
通過連接才能生成計算機能執行的程序

閱讀全文

與編譯程序需要匯編程序的支持嗎相關的資料

熱點內容
桌面雲伺服器組建配置 瀏覽:923
濟寧織夢源碼怎麼跳轉到qq 瀏覽:290
西安java培訓 瀏覽:298
蘋果用戶app如何退款 瀏覽:889
解壓方式就是喝酒 瀏覽:396
麥塊怎麼添加到游戲伺服器 瀏覽:962
噴油螺桿製冷壓縮機 瀏覽:581
python員工信息登記表 瀏覽:377
高中美術pdf 瀏覽:161
java實現排列 瀏覽:513
javavector的用法 瀏覽:982
osi實現加密的三層 瀏覽:233
大眾寶來原廠中控如何安裝app 瀏覽:916
linux內核根文件系統 瀏覽:243
3d的命令面板不見了 瀏覽:526
武漢理工大學伺服器ip地址 瀏覽:149
亞馬遜雲伺服器登錄 瀏覽:525
安卓手機如何進行文件處理 瀏覽:71
mysql執行系統命令 瀏覽:930
php支持curlhttps 瀏覽:143