古詩詞大全網 - 成語故事 - 求問大神 既然硬盤上儲存程序代碼已經是二進制的,為什麽不能直接執行,還需要再編譯壹下呢?

求問大神 既然硬盤上儲存程序代碼已經是二進制的,為什麽不能直接執行,還需要再編譯壹下呢?

我的理解是:計算機能夠執行的是機器指令。程序本身雖然是以二進制文件的形式存儲在磁盤中,但是這裏存儲的只是程序中字面量轉換成二進制的形式存儲。所以需要通過程序對應的編譯器將其編譯成對應的機器指令文件。而執行就是執行機器指令文件了。

#就拿Java語言來說:

源文件是以**.java的文件形式存儲在磁盤中的。但是這樣的文件相當於只是將其中的文本轉換成了二進制。計算機根本不知道該如何執行。

通過Java的編譯器將其轉換成**.class文件後,class文件雖然也是二進制存儲,但是有自己的結構:魔數,副版本號,主版本號,常量池計數器,常量池,訪問標誌位,類索引,父類索引等等。但是這個東西計算機不能直接執行的,需要通過Java虛擬機去執行。而Java虛擬機相當於是模擬計算機,也有個程序計數器啥的。我個人認為應該是將.class文件中的字節碼通過jvm中的執行引擎轉換成對應的虛擬機指令。然後才能執行。而在真正執行的時候虛擬機中對應的虛擬機指令也是要轉換成對應的機器指令才能執行