日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oolong and Gnoloo

發(fā)布時間:2024/4/15 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oolong and Gnoloo 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Oolong:一種匯編語言, .j文件可以編譯成.class文件

Oo long烏狼

Oolong is closer to the JVM class file format than Java

?

(1)directive(指示)

(2)instruction(Oolong指令)

?

?

?

What is Oolong and Gnoloo?

Oolong 是一種為 Java 虛 擬機(jī)定制的匯編語言, 其作者為 Joshua Engel Gnoloo 則是將 .class 文件轉(zhuǎn)成 Onlong 語言的一種反匯編工具。引用 Joshua Engel 書中的一段描述“ the Oolong language is nearly equivalent to the class file format but easier to read and write.

?

一般用 Oolong 寫成的程序代碼都保存在擴(kuò)展名為 .j 的文件中。如

HelloOolong.j? ------- 經(jīng)過 Oolong 轉(zhuǎn)換 ------ ? HelloOolong.class

HelloOolong.class? ------- 經(jīng)過 Gnoloo 轉(zhuǎn)換 ------ HelloOolong.j

?

我是在瀏覽《 Programming for the Java? Virtual Machine 》這本書的時候遇到這些的,好奇驅(qū)使著我深入的了解一下 Oolong 這種匯編語言。在這里我不想說 Oolong 的指令與語法,我想 Oolong Gnoloo 可以作為一種工具,來幫助 Java 學(xué) 習(xí)者了解 Java 程序的運行或者說看看 JVM 是 如何運行一個一個 .class 文件的。如果真的對之很是感興趣的話或者說是一個 super fans ,你可以學(xué)習(xí)一下 Oolong ,并用 Oolong 寫出一些可以運行在 JVM 上 的程序。

?

下載 Oolong Gnoloo

Oolong Gnoloo 是由 Joshua Engel 編寫的匯 編語言及工具,我們可以通過下面的鏈接下載到相關(guān)包:

http://www.scifac.ru.ac.za/resourcekit/download/Engel.zip

?

解壓后進(jìn)入 Engel 目 錄下,有三個重要的 class 文件 Oolong.class Gnoloo.class DumpClass.class

?

編譯和反編譯 Onlong 程序

Now ! 我們使用 Oolong 語法寫一個“ Hello Oolong! ”程序(該程序改變自 Programming for the Java? Virtual Machine 》一書的 2.1 小節(jié)的那個 Hello World !”程序),代碼如下:

?

//HelloOolong.j 代碼

.class public HelloOolong

.super java/lang/Object

?

.method public static main([Ljava/lang/String;)V

.limit stack 2

.limit locals 1

?? getstatic java/lang/System/out Ljava/io/PrintStream;

?? ldc "Hello Oolong!"

?? invokevirtual java/io/PrintStream/println

????? (Ljava/lang/String;)V

?? return

.end method

.end class

?

我們不關(guān)心具體的語法和指令。

打開控制臺,進(jìn)入該目錄運行:

java Oolong HelloOolong.j 在當(dāng)前目錄下會產(chǎn)生 HelloOolong.class 文件

運行該 class 文 件我們會看到控制臺輸出:

Hello Oolong!

?

下面我們利用 Gnoloo 反編譯 class 文件:(前提刪除 HelloOolong.j 文件)

java Gnoloo HelloOolong.class? 在當(dāng)前目錄下會產(chǎn)生 HelloOolong.j 文件

?

Oolong Gnoloo 為我們提供了一套查看 JVM 匯 編代碼的解決方案,我們可以將由 javac 生成的 class 文件反匯編為 Oolong 匯編代碼。

如: HelloOolong.java ----- javac----------> HelloOolong.class --------Gnoloo-----> HelloOolong.j

之后我們便可以查看匯編代碼,然后了解我們的代碼時如何在 JVM 上運行的了。

?

DumpClass 工具

在下載的包中還有一個很好用的工具,那就是 DumpClass ,它可以輸出 class 文件的信息。 使用 方法: java DumpClass HelloOolong.class class 文件的信息就會被輸出到屏幕上。

?

查看 Java 字節(jié)碼 ( 匯編碼 ) 的另一種方法

javap –c –verbose HelloOolong

javap JDK 自帶的工具。

總結(jié)

以上是生活随笔為你收集整理的Oolong and Gnoloo的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。