java语法树(字节码指令的编译与执行)

2026-03-18 15:00:02 :0

java语法树(字节码指令的编译与执行)

各位老铁们好,相信很多人对java语法树都不是特别的了解,因此呢,今天就来为大家分享下关于java语法树以及字节码指令的编译与执行的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

本文目录

字节码指令的编译与执行

java编程开发是目前市场上使用范围非常广泛的一种编程开发语言。今天我们就一起来了解一下,在java编程中关于字节码的一些指令的编译与执行方法。

java文件编译后的class文件,java跨平台的中间层,JVM通过对字节码的解释执行(执行模式,还有JIT编译执行,下面讲解),屏蔽对操作系统的依赖。一个字节(8位)可以储存256中不同的指令,这样的指令就是字节码,java所有指令有200个左右,这些指令组成了字节码文件(.class)。

一、字节码的主要指令:

.class文件里面的十六进制文件,其中CAFEBABE是标志这个文件为java的编译后的文件,00000034代表版本号,01670700一个字节(8位)就是一个字节指令,由于数值指令太难看懂,我们可以用javap将指令翻译为助记指令。

1、加载或储存指令

在栈帧中,通过指令操作数据在局部变量表与操作栈间传递。

ILOAD、ALOAD:将int、对象引用类型从局部变量表压入操作栈顶;

ISTORE、ASTORE:将int、对象引用类型从操作栈顶储存到局部变量表里;

ICONST、BIPUSH、SIPUSH、LDC:将常亮加载到操作栈顶。

2、运算指令

对操作栈上的值进行运算,并把结果写入操作栈顶,如IADD、IMUL。

3、类型转换指令

I2L、D2F

4、对象创建与访问指令

NEW

除了字节码指令外,沙河电脑培训认为还包括像LINENUMBER储存字节码与源码对应,方便调试定位;LOCALVARIABLE储存当前方法使用到的局部表量表。

二、java源码文件转化为字节码(.class)文件的过程

JAVA源文件----------》词法解析----------》语法解析----------》语义分析---------》生成字节码---------》字节码文件

词法分析:根据空格分割出单词、操作符等,形成token信息流;

语法分析:根据token流和java语法规范生成语法树;

语义分析:检查关键字、类型匹配是否正确;

抽象语法树的结构

抽象语法树的结构不依赖于源语言的文法,也就是语法分析阶段所采用的上下文无关文法。因为在Parser工程中,经常会对文法进行等价的转换(消除左递归、回溯、二义性等),这样会给文法引入一些多余的成分,对后续阶段造成不利影响,甚至会使各阶段变得混乱。因此,很多编译器(包括GJC)经常要独立地构造语法分析树,为前、后端建立一个清晰的接口。
下图是hello.java中的“hello world“程序的AST示例:

利用JAVACC将HQL-SQL

  首先下载JAVACC 编写 jj文件     定义要空开的分隔符    SKIP :  {      | \t   | \n   | \r   | \f   }     定义关键字 from 为HQL的关键字 Teacher是用户输入的类名 应当是一个任意由字母和数字组成的单词 我们可以用正则表达式:;         HQLParser parser = new HQLParser(query);      parser parse();         System out println( SQL: +parser getSQL());      }      catch(Exception e)      {         e printStackTrace();      }    }      public void parse()    {   try   {     expression();   }   catch(Exception e)      {        e printStackTrace();      }    }  }  PARSER_END(HQLParser)    接下来到dos下输入:    javacc debug_parser test jj     debug_parser:用来输出语法树    这时候会生成 个java文件 每个文件的作用以后会详细说明    这时候只需要    javac * java即可编译全部的java文件    然后执行java HQLParser from Teacher     这时候屏幕上就会显示出 select * from Teacher lishixinzhi/Article/program/Java/JSP/201311/19735

用Java怎么解析C/C++代码生成AST抽象语法树结构

