JVM的架构模型&基于栈式的指令集架构与基于寄存器式的指令集架构的区别

本文探讨了JVM的基于栈的指令集架构与基于寄存器的指令集架构之间的差异。栈式架构强调可移植性,指令集小但执行效率较低;寄存器式架构则注重性能,指令执行更高效,但可移植性差。Java选择栈式架构主要是为了跨平台兼容性。
摘要由CSDN通过智能技术生成

Java编译器输入的指令流基本上是一种基于栈的指令集架构,另外一种指令集架构则是基于寄存器的指令集架构

举个最简单的例子,分别使用这两种指令集计算“1+1”的结果

//基于栈的指令
iconst_1
iconst_1
iadd
istore_0

//基于寄存器指令
mov eax,1
add eax,1

基于栈的指令集主要的优点就是可移植, 缺点是执行速度慢,相同操作指令数要多很多。

寄存器由硬件直接提供,程序直接依赖这些硬件寄存器则不可避免地要受到硬件的约束。

虽然栈架构指令集的代码非常紧凑,但是完成相同功能所需的指令数量一般会比寄存器架构多,因为出栈、入栈操作本身就产生了相当多的指令数量。更重要的是,栈实现在内存之中,频繁的栈访问也就意味着频繁的内存访问,相对于处理器来说,内存始终是执行速度的瓶颈。

两种架构之间的区别:

基于栈式架构的特点:

  • 设计和实现更简单,适用于资源受限的系统;
  • 避开了寄存器的分配难题:使用零地址指令方式分配。
  • 指令流中的指令大部分是零地址指令,其执行过程依赖于操作栈。指令集更小
  • 编译器容易实现。
  • 不需要硬件支持,可移植性更好,更好实现跨平台
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值