JVM

1、JVM指令集

操作数栈、局部变量表、Java堆、常量池、方法区

数据交换指令 iload,istore,lload,lstore,fload,fstore,dload,dstore,ldc,bipush 操作数栈和局部变量表
  getfeild,putfeild Java堆中的对象的字段和操作数栈
  getstatic,putstatic 类中的字段和操作数栈
  baload,bastore,caload,castore JVM堆中的数组和操作数栈
函数调用指令  invokevirtual,invokeinterface,invokespecial,invokestatic,return  
运算指令集  iadd,isub,fadd,ddiv  
控制转移指令  switch,if...else,do...while,for,foreach,return,break,continue  
对象创建与类型转换指令  new,窄化类型指令,宽化类型指令  
抛出异常指令    
线程同步指令    

 

 

 

 

 

 

 

 

 

 

 

2、物理机栈和寄存器

main函数
ebp 该指针永远指向系统栈最上面一个栈帧的底部。
...  
...  
...  
esp 该指针永远指向系统栈最上面一个栈帧的栈顶。
cs:ip 调用者的指令地址
add函数
ebp 该指针永远指向系统栈最上面一个栈帧的底部。
...  
...  
...  
esp 该指针永远指向系统栈最上面一个栈帧的栈顶。

 

 

 

 

 

 

 

 

 

 

 

 

 

 vim ./jdk/make/src/classes/build/tools/generatecurrencydata/GenerateCurrencyData.java

 

 ./configure  --with-target-bits=64 --with-boot-jdk=/root/yzw/jdk1.7.0_80 --with-debug-level=slowdebug --enable-debug-symbols ZIP_DEBUGINFO_FILES=0

–with-target-bits=64 :指定生成64位jdk;

–with-boot-jdk=/usr/java/jdk1.7.0_80/:启动jdk的路径;

–with-debug-level=slowdebug:编译时debug的级别,有release, fastdebug, slowdebug 三种级别;

–enable-debug-symbols ZIP_DEBUGINFO_FILES=0:生成调试的符号信息,并且不压缩;

 make all DISABLE_HOTSPOT_OS_VERSION_CHECK=OK ZIP_DEBUGINFO_FILES=0

https://blog.csdn.net/weixin_45118229/article/details/125979565

寄存器

ebp 栈底寄存器
eax 数据寄存器1
edx 数据寄存器2
cs:ip 指令寄存器
esp 栈顶寄存器
posted @ 2021-10-10 23:04  海平面下的我们  阅读(32)  评论(0编辑  收藏  举报