那個(gè)不是匯編。。。是反編譯工具無法識(shí)別的字節(jié)碼(bytecodes,java中間代碼),因?yàn)闊o法識(shí)別,自然只能直接把字節(jié)碼打出來給你看了。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、蓬江網(wǎng)站維護(hù)、網(wǎng)站推廣。
你多試幾種反編譯工具,并不是所有的都會(huì)出的,也不是所有的都在同一個(gè)地方出。這個(gè)取決于反編譯工具的作者對(duì)字節(jié)碼的理解。
您好, 提問者:
可以考慮使用JD-GUI工具進(jìn)行反編譯
但是匯編語言肯定還要自己寫的,直接反編譯不行的。
JDK(Java Development Kit)是Sun Microsystems針對(duì)Java開發(fā)員的產(chǎn)品。自從Java推出以來,JDK已經(jīng)成為使用最廣泛的Java SDK。JDK 是整個(gè)Java的核心,包括了Java運(yùn)行環(huán)境,Java工具和Java基礎(chǔ)的類庫。
因?yàn)樽畹讓拥挠布荒芘c匯編語言打交道,所以任何語言的運(yùn)行都市直接或間接運(yùn)行匯編語言的。
java不會(huì)被編譯成匯編語言,只是被編譯成能被java運(yùn)行環(huán)境識(shí)別的字節(jié)碼,雖然不是編譯成直接匯編語言,但是也通過java運(yùn)行環(huán)境和匯編語言打交道
理論上說計(jì)算機(jī)運(yùn)行的程序都可以被反匯編的。但java這類程序就不一樣了~~~java程序運(yùn)行在java虛擬機(jī)(jvm)里由java虛擬機(jī)和操作系統(tǒng)進(jìn)行交互操作。java源文件在編譯成*.class時(shí),java源代碼被編譯成類似計(jì)算機(jī)匯編代碼的java匯編代碼(也就是 Java字節(jié)碼),這時(shí)java虛擬機(jī)就像cpu一樣可以“運(yùn)行java匯編代碼”所以java的類并不是計(jì)算機(jī)是機(jī)器指令而是由jvm解譯成機(jī)器指令運(yùn)行的。
流程:
Java詞法分析
最開始的時(shí)候,高級(jí)語言編寫的程序?qū)幾g器來說只是一連串的單個(gè)字符組成的字符串。為了讓編譯器識(shí)別這一連串的字符串,需要逐個(gè)字符的讀取源程序,然后將其切分成有意義的單詞,這些被切分后的單詞在編譯器眼里是以
標(biāo)識(shí),語義值對(duì)的形式存在。
為了從源程序字符串中依次找出單詞,編譯器需要具有掃描功能,通常這種掃描器可以用一組有限狀態(tài)機(jī)來實(shí)現(xiàn)。為了說明有限狀態(tài)機(jī)是怎么一回事,下面給出一個(gè)實(shí)例。
下圖為一個(gè)識(shí)別數(shù)字的有限狀態(tài)機(jī),數(shù)字由整數(shù)部分和可選的小數(shù)部分組成。因此,根據(jù)這個(gè)有限狀態(tài)機(jī),250和3.14159都能被識(shí)別成一個(gè)有效的數(shù)字。
Java語法分析
完成了“詞法分析”后,接下來就是激動(dòng)人心的“語法分析”階段。通過語法分析得到語法樹。
Java翻譯語法樹
首先,尋找最小表達(dá)式,接下來,將最小表達(dá)式與其周邊的表達(dá)式合并。最后,將所有的表達(dá)式有序的進(jìn)行合并,得到最終的匯編語言描述。
至此,我們便將高級(jí)語言翻譯成了匯編語言。