当前位置: 首页 > news >正文

有关网站开发的文献综述海南省网站

有关网站开发的文献综述,海南省网站,建站网站案例,工程建设有限公司经营范围而这些字节其实对应的信息是它#xff1a;所以问题就来了#xff0c;aload_0不是助记符信息么#xff0c;怎么就能够跟字节码文件中的字节对应上呢#xff1f;所谓助记符其实也就是帮忙我们去记忆的符合#xff0c;在底层其实也是对应的一个个十六进制的数字的#xff0c…而这些字节其实对应的信息是它所以问题就来了aload_0不是助记符信息么怎么就能够跟字节码文件中的字节对应上呢所谓助记符其实也就是帮忙我们去记忆的符合在底层其实也是对应的一个个十六进制的数字的其它aload_0对应的就是2A这个十六进制数字凭什么这么说因为有jclasslib这么好的工具能帮我们对应上将鼠标放在助记符上发现是一个可以点的链接如下点一下“aload_0”发现居然链到了oracle的官网上的说明上去了如下所以第一个字节已经分析完了确实是跟助记符对应上了接着来分析第二个字节而在jsclasslib中对应的第二个助记符是“invokespecial”点击链到官网看一下而它的作用可以理解成就是调用父类的方法很明显对于咱们自定义的子类肯定会去调用父类的构造方法而这个助记符是有参数的其实也就是往后的两个字节就是该助记符所对应的参数如下对应常量池为也就是构造方法嘛如jsclasslib所示接下来继续往下走一个字节又对应aload_0如下接着再往后看一个字节其实它就是对应下一个助记符如下为啥如此任性呢因为点击查看一下说明就晓了啦为啥要push一个1呢实际就是给咱们定义的成员变量a赋值如下可见该变量的赋值是在默认构造函数中进行的而不是直接进行赋值的这也就是分析字节码文件的好处可以更加真实的发现底层细节。接下来再数一个字节当然它又对应另一个助记符喽如下点击看一下官网说明接下来该助记符是携带有参数的所以再往后数两个字节对应常量池也就是给MyTest1的成员变量a赋值为1。接下来再数一个字节对应于如下助记符点击确认一下至此整个构造方法就已经执行完了。发现通过分析字节码也能获得不少新知识嘛仅通过这个构造函数的执行流程就能知道了对于我们定义的成员变量原来是在构造方法中进行赋值而非直接赋值的还是挺有价值的。好方法的code分析完之后则就得往下进行分析了先来查看一下结构类型也就是再数两个字节看一下说明该方法木有异常信息所以接下来的异常表就不会显示在字节文件当中了其中关于异常还需解释一下exception_table这里存放的是处理异常的信息。每个exception_table表项由start_pc、end_pc、handler_pc、catch_type组成。start_pc和end_pc表示在code数组中的从start_pc到end_pc处(包含start_pc不包含end_pc)的指令抛出的异常会由这个表项来处理。handler_pc表示处理异常的代码的开始处。catch_type表示会处理的异常类型它指向常量池里的一个异常类。当catch_type为0时表示处理所有的异常。接下来就到属性相关的东东了如下所以往下数2个字节说明该方法有两个属性往下数两个字节则是第一个属性的名字索引如下也就是对应第10的常量池为该属性用来表示code数组中的字节码和Java代码行数之间的关系。这个属性可以用来在调试的时候定位代码执行的行数。而该属性的结构为其中attribute_name_index就是常量索引10接下来数4个字节则是属性的长度attribute_length如下也就是属性的长度为10也就是接下来10个字节则为LineNumberTable的属性信息如下看一下jclasslib下面具体来分析一下这10个字节根据结构体来看先2个字节表示属性表有几对映射如下说明有两对映射然后再回到结构体中每对映射的内容为每对占4个字节先看第一对映射也就是start_pc0;line_number3对应于jclasslib由于咱们源代码木有构造方法所以字节码对应源代码就在第3行如下接下来看第二对映射也就是start_pc4;line_number4对应于jclasslib因为成员变量的赋值是在构造方法中完成的所以对应第4行代码好方法的第一个属性已经完了接下来以同样的顺序来查看方法的第二个属性信息了走2个字节来看属性名称索引如下对应第11个常量池索引如下它的结构跟LineNumberTable差不多的往后数四个字节则是局部变量表所占的长度长度为12如jclasslib所示然后往后数12个字节则是局部变量的具体信息首先两个字节则为局部变量的个数如下呃~~构造方法哪来的局部变量呢好奇怪先不管先来把其它字节分析完再往后四个字节表示start_pc和length如下如jclasslib所示接下来则为局部变量的索引为0也就是第一个局部变量再往后两个字节则是局部变量对应常量池的索引如下再接下来两个字节则是对该局部变量的一个描述常量索引如下所以对应jclasslib中可以看到那思考一下为啥在构造方法中会有一个this的局部变量呢我们知道在所有方法中我们都能使用this关键字来访问当前的对象而从字节层面来讲其实this是作为方法的第一个参数传进来的也就是说对于Java的一个实例方法而言最少会有一个this的局部变量存在还剩最后两个字节则为stackmaptable信息JDK1.6加入的主要做校验检查的因为0嘛所以后面肯定木有相关的信息了这里就直接忽略如下
http://www.pierceye.com/news/753167/

相关文章:

  • 重庆网站建设招标网站建设网站建设教程
  • 权威的广州h5网站seo网站分析工具
  • 美食网站要怎么做游戏优化大师下载安装
  • vip解析网站怎么做的做网站需要注册商标多少类
  • 一般做网站宽高多少网页调用 wordpress 图片编辑器
  • 简述网站建设的基本过程word模板免费下载网站
  • 页面好看的蛋糕网站wordpress路由插件
  • 网站建站四种方案深圳网站建设维护
  • 企业网站优化的方案游戏网页设计图片
  • 烟台html5网站建设wordpress主题 亚马逊
  • 个人网站做电商wordpress.php扩张
  • c2c电子商务网站定制开发校园网建设网站特色
  • 企业网站制作公司有哪些做手机网站公司
  • 怎么做flash网站设计惠州做网站公司哪家好
  • 网站开发文档下载餐饮vi设计一套多少钱
  • 平湖网站建设公司克正规的网店平台有哪些
  • 网站建设销售求职网络营销推广引流方法
  • 深圳网站建设官网网站背景素材
  • 建设部网站安全考核证书查询平面设计的素材网站
  • 郑州制作个人网站网站个人备案做企业网站
  • 昆明有网站的公司专注网站平台推广公司
  • 网站建设酷隆莲湖免费做网站
  • 网站建设内容保障制度什么网站权威评价搜索引擎优劣
  • 中国建设局网站东莞市路桥收费所
  • 那个网站上有做婚礼布场样图的公司网站排名
  • 凡客资源东莞市seo网络推广服务机构
  • 网站的安全维护wordpress 文章 定时
  • 网上做题扣分在哪个网站上做网站建设微信商城运营
  • 外贸英文商城网站建设微信公众帐号开发
  • 上海做网站运维的公司用手机制作自己的网站