欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

是不是所有的高級(jí)編程語(yǔ)言都能編譯成匯編語(yǔ)言

是不是所有的高級(jí)編程語(yǔ)言都能編譯成匯編語(yǔ)言?

程序源碼被翻譯成機(jī)器碼之后才能被電腦執(zhí)行。通過(guò)匯編和反匯編,匯編語(yǔ)言和機(jī)器碼可以相互轉(zhuǎn)換。我的回答中就只說(shuō)機(jī)器碼了。按照?qǐng)?zhí)行方式大致可將程序語(yǔ)言分成三類:

編譯方式 將源代碼翻譯成機(jī)器碼后執(zhí)行的方式。這種方式執(zhí)行速度快,但對(duì)操作系統(tǒng)有依存性。 混合方式 將源代碼翻譯成中間碼(如,字節(jié)碼)后,在有各OS上的虛擬機(jī)翻譯成其他語(yǔ)言或命令執(zhí)行。或者,使用實(shí)時(shí)編譯(JIT)轉(zhuǎn)換成機(jī)器碼后執(zhí)行。 解釋方式 將源代碼逐行翻譯成其他語(yǔ)言或命令后,加載該語(yǔ)言或命令的機(jī)器碼并執(zhí)行相應(yīng)的處理。該方式執(zhí)行速度慢,但編碼靈活,不用編譯直接執(zhí)行比較方便。

三種方式中以混合方式最為復(fù)雜難懂,下面著重說(shuō)說(shuō)混合方式

混合方式的例子

出于跨平臺(tái)的需要,Java采用了混合方式,Java源代碼先通過(guò)編譯,被翻譯成字節(jié)碼。字節(jié)碼不含有跟OS有關(guān)的信息。因此,編譯后的Java包可以在不同的系統(tǒng)上執(zhí)行。Java為不同的OS準(zhǔn)備了不同的JVM(Java虛擬機(jī))。JVM上有解釋器,可將字節(jié)碼逐行翻譯成由JVM提供的各種函數(shù)庫(kù),并將以機(jī)器碼形式存在的函數(shù)庫(kù)加載到JVM的內(nèi)存中并執(zhí)行。由于解釋方式的速度較慢,Java為循環(huán)或使用頻度高的代碼提供了JIT(Just In Time)的編譯器。JIT可以把大段的代碼一次性翻譯成機(jī)器碼執(zhí)行,速度上要比純粹的解釋器高很多。

電腦執(zhí)行的所有程序都必須是由機(jī)器碼編成的。如果僅僅看程序語(yǔ)言的編譯結(jié)果,混合方式和解釋方式都可以看成沒(méi)有被編譯成機(jī)器碼也就是匯編語(yǔ)言。

java是否即時(shí)編譯,是不是所有的高級(jí)編程語(yǔ)言都能編譯成匯編語(yǔ)言