1 编程语言兼容底层系统的实现方式
- 通过编译器实现兼容
涉及到系统调用的特定API的程序需要修改
- 通过中间语言实现兼容
程序被编译后,生成中间语言(ML),中间语言指令由虚拟机负责解释和运行。中间语言的兼容性由虚拟机负责完成。
2 常见汇编命令
- 数据传送指令:在寄存器与内存,寄存器与输入输出端口之间传送数据。
- movl 1,%eax //将自然数1传送到eax寄存器
- pop %eax //将栈顶数据弹出到eax
- 算术运算指令
- add 3,%eax //将3与eax中的数相加保存到eax
- inc %ebx //将ebx寄存器数+1
- 逻辑运算指令:与或非、左移右移等
- shl %eax, 1 //将eax中的数左移一个二进制位
- and a1, 00111011B //对a1寄存器中的数和操作数进行与操作
- 串指令:连续空间分配、连续空间取值、传值等
- 程序转移指令:jmp loop ret等
3 JVM指令
- 数据交换指令
JVM内存分为操作数栈、局部变量表、Java堆、常量池、方法区。 所以要有指令支持数据在这些内存区域之间的传送和交换。
- 函数调用指令
- 运算指令集
- 控制转义指令
- 对象创建与类型转换指令
Github资源链接(附有Hotspot源码文件)