揭秘Java虚拟机

最新书摘:
  • 肥猫爱编程
    2022-07-11
    其实,这段程序是在计算一个小学2年级的数学题目:求1到8的和。这段机器码使用了循环,如果写成java代码,类似这样:int sum=0;for(int i=0;i<8; i++){ sum +=i;}
  • 肥猫爱编程
    2022-07-10
    揭示Java字节码指令内部实现的真9。10字节码指令实现dsug :Eobtbaedx0在前文讲解栈顶缓存机制时,提到模板解释器所生成的本地机器指令与栈顶缓存有很大的vom :DaEdx0夫系儿大部分京市指令的本型卷使一枝队缓存这种优化技术这里将实片解的过3、soc。0和a妇等指令也都使用丁模顶缓行技术。同时,在前面讲解栈顶缓存的章节中,其实已经详细讲解了0d系列指令的本地实现机制,因此这里便不再赘述。曾另外,在描述字节码指令的本地实现机制之前,有一点需要说明,当VM开始调用一个本00向议◆战无2no5阳方法之前,会为该Jva方法创建好栈帧,前面讲过,ava方法栈愤主要包含3大块,分别思局部变量表、固定锁和操作数栈。当VM为即将调用的]a方法准备好栈顿之后,在x86平台上,VM会以cs1寄存器作为程序计数器,并会将该寄存器指向局部变量表的第0个sot内存位置,同时VM会将sp这种栈预寄荐器指向Java方法的操作数栈栈顶,因此,在JVM执行目标Jav阳方法所对应的字节码指令时,字节码指令所对应的本地机器码指令push与pop,实际上便是在操作Java方法的操作数栈栈顶,所以下面所说的压栈和出栈实际上是指对Java方法操作数栈的压栈和出栈。喻清测时司原市放排里数,单简奶案容工认章容页时口本示何序所对应的第二子节码指个中器中罪个鼻购亨址特州大具面处人最速婚来现景相具爵高了即财人£宁》孙会大刻的御角连今量北2oi公带一将界驶绿州风上是钢个用的西同其的只◆完吸的面品其明·597●
  • 肥猫爱编程
    2022-07-10
    Java函数入参第每限的的第局部变量表argsJava函数局部变量a=18b=21sumreturnaddressebpcaller sp0固定帧methodOop意示鱼立导到0constantPoolCachelocalspointerbcpesp元个表达式栈a=18娇和图9。9Test:main0函数执行完iload2字节码指令之后的栈核结抽及个t
  • 肥猫爱编程
    2022-07-08
    在32位平台,一个slot能够存放一个int类型,也能存放一个reference类型,因此如果一个Java方法的第1和第22个入参都是int类型,则读取局部变量表中这2个入参的字节码指令分别是iload_0和iload_1,如果要研究一个32位平台上一个slot槽位究竟占多大内存空间........
  • 肥猫爱编程
    2022-07-07
    在CallStub 执行 call %eax指令之前, 物理寄存器(注: 不是逻辑寄存器哦) 中所保存的重要信息如表7.3所示.ecx Java函数入参数量
  • 肥猫爱编程
    2022-07-06
    .... 调用method_entry(zerolocals)就相当于执行了下面这个逻辑:Interpreter::_entry_table[Interperter::zerolocals] = gernaerate_method_entry(Interpreter::zerolocalsfd)
  • 肥猫爱编程
    2022-07-06
    411页其对应的机器指令是:- mov 0xC(%ebx) , %edx -- ConstantMethod *- mov 0xC(%edx) , %dex -- ConstantPoolCache*
  • 肥猫爱编程
    2022-07-07
    iload_1iload_2这两条字节码指令分别将局部变量表的第1个槽位和第2个槽位的数据推送至表达式栈栈顶(槽位起始编号从0开始). 第1和第2 个槽位上所保存的数据. 正是add()方法的两个参数x和y. 很显然,第一个槽位上所保存的数据是this指针. 更加显然的是,JVM内部的局部变量表的确包含了入参.
  • 肥猫爱编程
    2022-07-08
    注意,第一条机器码指令是 “mov -0x4(%edi), %eax ”,机器码果然从 edi 奇存器所指的下一个4字节的位置开始读取局部变量表中的 long 类型的数据,并将其保存到 eax 奇存器中。由于在32位平台上,一次mov指令最大只能传送 4字节数据,因此这里对于 long 类型的数据连续使用了2 条mov 指令,连续读取2个4字节数据并分别保存到 eax 与ebx 寄存器中。这里其实是使用了栈顶缓存技术,这里暂且不表