其中一个明显的例子是Eclipse CDT里的parser。
它是完全用Java实现的,手写的递归下降parser,能把C或C++源码parse成AST供Eclipse CDT的IDE功能使用。它支持C99语法(包括GCC扩展)、C++语法(我没仔细看现在支持到什么版本了)等。
它并不用于实际的编译(这跟Eclipse JDT里的Eclipse Compiler for Java不同);实际编译还是交给诸如GCC、xlc之类的编译器去完成。
关于Eclipse CDT里的C与C++ parser的介绍,请参考

OK,关于java语法树和字节码指令的编译与执行的内容到此结束了,希望对大家有所帮助。

java语法树(字节码指令的编译与执行)

本文编辑:admin

更多文章:


内存按什么编址(按字节编址什么意思)

内存按什么编址(按字节编址什么意思)

大家好,内存按什么编址相信很多的网友都不是很明白,包括按字节编址什么意思也是一样,不过没有关系,接下来就来为大家分享关于内存按什么编址和按字节编址什么意思的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录按字节编址

2025年10月27日 17:00

recycling翻译(recycling泛读原文及翻译)

recycling翻译(recycling泛读原文及翻译)

各位老铁们好,相信很多人对recycling翻译都不是特别的了解,因此呢,今天就来为大家分享下关于recycling翻译以及recycling泛读原文及翻译的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录recy

2026年3月3日 10:45

illustrator举例说明(illustrator选择工具和直接选择工具有什么不同啊)

illustrator举例说明(illustrator选择工具和直接选择工具有什么不同啊)

各位老铁们好,相信很多人对illustrator举例说明都不是特别的了解,因此呢,今天就来为大家分享下关于illustrator举例说明以及illustrator选择工具和直接选择工具有什么不同啊的问题知识,还望可以帮助大家,解决大家的一些

2026年4月3日 07:30

property域名(在tomcat中配置CAS)

property域名(在tomcat中配置CAS)

“property域名”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看property域名(在tomcat中配置CAS)!本文目录在tomcat中配置CASIP是什么Permission denied to access p

2026年5月4日 19:15

结构体类型名称是什么(什么是结构体类型C语言中结构体类型占几个字节)

结构体类型名称是什么(什么是结构体类型C语言中结构体类型占几个字节)

大家好,结构体类型名称是什么相信很多的网友都不是很明白,包括什么是结构体类型C语言中结构体类型占几个字节也是一样,不过没有关系,接下来就来为大家分享关于结构体类型名称是什么和什么是结构体类型C语言中结构体类型占几个字节的一些知识点,大家可以

2026年1月27日 07:15

uml工具是什么(UML是什么)

uml工具是什么(UML是什么)

其实uml工具是什么的问题并不复杂,但是又很多的朋友都不太了解UML是什么,因此呢,今天小编就来为大家分享uml工具是什么的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录UML是什么iOS开发文档里的uml图是用

2026年1月17日 09:15

air源码自助站(自助建站系统到底好不好用)

air源码自助站(自助建站系统到底好不好用)

大家好,air源码自助站相信很多的网友都不是很明白,包括自助建站系统到底好不好用也是一样,不过没有关系,接下来就来为大家分享关于air源码自助站和自助建站系统到底好不好用的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本

2025年11月5日 04:45

css高度自适应(CSS3如何固定图片宽度使图片高度按图片比例自适应)

css高度自适应(CSS3如何固定图片宽度使图片高度按图片比例自适应)

各位老铁们好,相信很多人对css高度自适应都不是特别的了解,因此呢,今天就来为大家分享下关于css高度自适应以及CSS3如何固定图片宽度使图片高度按图片比例自适应的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录C

2025年9月3日 02:45

mapreduce的实现原理(Hadoop技术内幕的内容介绍)

mapreduce的实现原理(Hadoop技术内幕的内容介绍)

今天给各位分享Hadoop技术内幕的内容介绍的知识,其中也会对Hadoop技术内幕的内容介绍进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录Hadoop技术内幕的内容介绍是否所有的mapreduce程序都需要经

2025年11月16日 03:30

