揭秘java虚拟机-jvm设计原理与实现-读书笔记(第一章)

真的想认识一下jvm,就从图书馆借了封亚飞老师写的这本书。随便写写笔记:

机器生汇编,汇编生B,B生C,C生万物。。。。

否定别人是一件很容易的事,但要成就自己却很难。

揭秘java虚拟机-jvm设计原理与实现-读书笔记(第一章)

揭秘java虚拟机-jvm设计原理与实现-读书笔记(第一章)

jvm跨平台的原理(字节码:中间指令[中间语言])----你的程序只要遵循字节码规范,jvm就可以帮你跨平台、

揭秘java虚拟机-jvm设计原理与实现-读书笔记(第一章)

最简单的虚拟机执行引擎:(高级语言与机器语言的混合---code变量实际是一段机器代码)

揭秘java虚拟机-jvm设计原理与实现-读书笔记(第一章)

如何执行一段高级语言后,跳转执行机器语言,再跳回到高级语言:(修改cs:ip段寄存器实现:段地址+偏移地址--------->实现技术:c语言的指针函数):

揭秘java虚拟机-jvm设计原理与实现-读书笔记(第一章)

揭秘java虚拟机-jvm设计原理与实现-读书笔记(第一章)

x86内存结构:寄存器+数据段+代码段+堆栈+常量区

jvm内存结构:操作数栈,常量池,方法区,java堆,局部变量表

汇编指令:(其实就是可读的机器指令)

数据传送:move,pop

算数运算:add,inc

逻辑运算:shl,and

串指令:

程序跳转指令:jmp,lhouopa,ret

jvm指令:(多于汇编指令)

数据交换:iload,istore,lload,lstore.................

函数调用:jvm没有物理存储器(软件模拟硬件----用操作数栈+pc寄存器代替),不能像cpu硬件那样直接跳转到对应代码段,所以它需要通过类寻址(类加载)才能找到代码的入口。

运算指令

iadd,isub.............

函数转移:

对象创建与类型转换 : new

扩展指令(物理cpu所没有的):抛出异常指令,线程同步指令

 

java虚拟机通过调用cpu提供的jmp,call指令接口,从而实现对于不同的平台,调用对应的机器指令来执行。