主页 > 知识库 > 网络编程 > JSP/Java >

Java字节码文件剖析(2)

来源:中国IT实验室 作者:佚名 发表于:2013-07-10 13:07  点击:
表示类名是Test,长度是4,占用4个字节 其他类似,看看方法Method里的即构造函数 [java] Name: cp_info_#17 Desciptor:cp_info_#11()V Access flags:0x0001[public] Name: cp_info_#17 Desciptor:cp_info_#11()V Acc

表示类名是Test,长度是4,占用4个字节  其他类似,看看方法Method里的即构造函数
  [java]
  Name: cp_info_#17<>
  Desciptor:cp_info_#11<()V>
  Access flags:0x0001[public]
  Name: cp_info_#17<>
  Desciptor:cp_info_#11<()V>
  Access flags:0x0001[public]
  Name的信息在常量池cp_info_#17中
  [java]
  Length of byte array:6
  Length of string:6
  String:
  Length of byte array:6
  Length of string:6
  String:
  从中可以看出其定义了字节码中类的构造函数的方法名,Descriptor描述的是函数的返回类型
  [java]
  Length of byte array:3
  Length of string:3
  String:()V
  Length of byte array:3
  Length of string:3
  String:()V
  描述了函数的返回类型即为void类型,这个Access flags就不用多说了吧,表示的是函数访问权限,缺省构造器中的“指令是面向过程的汇编语言。aload_0说的是把对象的引用保存到JVM的0号局部 变量,并且把它压入栈。invokespecial #1这条命令是调用java.lang.Object中的构造(这些信息保存在1号常量项里,好处是减少字节码的长度),return是执行完毕退出的意 思。Bar函数的分析类似,其字节码文件对应的指令如下
  [java]
  getstatic #13
  iconst_1
  iadd
  dup
  putstatic #13
  sipush 1000
  if_icmplt 29(+17)
  iconst_0
  putstatic #13
  new #25
  dup
  ldc #27
  invokespecial #29>
  athrow
  getstatic #13
  ireturn
  getstatic #13
  iconst_1
  iadd
  dup
  putstatic #13
  sipush 1000
  if_icmplt 29(+17)
  iconst_0
  putstatic #13
  new #25
  dup
  ldc #27
  invokespecial #29>
  athrow
  getstatic #13
  ireturn

有帮助
(0)
0%
没帮助
(0)
0%