
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
java虚拟机我们在前几期的文章中已经给大家介绍过很多次了,而本文我们就继续来学习一下,JVM架构模型指令类型与特点分析。
Java编译器主要是基于栈的指令集架构,个人觉得主要原因是可移植性决定的,JVM需要跨平台。指令集架构主要有两种:
基于栈的指令集架构:一个方法相当于一个入栈的操作,执行完相当于出栈操作。
基于寄存器的指令集架构
基于栈的指令集架构的特点
主要特点:
设计实现简单,适用于资源受限的系统,比如机顶盒,小玩具上。
避开寄存器分配难题:使用零地址指令方式分配。
指令流中大部分都是零地址指令,执行过程依赖操作栈,指令集更小(零地址),编译器容易实现。
不需要硬件支持,可移植性强,容易实现跨平台。
基于寄存器架构的特点
应用是x86的二进制指令集
依赖于硬件,可移植性差
性能好,执行效率高
更少指令执行一项操作
大部分情况下,寄存器的架构,一,二,三地址指令为主,而基于栈的指令集却是以零地址指令为主。
说明:什么叫零地址指令,一地址指令,二地址指令?
零地址指令只有操作码,没有操作数。这种指令有两种情况:一是无需操作数,另一种是操作数为默认的(隐含的),默认为操作数在寄存器中,指令可直接访问寄存器。
三地址指令:一般地址域中A1、A2分别确定一、二操作数地址,A3确定结果地址。下一条指令的地址通常由程序计数器按顺序给出。
二地址指令:地址域中A1确定一操作数地址,A2同时确定二操作数地址和结果地址。
单地址指令:地址域中A确定一操作数地址。固定使用某个寄存器存放二操作数和操作结果。因而在指令中隐含了它们的地址。
零地址指令:在堆栈型计算机中,操作数一般存放在下推堆栈顶的两个单元中,结果又放入栈顶,地址均被隐含,因而大多数指令只有操作码而没有地址域。
栈数据结构,一般只有入栈和出栈,所以操作的地方只有栈顶元素,所以位置是确定的,不需要地址。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。