{eval=Array;=+count(Array);}
程序源碼被翻譯成機器碼之后才能被電腦執行。通過匯編和反匯編,匯編語言和機器碼可以相互轉換。我的回答中就只說機器碼了。按照執行方式大致可將程序語言分成三類:
三種方式中以混合方式最為復雜難懂,下面著重說說混合方式
出于跨平臺的需要,Java采用了混合方式,Java源代碼先通過編譯,被翻譯成字節碼。字節碼不含有跟OS有關的信息。因此,編譯后的Java包可以在不同的系統上執行。Java為不同的OS準備了不同的JVM(Java虛擬機)。JVM上有解釋器,可將字節碼逐行翻譯成由JVM提供的各種函數庫,并將以機器碼形式存在的函數庫加載到JVM的內存中并執行。由于解釋方式的速度較慢,Java為循環或使用頻度高的代碼提供了JIT(Just In Time)的編譯器。JIT可以把大段的代碼一次性翻譯成機器碼執行,速度上要比純粹的解釋器高很多。
電腦執行的所有程序都必須是由機器碼編成的。如果僅僅看程序語言的編譯結果,混合方式和解釋方式都可以看成沒有被編譯成機器碼也就是匯編語言。
匯編有匯編的編譯器!java也有java的編譯器!
最終都會編譯成機器碼,指令 供CPU調度!
所謂反匯編 無非就是把機器語言轉換為匯編語言代碼!還有一種就是反編譯 把編譯后程序集反編譯成高級語言代碼,已方便閱讀!
每個語言都有自己的優勢和適應場景!單片機編程用匯編和C比較多,運行快,消耗硬件資源低!它可以直接操作內存地址,比較接近硬件資源!
原我的回答對你有所幫助!
編譯性語言最終都會編譯成二進制執行,匯編語言講二進制指定為簡單的人類可識別助記符,所以是可直接反匯編的。
解釋性語言大多依托于虛擬機這樣的環境,或者運行引擎,引擎和虛擬機有自己的指令集,最終反編譯出來的是環境和虛擬機的反匯編助記符
6
回答10
回答10
回答2
回答10
回答3
回答9
回答2
回答3
回答8
回答