jvm虚拟机栈,也叫java栈,它由一个个的栈帧组成,而栈帖由如下几个部分组成java
package com.lind.basic; public class Demo1 { static int hello() { int a = 1; int b = 2; int c = a + b; return c; } public static void main(String[] args) { System.out.println(hello()); } }
javac demo1.java
生成以后,扩展名是.class,这个文件对于咱们来讲是没有可读性的。jvm
javap demo1.class > demo1.txt
咱们能够经过文件编译工具来查看demo1.txt的内容工具
Compiled from "Demo1.java" public class com.lind.basic.Demo1 { public com.lind.basic.Demo1(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return static int hello(); Code: 0: iconst_1 // 把第一个整型变量推到操做数栈 1: istore_0 // 让它出栈,并存储到局部变量表 2: iconst_2 3: istore_1 4: iload_0 // 加载第一个数据入操做数栈 5: iload_1 // 加载第二个数据入操做数栈 6: iadd // 将两个数相加,结束入操做数栈 7: istore_2 // 将结果出栈,存到局部变量表 8: iload_2 // 加载它入操做数栈 9: ireturn // 返回 public static void main(java.lang.String[]); Code: 0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 3: invokestatic #3 // Method hello:()I 6: invokevirtual #4 // Method java/io/PrintStream.println:(I)V 9: return }
对于上面的汇编文件,咱们是能够看的懂的,并且咱们须要,汇编语言能够直接在计算机上运行,我想jvm应该也是把class文件生成对应操做系统的汇编文件,而后交给操做系统去执行吧!操作系统