码迷,mamicode.com
首页 > 其他好文 > 详细

基于栈的指令集与基于寄存器的指令集

时间:2019-04-09 20:35:24      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:程序升级   很多   osg   icons   ons   java   tomcat服务器   pre   速度   

Java编译器输出的指令流,基本上[1]是一种基于栈的指令集架构,它们依赖操作数栈进行工作

与之相对的另外一套常用的指令集架构是基于寄存器的指令集

举个最简单的例子,分别使用这两种指令集计算“1+1”的结果,基于栈的指令集会是这
样子的:

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

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

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

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

 

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

 


 

Tomcat服务器的类加载架构

 

技术图片


 

 

OSGi(Open Service Gateway Initiative)是OSGi联盟(OSGi Alliance)制定的一个基于Java语言的动态模块化规范,

类库的可见性能得到非常精确的控制,一个模块里只有被Export过的Package才可能由外界访问,其他的Package和Class将会隐藏起来.

除了更精确的模块划分和可见性控制外,引入OSGi的另外一个重要理由是,基于OSGi的程序很可能(只是很可能,并不是一定会)可以实现模块级的热插拔功能,当程序升级更新或调试除错时,可以只停用、重新安装然后启用程序的其中一部分,这对企业级程序开发来说是一个非常有诱惑力的特性. 

 

但并非所有的应用都适合采用OSGi作为基础架构,OSGi在提供强大功能的同时,也引入了额外的复杂度,带来了线程死锁和内存泄漏的风险

基于栈的指令集与基于寄存器的指令集

标签:程序升级   很多   osg   icons   ons   java   tomcat服务器   pre   速度   

原文地址:https://www.cnblogs.com/snow-man/p/10617230.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!