`
不吃鱼的猫
  • 浏览: 25290 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

请教一个Class文件操作码的意思

阅读更多
最近在看JVM(深入java虚拟机)
一个简单的java程序
int i = 0; 
for (;;) { 
i += 1; 
i *= 2; 
}
 
对应的byteCode以及助记操作码如下
// Bytecode stream: 03 3b 84 00 01 1a 05 68 3b a7 ff f9
// Disassembly:
mnemonic bytecode offset
iconst_0   // 03        0
istore_0   // 3b        1
iinc 0, 1    // 84        2
                // 00        3
                // 01        4
iload_0    // 1a         5
iconst_2   // 05        6
imul          // 68        7
istore_0   // 3b        8
goto -7    // a7        9
               // ff        10
               // f9       11

从sun的jvm spec上得知 ff 是保留操作码,不过这个f9没有查到是什么意思
望老手赐教,谢过了先!

 

分享到:
评论
2 楼 不吃鱼的猫 2008-01-26  
非常感谢,还是自己看得不认真。
1 楼 jsyx 2008-01-25  
http://java.sun.com/docs/books/jvms/second_edition/html/Instructions2.doc5.html

Format
goto
branchbyte1
branchbyte2


a7是goto
ff是branchbyte1
f9是branchbyte2

The unsigned bytes branchbyte1 and branchbyte2 are used to construct a signed 16-bit branchoffset, where branchoffset is (branchbyte1 <<8) | branchbyte2. Execution proceeds at that offset from the address of the opcode of this goto instruction. The target address must be that of an opcode of an instruction within the method that contains this goto instruction.

所以(ff<<8)|f9=f9 转换为有符号的十进制数是-7
也就是goto -7了

大概好像是这样

相关推荐

    class文件编译器.zip

    `.class`文件中的字节码由一系列的16位数字组成,每个数字代表一个特定的指令。例如,`aload_0`用于将局部变量表的第一个引用加载到操作数栈,`invokevirtual`用于调用实例方法等。 6. **反编译与调试**: 对于`....

    java字节码文件查看工具,查看class文件

    每个类在编译后都会生成一个或多个.class文件。理解class文件的结构和内容,对于进行代码分析、编写反编译器或者进行安全审计都有重要意义。 “反编译”是将字节码转换回人类可读的源代码的过程。虽然反编译结果...

    class文件结构浅析

    3. **常量池**:常量池是Class文件中一个非常重要的部分,用于存放各种字面量和符号引用,如类和接口的全限定名、字段的名称和描述符、方法的名称和描述符等。常量池采用数组形式存储,并且每个元素的类型是通过首...

    java class文件反编译

    功能特点: ======== ...3、打开一个*.jar文件,XJad将该Jar文件中的所有*.class文件解压缩到临时目录并进行反编译, 并将源文件带包路径信息保存至当前文件夹下名称为“~” + *.jar 的文件夹中;

    class文件反编译工具

    在Java编程语言中,`.class`文件是Java字节码的...总的来说,`jd-gui`这样的class文件反编译工具为Java开发者提供了一个查看和理解已编译代码的窗口,提高了开发效率和学习能力,但在使用时需谨慎对待版权和隐私问题。

    java反编译工具(.class文件反编译成.java文件)

    标签再次强调了这是一个用于将.class文件反编译为.java文件的工具,这表明其主要功能和适用场景。 在压缩包子文件的文件名称列表中,我们看到了"jd-gui-0-2"。这很可能是反编译工具的名字,例如JAD GUI的一个版本号...

    Java反编译工具把.class文件转换为.java文件

    例如,若要反编译一个名为`example1.class`的文件,则可以通过命令`jad example1.class`来实现。 - 默认情况下,反编译后的源代码会被保存为同名的`.jad`文件。如果该文件已经存在,Jad会在覆盖之前询问用户是否...

    修改class字节码需要的工具.zip

    1. **Luyten 0.5.4**: 这是一个跨平台的Java字节码查看器和编辑器,可以帮助开发者查看并修改`.class`文件。Luyten提供了图形化的界面,使得字节码的分析和修改变得更加直观。你可以通过加载`.class`文件,查看其...

    快速导出class文件插件 集合svn

    标题中的“快速导出class文件插件 集合svn”指的是一个专门针对开发者设计的工具,它结合了快速导出Java编译后的class文件功能和版本控制系统Subversion(SVN)的集成。这个插件旨在提高开发者的效率,允许他们便捷...

    Class文件转JAVA

    轻松方便的把class文件转化为java文件

    JavaDecompiler打开class文件

    2. **JD-GUI**:由JetBrains开发,它提供了一个图形界面,可以直接打开.class文件并显示对应的源代码。它适合快速查看代码,但不支持编辑或保存反编译的结果。 3. **Procyon**:这是另一个开源项目,它不仅是一个反...

    .class文件反编译工具。 .class文件转java文件

    2. **加载`.class`文件**:启动后,JD-GUI会显示一个空白的工作窗口。你可以通过"File"菜单或者直接拖拽`.class`文件到工作窗口,将待反编译的`.class`文件导入到JD-GUI中。 3. **查看源代码**:一旦`.class`文件...

    Beyond BCompare4 解压可用 可解析class文件

    使用它可以很方便地比较出两个文件或文件夹的差异,相差的每一个字节用颜色加以标识,让您查看方便,支持众多种格式的对比。 只需使用简单操作方式方可开启快捷省事的文件对比体验,找出您所需差异、合并变化,然后...

    class文件解析案例

    书中可能会提供一个简单的类或方法作为案例,展示如何从class文件中提取上述信息。例如,一个简单的`HelloWorld`类,通过反编译工具(如javap)查看其字节码,可以观察到`main`方法的执行流程。 4. **样例数据分析...

    class文件查看器.rar

    今天我们将探讨一款名为"class文件查看器"的工具,它是一个跨平台的实用程序,专为查看和分析Java class文件而设计。通过这个工具,开发者能够直观地查看class文件中的指令以及16进制字节码表示,极大地增强了代码...

    ClassFinal-java class文件安全加密工具

    Java ClassFinal是一款针对Java类文件的安全加密工具,主要用于保护开发者编写的Java代码不被轻易反编译和篡改,从而增强软件的安全性。在Java应用开发中,源代码的保护至关重要,因为Java的字节码(class文件)是可...

    查看CLass文件的一个小工具

    标题中的“查看Class文件的一个小工具”指的是一个专门用于查看Java字节码文件(.class文件)的应用程序。这类工具通常被Java开发者用来理解和调试已编译的Java类。.class文件是Java源代码经过Java编译器编译后的...

    java Class文件解密大师

    众所周知,java编译后的class文件是一种中间字节码文件, 很容易被反编译工具反编译,而传统的java源代码保护方法基本都是采用混淆的方式, 但这样会带来很多麻烦,而且也不能真正保护class文件, 很多工具是对class...

    ClassFinal是一款java class文件安全加密工具

    加密过程完成后,会生成一个加密后的`.jar`或`.war`包,可以替换原有的包进行部署。 尽管ClassFinal提供了强大的代码保护,但值得注意的是,没有任何加密是绝对安全的。高级攻击者可能会尝试逆向工程来破解加密机制...

    删除.class文件

    可以批量删除.class文件,点击右键操作就可以了,简单

Global site tag (gtag.js) - Google Analytics