⑴ 編譯時轉化成二進制代碼,需要藉助一定的語法嗎這語法是什麼知識領域里的
機器語言01代碼,有很多種的。
有很多種的 CPU,各有各的機器語言。
機器語言,都是 CPU 廠家規定的。
把 C 語言轉換成機器語言,也有很多種編譯軟體。
這些編譯軟體,有的是由 CPU 廠家編寫的,也有第三方軟體公司編寫的。
進行編譯的時候,都要依據 CPU 廠家規定的機器語言。
編譯後,只能在指定的 CPU 上運行。
想學機器語言,可以從《計算機系統結構》、《組成原理》入手。
網上有電子書。
⑵ c語言是如何編譯成二進制
計算機專業有門課程叫做《編譯原理》,詳細講述了怎麼把高級語言翻譯成匯編語言活著機器能看懂的二進制代碼。
簡單的說,C語言是通過編譯器翻譯成二進制代碼的(就像英譯漢的軟體把英文翻譯成漢語一樣。把高級語言翻譯成機器語言過程很復雜,學了編譯原理就懂了)。還有編譯器可以用各種語言編寫,C語言可以被用C語言寫的編譯器來編譯。
⑶ 我們所寫的每條c語句,經過編譯最終都轉化成二進制的機器指令為什麼對
C語言中的注釋是不會轉化為二進制的。
第一句話,注意「每條c語句」,c語句是不包含注釋,所以正確。
第二句話,「每條可執行語句和非執行語句」,顯然注釋語句也被包含在其中,所以錯誤。
這種題就是玩了個文字游戲
⑷ "C源程序經編譯形成的二進制代碼可以直接運行"這種說法是錯的.為什麼需要詳解...謝謝!!
還需要鏈接?-_-|||
⑸ 我們所寫的每條C語句經過編譯最終將轉換成二進制的機器指令 這句話為什麼對
不是每條語句都會被編譯為指令的
最簡單的例子,空語句就不會被編譯
⑹ 高級語言 直接編譯成 二進制 還是要經過什麼東東
使用計算機高級語言編寫的程序通過編譯器翻譯成二進制碼文件。匯編語言也是如此。
⑺ 程序控制文件要編譯嗎,c語言等不是編譯成二進制,控制文件看起來沒
C語言是一門計算機語言,有自己一定的語法。但是,C語言並不能直接被對象所理解,需要將C語言轉變成可執行代碼,即二進制代碼。在C語言轉變成二進制可執行代碼時,是以工程為單位的。而一個工程中往往會包含多個C文件。因此,需要將每個C文件都編譯成二進制代碼。此時,每個C文件所對應的二進制代碼是獨立的。由於工程是一個系統,所以需要將所有的C文件二進制代碼鏈接到一起,形成一個工程的可執行文件。
綜上,編譯和鏈接就是指的將C文件轉變成二進制代碼,並將各個獨立的C文件二進制代碼鏈接到一起,形成一個可執行文件的過程。
⑻ 求問大神 既然硬碟上儲存程序代碼已經是二進制的,為什麼不能直接執行,還需要再編譯一下呢
我的理解是:計算機能夠執行的是機器指令。程序本身雖然是以二進制文件的形式存儲在磁碟中,但是這里存儲的只是程序中字面量轉換成二進制的形式存儲。所以需要通過程序對應的編譯器將其編譯成對應的機器指令文件。而執行就是執行機器指令文件了。
#就拿java語言來說:
源文件是以**.java的文件形式存儲在磁碟中的。但是這樣的文件相當於只是將其中的文本轉換成了二進制。計算機根本不知道該如何執行。
通過Java的編譯器將其轉換成**.class文件後,class文件雖然也是二進制存儲,但是有自己的結構:魔數,副版本號,主版本號,常量池計數器,常量池,訪問標志位,類索引,父類索引等等。但是這個東西計算機不能直接執行的,需要通過Java虛擬機去執行。而Java虛擬機相當於是模擬計算機,也有個程序計數器啥的。我個人認為應該是將.class文件中的位元組碼通過jvm中的執行引擎轉換成對應的虛擬機指令。然後才能執行。而在真正執行的時候虛擬機中對應的虛擬機指令也是要轉換成對應的機器指令才能執行
⑼ 既然程序代碼已經是二進制的,為什麼不能直接執行,還需要再編譯一下呢
程序代碼本身是ASCII文本形式的,所以要編譯成二進制的exe文件
⑽ 為什麼說,用c語言寫的程序比匯編語言寫的程序執行效率上要低,難道兩者編譯成的二進制代碼有很大不同
匯編可以直接操作硬體,而C語言則對這些底層操作進行了一定程度的封裝,而封裝就意味著執行過程復雜度的增加。所以說,雖然二者最後實現的效果是一樣的,但後者的執行過程要比前者復雜,編譯成的二進制代碼也就有所不同。