揭秘java虚拟机-jvm设计原理与实现-读书笔记(第一章)
真的想认识一下jvm,就从图书馆借了封亚飞老师写的这本书。随便写写笔记:
机器生汇编,汇编生B,B生C,C生万物。。。。
否定别人是一件很容易的事,但要成就自己却很难。
jvm跨平台的原理(字节码:中间指令[中间语言])----你的程序只要遵循字节码规范,jvm就可以帮你跨平台、
最简单的虚拟机执行引擎:(高级语言与机器语言的混合---code变量实际是一段机器代码)
如何执行一段高级语言后,跳转执行机器语言,再跳回到高级语言:(修改cs:ip段寄存器实现:段地址+偏移地址--------->实现技术:c语言的指针函数):
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指令接口,从而实现对于不同的平台,调用对应的机器指令来执行。