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 | 栈顶寄存器 |

浙公网安备 33010602011771号