culture shock阅读理解(你好,完形填空I understand culture shock, i’ve been答案你有了吗)

culture shock阅读理解(你好,完形填空I understand culture shock, i’ve been答案你有了吗)

各位老铁们好,相信很多人对culture shock阅读理解都不是特别的了解,因此呢,今天就来为大家分享下关于culture shock阅读理解以及你好,完形填空I understand culture shock, i’ve been答案

2025年10月15日 21:45

private owner(求一篇 关于国外二手车交易现状的英文文章)

private owner(求一篇 关于国外二手车交易现状的英文文章)

今天给各位分享求一篇 关于国外二手车交易现状的英文文章的知识,其中也会对求一篇 关于国外二手车交易现状的英文文章进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录求一篇 关于国外二手车交易现状的英文文章翻译 th

2025年6月10日 08:15

bool类型几个字节(C++定义bool类型的最小存储空间是多大)

bool类型几个字节(C++定义bool类型的最小存储空间是多大)

本篇文章给大家谈谈bool类型几个字节,以及C++定义bool类型的最小存储空间是多大对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录C++

2025年7月5日 02:15

matlab曲线拟合(matlab拟合曲线的方法有几种)

matlab曲线拟合(matlab拟合曲线的方法有几种)

各位老铁们好,相信很多人对matlab曲线拟合都不是特别的了解,因此呢,今天就来为大家分享下关于matlab曲线拟合以及matlab拟合曲线的方法有几种的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录matlab

2025年7月13日 09:00

手机号码的正则表达式(求国际手机号码完整正则表达式,哪位大侠有)

手机号码的正则表达式(求国际手机号码完整正则表达式,哪位大侠有)

这篇文章给大家聊聊关于手机号码的正则表达式,以及求国际手机号码完整正则表达式,哪位大侠有对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录求国际手机号码完整正则表达式,哪位大侠有手机号和身份证号的正则表达式怎么写求JS手机号的正

2026年6月1日 11:30

illustrator怎么记住(illustrator中释放到图层和粘贴时记住图层是什么意思)

illustrator怎么记住(illustrator中释放到图层和粘贴时记住图层是什么意思)

大家好,关于illustrator怎么记住很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于illustrator中释放到图层和粘贴时记住图层是什么意思的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,

2026年1月16日 13:15

网站设计过程(网站设计的基本步骤)

网站设计过程(网站设计的基本步骤)

其实网站设计过程的问题并不复杂,但是又很多的朋友都不太了解网站设计的基本步骤,因此呢,今天小编就来为大家分享网站设计过程的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录网站设计的基本步骤网站设计的基本步骤有哪些企

2025年9月2日 17:15

commit中文翻译(求翻译:I’m committed to working with members of both parties to cut our deficits and debt)

commit中文翻译(求翻译:I’m committed to working with members of both parties to cut our deficits and debt)

今天给各位分享求翻译:I’m committed to working with members of both parties to cut our deficits and debt的知识,其中也会对求翻译:I’m committed

2025年12月21日 06:30

知己棋牌源码(杭州有啥遇知己的蹦迪地方)

知己棋牌源码(杭州有啥遇知己的蹦迪地方)

这篇文章给大家聊聊关于知己棋牌源码,以及杭州有啥遇知己的蹦迪地方对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录杭州有啥遇知己的蹦迪地方在棋牌领域,人类是不是被人工智能全面超越了异性知己最高境界不能说的话爱上有妇之夫又不想破坏

2025年5月25日 09:45

offset属性(offsetheight 的属性是什么)

offset属性(offsetheight 的属性是什么)

今天给各位分享offsetheight 的属性是什么的知识,其中也会对offsetheight 的属性是什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录offsetheight 的属性是什么JS中的offs

2026年7月14日 23:15

align命令怎么用(cad对齐怎么用)

align命令怎么用(cad对齐怎么用)

大家好,关于align命令怎么用很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于cad对齐怎么用的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录cad对

2025年11月7日 04:45

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索