執行和編譯不在一台機子叫做什麼
Java中引入了虛擬機的概念,即在機器和編譯程序之間加入了一層抽象的虛擬的機器。這台虛擬的機器在任何平台上都提供給編譯程序一個的共同的介面。編譯程序只需要面向虛擬機,生成虛擬機能夠理解的代碼,然後由解釋器來將虛擬機代碼轉換為特定系統的機器碼執行。在Java中,這種供虛擬機理解的代碼叫做位元組碼(ByteCode),它不面向任何特定的處理器,只面向虛擬機。每一種平台的解釋器是不同的,但是實現的虛擬機是相同的。Java源程序經過編譯器編譯後變成位元組碼,位元組碼由虛擬機解釋執行,虛擬機將每一條要執行的位元組碼送給解釋器,解釋器將其翻譯成特定機器上的機器碼,然後在特定的機器上運行。
⑵ 同一個C語言程序,若在兩台不同指令系統的機器上運行,編譯後的程序是否一樣能否用同一個編譯器編譯
如果生成的程序不是在本機上運行的話,這種編譯器叫做 cross compiler
不是 cross compiler 的話,生成的程序就只能在本機以及與本機具有相同指令集的機器上運行了
⑶ 請問java程序在編譯和運行時有什麼區別,系統分別都會做什麼
Java程序的編譯
使用命令: javac *.java
編譯時,會將寫的.java文件(高級語言),生成相應的位元組碼文件.class文件(二進制代碼)
Java程序的執行
使用命令:java *
流程: 載入到 -- 連接 ---- 初始化 ...
運行時,首先會由將相應的.class文件,載入到內存中,並驗證.class文件的有效性,將相應類的Class載入到內存中,並對類中的靜態變數進行初始化操作,然後就由 主 類開始執行
具體的可以看一下 JVM 類載入過程,以及jVM的內存分配機制
⑷ 編譯執行和解釋執行的區別
一、主體不同
1、編譯執行:由編譯程序將目標代碼一次性編譯成目標程序,再由機器運行目標程序。
2、解釋執行:將源語言直接作為源程序輸入,解釋執行解釋一句後就提交計算機執行一句,並不形成目標程序。
二、優勢不同
1、編譯執行:相比解釋執行編譯執行效率高,佔用資源小,適合復雜程序
2、解釋執行:開發速度快,出現嚴重BUG的幾率小。
三、缺點不同
1、編譯執行:兼容性差,例如在windows平台上寫的編譯程序一般不可以在unix平台上運行。
2、解釋執行:解析需要時間,不生成目標程序而是一句一句的執行的方式會造成計算機資源的浪費,即執行效率低。
⑸ 編譯執行和解釋執行
建議你去找本有關編譯原理的書籍看下
它們的最主要的區別就是是否有目標代碼的生成e.g.C語言就是編譯執行的需要將源代碼翻譯成類似於匯編或機器語言的目標代碼後才能運行。而解釋程序則沒有目標代碼的生成比如VB就是典型的解釋執行的。
⑹ 在計算機中,什麼叫做運行,什麼叫做執行,什麼叫做編譯
知足
⑺ 在計算機內部,不需要編譯計算機就能夠直接執行的語言是什麼
機器語言
⑻ 每一台計算機都有屬於自己的編譯器與程序嗎
不同架構的CPU,所使用的匯編語言不同,編譯器也就自然不同。
相同架構的CPU,匯編語法和支持的基礎指令集都基本相通,在高級指令集的支持上可能不同。
同一型號的CPU當然匯編語法和支持的指令集都完全一樣。
⑼ 在計算機內部,不需要編譯計算機就能直接執行的語言是什麼
你這個問題提得不是太清楚,如果是指那些無需編譯就可以執行的語言,這些語言叫做「解釋型語言」,它們通過環境中安裝的解釋器、運行時等執行。
如果問無需任何解釋器、運行時等,但也不需要編譯就可以執行的語言,那隻有一種就是機器碼了。實際上編譯後生成的東西就是機器碼。估計你問的不是這個呵呵。