导航:首页 > 软件问题 > freedemon是什么app

freedemon是什么app

发布时间:2024-09-15 16:47:27

A. 迈克尔杰克逊都有哪些专辑《颤栗者》中那9首歌曲都是什么

英文名称:OFF THE WALL
中文名称:墙外
发行时间:1979年
专辑简介:此专辑为Michael Jackson成年后正式发行的第一张个人专辑。全球销量至2007年底达2000万张(美国一地850万张,七白金认证)。
01 DON'T STOP 'TIL YOU GET ENOUGH
02 ROCK WITH YOU
03 WORKING DAY AND NIGHT
04 GET ON THE FLOOR
05 OFF THE WALL
06 GIRLFRIEND
07 SHE'S OUT OF MY LIFE
08 I CAN'T HELP IT
09 IT'S THE FALLING IN LOVE
10 BURN THIS DISCO OUT

英文名称:THRILLER
中文名称:颤栗
发行时间:1982年
专辑简介:此专辑为Michael Jackson成年后正式发行的第二张个人专辑,此专辑影响巨大,奠定了MICHAEL歌王的地位,BILLIE JEAN连续七周占据美国单曲排行榜榜首,是有史以来最有影响力的歌曲之一。 专辑一共为MICHAEL获得了包括7项格兰美大奖、7项全美音乐奖、8项《滚石》音乐杂志年终大奖、12项《公告牌》杂志年终大奖等在内的150多项荣誉。全球销量至2007年底超过6000万张(MJ的发言人则声称该专辑至2006年底已在全世界卖出了1.04亿张),仅美国一地就卖出了2800万张,是世界唱片史上最畅销的唱片。
01 WANNA BE STARTIN' SOMETHIN'
02 BABY BE MINE
03 THE GIRL IS MINE
04 THRILLER
05 BEAT IT
06 BILLIE JEAN
07 HUMAN NATURE
08 P.Y.T.(PRETTY YOUNG THING)
09 THE LADY IN MY LIFE

英文名称:BAD
中文名称:真棒
发行时间:1987年
专辑简介:此专辑为Michael Jackson成年后正式发行的第三张个人专辑,此时的MICHAEL正走在人生的巅峰时期。 全球销量3300万张(美国一地1100万张,8白金认证)。
01 BAD
02 THE WAY YOU MAKE ME FEEL
03 SPEED DEMON
04 LIBERIAN GIRL
05 JUST GOOD FRIENDS
06 ANOTHER PART OF ME
07 MAN IN THE MIRROR
08 I JUST CAN'T STOP LOVING YOU
09 DIRTY DIANA
10 SMOOTH CRIMINAL
11 LEAVE ME ALONE

英文名称:DANGEROUS
中文名称:危险之旅
发行时间:1991年
专辑简介:此专辑为Michael Jackson成年后正式发行的第四张个人专辑,这张专辑的音乐创作水平堪称音乐界的极至。 全球销量3100万张(美国一地800万张,7白金认证)。
01 JAM
02 WHY YOU WANNA TRIP ON ME
03 IN THE CLOSET
04 SHE DRIVES ME WILD
05 REMEMBER THE TIME
06 CAN'T LET HER GET AWAY
07 HEAL THE WORLD
08 BLACK OR WHITE
09 WHO IS IT
10 GIVE IN TO ME
11 WILL YOU BE THERE
12 KEEP THE FAITH
13 GONE TOO SOON
14 DANGEROUS

英文名称:HISTORY-PAST,PRESENT AND FUTURE BOOK I
中文名称:历史-过去,现在和未来第一辑
发行时间:1995年
专辑简介:此专辑为Michael Jackson成年后正式发行的第五张个人专辑,共两辑,第一辑为以往专辑中的超级金曲,第二辑为新曲。此专辑的音乐超强震憾,再一次证明了歌王的地位无人能及。 全球销量2000万套(美国一地400万套,7白金认证)。

HISTORY BEGINS
01 BILLIE JEAN
02 THE WAY YOU MAKE ME FEEL
03 BLACK OR WHITE
04 ROCK WITH YOU
05 SHE'S OUT OF MY LIFE
06 BAD
07 I JUST CAN'T STOP LOVING YOU
08 MAN IN THE MIRROR
09 THRILLER
10 BEAT IT
11 THE GIRL IS MINE
12 REMEMBER THE TIME
13 DON'T STOP 'TIL YOU GET ENOUGH
14 WANNA BE STARTIN' SOMETHIN'
15 HEAL THE WORLD

HISTORY CONTINUES
01 SCREAM
02 THEY DON'T CARE ABOUT US
03 STRANGER IN MOSCOW
04 THIS TIME AROUND
05 EARTH SONG
06 D.S.
07 MONEY
08 COME TOGETHER
09 YOU ARE NOT ALONE
10 CHILDHOOD
11 TABLOID JUNKIE
12 2 BAD
13 HISTORY
14 LITTLE SUSIE
15 SMILE

英文名称:BLOOD ON THE DANCE FLOOR
中文名称:赤色风暴
发行时间:1997年
专辑简介:此专辑为Michael Jackson成年后正式发行的第六张个人专辑,第一次打破了MICHAEL每隔四年发行一张专辑的惯例。此辑前五首为新歌,后八首为历史专辑部分歌曲超级混音版。 全球销量600万张(美国100万张,白金认证)。
01 BLOOD ON THE DANCE FLOOR
02 MORPHINE
03 SUPERFLY SISTER
04 GHOST
05 IS IT SCARY
06 SCREAM LOUDER(FLYTE TYME REMIX)
07 MONEY(FIRE ISLAND RADIO EDIT)
08 2 BAD(REFUGEE CAMP MIX)
09 STRANGER IN MOSCOW(TEE'S IN-HOUSE CLUB MIX)
10 THIS TIME AROUND(D.M. RADIO MIX)
11 EARTH SONG(HANI'S CLUB EXPERIENCE)
12 YOU ARE NOT ALONE(CLASSIC CLUB MIX)
13 HISTORY(TONY MORAN'S HISTORY LESSON)

英文名称:INVINCIBLE
中文名称:无敌
发行时间:2001年
专辑简介:此专辑为Michael Jackson成年后正式发行的第七张个人专辑,据称,这将是MICHAEL发行的最后一张全新歌曲的正式专辑。全球销量900万张(美国一地250万张,2白金认证)。
01 UNBREAKABLE
02 HEARTBREAKER
03 INVINCIBLE
04 BREAK OF DAWN
05 HEAVEN CAN WAIT
06 YOU ROCK MY WORLD
07 BUTTERFLIES
08 SPEECHLESS
09 2000 WATTS
10 YOU ARE MY LIFE
11 PRIVACY
12 DON'T WALK AWAY
13 CRY
14 THE LOST CHILDREN
15 WHATEVER HAPPENS
16 THREATENED

英文名称:NUMBER ONES
中文名称:独一无二
发行时间:2003年
专辑简介:此专辑为Michael Jackson发行的一张精选辑,其中只有一首新歌,ONE MORE CHANCE,并且这首歌也是MICHAEL很多年前创作的,其他歌曲均为以往超级金曲。 全球销量700万张(美国一地150万张,白金认证)。
01 DON'T STOP 'TIL YOU GET ENOUGH
02 ROCK WITH YOU
03 BILLIE JEAN
04 BEAT IT
05 THRILLER
06 HUMAN NATURE
07 I JUST CAN'T STOP LOVING YOU
08 BAD
09 THE WAY YOU MAKE ME FEEL
10 DIRTY DIANA
11 SMOOTH CRIMINAL
12 BLACK OR WHITE
13 YOU ARE NOT ALONE
14 EARTH SONG
15 BLOOD ON THE DANCE FLOOR
16 YOU ROCK MY WORLD
17 BREAK OF DAWN
18 ONE MORE CHANCE

英文名称:THE ULTIMATE COLLECTION
中文名称:终极收藏
发行时间:2004年
专辑简介:此专辑为Michael Jackson发行的一张超级精选辑,共四张CD加一张DVD,CD收集了MJ从幼年至成年的很多超级金曲,并且还有未发行的新曲,DVD为1992年10月1日在布加勒斯特的危险世界巡回演唱会,非常值得珍藏。全球销量50万套(美国15万套)。

DISC ONE
01 I WANT YOU BACK
02 ABC
03 I'LL BE THERE
04 GOT TO BE THERE
05 I WANNA BE WHERE YOU ARE
06 BEN
07 DANCING MACHINE(SINGLE VERSION)
08 ENJOY YOURSELF
09 EASE ON DOWN THE ROAD(W/DIANA ROSS)
10 YOU CAN'T WIN(FROM THE WIZ)
11 SHAKE A BODY(EARLY DEMO)
12 SHAKE YOUR BODY(DOWN TO THE GROUND)
13 DON'T STOP 'TIL YOU GET ENOUGH
14 ROCK WITH YOU
15 OFF THE WALL
16 SHE'S OUT OF MY LIFE
17 SUNSET DRIVER(DEMO)
18 LOVELY ONE
19 THIS PLACE HOTEL

DISC TWO
01 WANNA BE STARTIN' SOMETHIN'
02 THE GIRL IS MINE(W/PAUL MCCARTNEY)
03 THRILLER
04 BEAT IT
05 BILLIE JEAN
06 P.Y.T.(PRETTY YOUNG THING DEMO)
07 SOMEONE IN THE DARK
08 STATE OF SHOCK(W/MICK JAGGER)
09 SCARED OF THE MOON(DEMO)
10 WE ARE THE WORLD(DEMO)
11 WE ARE HERE TO CHANGE THE WORLD(FROM CAPTAIN EO)

DISC THREE
01 BAD
02 THE WAY YOU MAKE ME FEEL
03 MAN IN THE MIRROR
04 I JUST CAN'T STOP LOVING YOU
05 DIRTY DIANA
06 SMOOTH CRIMINAL
07 CHEATER(DEMO)
08 DANGEROUS(EARLY VERSION)
09 MONKEY BUSINESS
10 JAM
11 REMEMBER THE TIME
12 BLACK OR WHITE
13 WHO IS IT(IHS MIX)
14 SOMEONE PUT YOUR HAND OUT

DISC FOUR
01 YOU ARE NOT ALONE
02 STRANGER IN MOSCOW
03 CHILDHOOD(THEME FROM FREE WILLY 2)
04 ON THE LINE
05 BLOOD ON THE DANCE FLOOR
06 FALL AGAIN(DEMO)
07 IN THE BACK
08 UNBREAKABLE
09 YOU ROCK MY WORLD
10 BUTTERFLIES
11 BEAUTIFUL GIRL(DEMO)
12 THE WAY YOU LOVE ME
13 WE'VE HAD ENOUGH

B. 漫酷阅读器苹果下载不了

漫酷阅读器苹果下载不了是因为下架了。
在苹果手机里的应用商店搜索得到的结果是没有,违反了苹果应用商店的上架制度与条件。
阅读器是一款快速、实用、功能超强的桌面端阅读软件。 RSS阅读器是一种软件或是说一个程序,这种软件可以自由读取RSS和Atom两种规范格式的文档,且这种读取RSS和Atom文档的软件有多个版本,由不同的人或公司开发,有着不同的名字。如流行的有:RSSReader、FreeDemon、SharpReader等。
阅读器软件能够实现大致相同的功能,其实质都是为了方便地读取RSS和Atom文档。Really Simple Syndication “真正简单的聚合”就是RSS的英文原意。把新闻标题、摘要(Feed)、内容按照用户的要求,“送”到用户的桌面就是RSS的目的。

C. 关于虚拟机的事!!

什么是虚拟机?

虚拟机的概念比较宽泛,通常人们接触到的虚拟机概念有VMware那样的硬件模拟软件,也有JVM这样的介于硬件和编译程序之间的软件。这里所指的是后者。
虚拟机是一个抽象的计算机,和实际的计算机一样,具有一个指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。

java虚拟机

一、什么是Java虚拟机

Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。

1.为什么要使用Java虚拟机

Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。

2.谁需要了解Java虚拟机

Java虚拟机是Java语言底层实现的基础,对Java语言感兴趣的人都应对Java虚拟机有个大概的了解。这有助于理解Java语言的一些性质,也有助于使用Java语言。对于要在特定平台上实现Java虚拟机的软件人员,Java语言的编译器作者以及要用硬件芯片实现Java虚拟机的人来说,则必须深刻理解Java虚拟机的规范。另外,如果你想扩展Java语言,或是把其它语言编译成Java语言的字节码,你也需要深入地了解Java虚拟机。

3.Java虚拟机支持的数据类型

Java虚拟机支持Java语言的基本数据类型如下:

byte://1字节有符号整数的补码
short://2字节有符号整数的补码
int://4字节有符号整数的补码
long://8字节有符号整数的补码
float://4字节IEEE754单精度浮点数
double://8字节IEEE754双精度浮点数
char://2字节无符号Unicode字符

几乎所有的Java类型检查都是在编译时完成的。上面列出的原始数据类型的数据在Java执行时不需要用硬件标记。操作这些原始数据类型数据的字节码(指令)本身就已经指出了操作数的数据类型,例如iadd、ladd、fadd和dadd指令都是把两个数相加,其操作数类型别是int、long、float和double。虚拟机没有给boolean(布尔)类型设置单独的指令。boolean型的数据是由integer指令,包括integer返回来处理的。boolean型的数组则是用byte数组来处理的。虚拟机使用IEEE754格式的浮点数。不支持IEEE格式的较旧的计算机,在运行Java数值计算程序时,可能会非常慢。

虚拟机支持的其它数据类型包括:
object//对一个Javaobject(对象)的4字节引用
returnAddress//4字节,用于jsr/ret/jsr-w/ret-w指令
注:Java数组被当作object处理。

虚拟机的规范对于object内部的结构没有任何特殊的要求。在Sun公司的实现中,对object的引用是一个句柄,其中包含一对指针:一个指针指向该object的方法表,另一个指向该object的数据。用Java虚拟机的字节码表示的程序应该遵守类型规定。Java虚拟机的实现应拒绝执行违反了类型规定的字节码程序。Java虚拟机由于字节码定义的限制似乎只能运行于32位地址空间的机器上。但是可以创建一个Java虚拟机,它自动地把字节码转换成64位的形式。从Java虚拟机支持的数据类型可以看出,Java对数据类型的内部格式进行了严格规定,这样使得各种Java虚拟机的实现对数据的解释是相同的,从而保证了Java的与平台无关性和可
移植性。

二、Java虚拟机体系结构

Java虚拟机由五个部分组成:一组指令集、一组寄存器、一个栈、一个无用单元收集堆(Garbage-collected-heap)、一个方法区域。这五部分是Java虚拟机的逻辑成份,不依赖任何实现技术或组织方式,但它们的功能必须在真实机器上以某种方式实现。

1.Java指令集

Java虚拟机支持大约248个字节码。每个字节码执行一种基本的CPU运算,例如,把一个整数加到寄存器,子程序转移等。Java指令集相当于Java程序的汇编语言。
Java指令集中的指令包含一个单字节的操作符,用于指定要执行的操作,还有0个或多个操作数,提供操作所需的参数或数据。许多指令没有操作数,仅由一个单字节的操作符构成。

虚拟机的内层循环的执行过程如下:

do{
取一个操作符字节;
根据操作符的值执行一个动作;
}while(程序未结束)

由于指令系统的简单性,使得虚拟机执行的过程十分简单,从而有利于提高执行的效率。指令中操作数的数量和大小是由操作符决定的。如果操作数比一个字节大,那么它存储的顺序是高位字节优先。例如,一个16位的参数存放时占用两个字节,其值为:

第一个字节*256+第二个字节字节码指令流一般只是字节对齐的。指令tabltch和lookup是例外,在这两条指令内部要求强制的4字节边界对齐。

2.寄存器

Java虚拟机的寄存器用于保存机器的运行状态,与微处理器中的某些专用寄存器类似。

Java虚拟机的寄存器有四种:
pc:Java程序计数器。
optop:指向操作数栈顶端的指针。
frame:指向当前执行方法的执行环境的指针。
vars:指向当前执行方法的局部变量区第一个变量的指针。

Java虚拟机

Java虚拟机是栈式的,它不定义或使用寄存器来传递或接受参数,其目的是为了保证指令集的简洁性和实现时的高效性(特别是对于寄存器数目不多的处理器)。
所有寄存器都是32位的。

3.栈

Java虚拟机的栈有三个区域:局部变量区、运行环境区、操作数区。

(1)局部变量区 每个Java方法使用一个固定大小的局部变量集。它们按照与vars寄存器的字偏移量来寻址。局部变量都是32位的。长整数和双精度浮点数占据了两个局部变量的空间,却按照第一个局部变量的索引来寻址。(例如,一个具有索引n的局部变量,如果是一个双精度浮点数,那么它实际占据了索引n和n+1所代表的存储空间。)虚拟机规范并不要求在局部变量中的64位的值是64位对齐的。虚拟机提供了把局部变量中的值装载到操作数栈的指令,也提供了把操作数栈中的值写入局部变量的指令。

(2)运行环境区 在运行环境中包含的信息用于动态链接,正常的方法返回以及异常传播。

·动态链接
运行环境包括对指向当前类和当前方法的解释器符号表的指针,用于支持方法代码的动态链接。方法的class文件代码在引用要调用的方法和要访问的变量时使用符号。动态链接把符号形式的方法调用翻译成实际方法调用,装载必要的类以解释还没有定义的符号,并把变量访问翻译成与这些变量运行时的存储结构相应的偏移地址。动态链接方法和变量使得方法中使用的其它类的变化不会影响到本程序的代码。

·正常的方法返回
如果当前方法正常地结束了,在执行了一条具有正确类型的返回指令时,调用的方法会得到一个返回值。执行环境在正常返回的情况下用于恢复调用者的寄存器,并把调用者的程序计数器增加一个恰当的数值,以跳过已执行过的方法调用指令,然后在调用者的执行环境中继续执行下去。

·异常和错误传播
异常情况在Java中被称作Error(错误)或Exception(异常),是Throwable类的子类,在程序中的原因是:①动态链接错,如无法找到所需的class文件。②运行时错,如对一个空指针的引用

·程序使用了throw语句。
当异常发生时,Java虚拟机采取如下措施:
·检查与当前方法相联系的catch子句表。每个catch子句包含其有效指令范围,能够处理的异常类型,以及处理异常的代码块地址。
·与异常相匹配的catch子句应该符合下面的条件:造成异常的指令在其指令范围之内,发生的异常类型是其能处理的异常类型的子类型。如果找到了匹配的catch子句,那么系统转移到指定的异常处理块处执行;如果没有找到异常处理块,重复寻找匹配的catch子句的过程,直到当前方法的所有嵌套的catch子句都被检查过。
·由于虚拟机从第一个匹配的catch子句处继续执行,所以catch子句表中的顺序是很重要的。因为Java代码是结构化的,因此总可以把某个方法的所有的异常处理器都按序排列到一个表中,对任意可能的程序计数器的值,都可以用线性的顺序找到合适的异常处理块,以处理在该程序计数器值下发生的异常情况。
·如果找不到匹配的catch子句,那么当前方法得到一个"未截获异常"的结果并返回到当前方法的调用者,好像异常刚刚在其调用者中发生一样。如果在调用者中仍然没有找到相应的异常处理块,那么这种错误传播将被继续下去。如果错误被传播到最顶层,那么系统将调用一个缺省的异常处理块。
(3)操作数栈区 机器指令只从操作数栈中取操作数,对它们进行操作,并把结果返回到栈中。选择栈结构的原因是:在只有少量寄存器或非通用寄存器的机器(如Intel486)上,也能够高效地模拟虚拟机的行为。操作数栈是32位的。它用于给方法传递参数,并从方法接收结果,也用于支持操作的参数,并保存操作的结果。例如,iadd指令将两个整数相加。相加的两个整数应该是操作数栈顶的两个字。这两个字是由先前的指令压进堆栈的。这两个整数将从堆栈弹出、相加,并把结果压回到操作数栈中。

每个原始数据类型都有专门的指令对它们进行必须的操作。每个操作数在栈中需要一个存储位置,除了long和double型,它们需要两个位置。操作数只能被适用于其类型的操作符所操作。例如,压入两个int类型的数,如果把它们当作是一个long类型的数则是非法的。在Sun的虚拟机实现中,这个限制由字节码验证器强制实行。但是,有少数操作(操作符pe和swap),用于对运行时数据区进行操作时是不考虑类型的。

4.无用单元收集堆

Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java语言具有无用单元收集能力:它不给程序员显式释放对象的能力。Java不规定具体使用的无用单元收集算法,可以根据系统的需求使用各种各样的算法。

5.方法区

方法区与传统语言中的编译后代码或是Unix进程中的正文段类似。它保存方法代码(编译后的java代码)和符号表。在当前的Java实现中,方法代码不包括在无用单元收集堆中,但计划在将来的版本中实现。每个类文件包含了一个Java类或一个Java界面的编译后的代码。可以说类文件是Java语言的执行代码文件。为了保证类文件的平台无关性,Java虚拟机规范中对类文件的格式也作了详细的说明。其具体细节请参考Sun公司的Java虚拟机规范。
回答者: 笑叹沧桑 - 举人 四级 12-15 22:27

--------------------------------------------------------------------------------

您觉得最佳答案好不好? 目前有 0 个人评价

50% (0)
50% (0)

其他回答 共 2 条

虚拟机的概念比较宽泛,通常人们接触到的虚拟机概念有VMware那样的硬件模拟软件,也有JVM这样的介于硬件和编译程序之间的软件。这里所指的是后者。
虚拟机是一个抽象的计算机,和实际的计算机一样,具有一个指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。

Java虚拟机

一、什么是Java虚拟机

Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。

1.为什么要使用Java虚拟机

Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。

2.谁需要了解Java虚拟机

Java虚拟机是Java语言底层实现的基础,对Java语言感兴趣的人都应对Java虚拟机有个大概的了解。这有助于理解Java语言的一些性质,也有助于使用Java语言。对于要在特定平台上实现Java虚拟机的软件人员,Java语言的编译器作者以及要用硬件芯片实现Java虚拟机的人来说,则必须深刻理解Java虚拟机的规范。另外,如果你想扩展Java语言,或是把其它语言编译成Java语言的字节码,你也需要深入地了解Java虚拟机。

3.Java虚拟机支持的数据类型

Java虚拟机支持Java语言的基本数据类型如下:

byte://1字节有符号整数的补码
short://2字节有符号整数的补码
int://4字节有符号整数的补码
long://8字节有符号整数的补码
float://4字节IEEE754单精度浮点数
double://8字节IEEE754双精度浮点数
char://2字节无符号Unicode字符

几乎所有的Java类型检查都是在编译时完成的。上面列出的原始数据类型的数据在Java执行时不需要用硬件标记。操作这些原始数据类型数据的字节码(指令)本身就已经指出了操作数的数据类型,例如iadd、ladd、fadd和dadd指令都是把两个数相加,其操作数类型别是int、long、float和double。虚拟机没有给boolean(布尔)类型设置单独的指令。boolean型的数据是由integer指令,包括integer返回来处理的。boolean型的数组则是用byte数组来处理的。虚拟机使用IEEE754格式的浮点数。不支持IEEE格式的较旧的计算机,在运行Java数值计算程序时,可能会非常慢。

虚拟机支持的其它数据类型包括:
object//对一个Javaobject(对象)的4字节引用
returnAddress//4字节,用于jsr/ret/jsr-w/ret-w指令
注:Java数组被当作object处理。

虚拟机的规范对于object内部的结构没有任何特殊的要求。在Sun公司的实现中,对object的引用是一个句柄,其中包含一对指针:一个指针指向该object的方法表,另一个指向该object的数据。用Java虚拟机的字节码表示的程序应该遵守类型规定。Java虚拟机的实现应拒绝执行违反了类型规定的字节码程序。Java虚拟机由于字节码定义的限制似乎只能运行于32位地址空间的机器上。但是可以创建一个Java虚拟机,它自动地把字节码转换成64位的形式。从Java虚拟机支持的数据类型可以看出,Java对数据类型的内部格式进行了严格规定,这样使得各种Java虚拟机的实现对数据的解释是相同的,从而保证了Java的与平台无关性和可
移植性。

二、Java虚拟机体系结构

Java虚拟机由五个部分组成:一组指令集、一组寄存器、一个栈、一个无用单元收集堆(Garbage-collected-heap)、一个方法区域。这五部分是Java虚拟机的逻辑成份,不依赖任何实现技术或组织方式,但它们的功能必须在真实机器上以某种方式实现。

1.Java指令集

Java虚拟机支持大约248个字节码。每个字节码执行一种基本的CPU运算,例如,把一个整数加到寄存器,子程序转移等。Java指令集相当于Java程序的汇编语言。
Java指令集中的指令包含一个单字节的操作符,用于指定要执行的操作,还有0个或多个操作数,提供操作所需的参数或数据。许多指令没有操作数,仅由一个单字节的操作符构成。

虚拟机的内层循环的执行过程如下:

do{
取一个操作符字节;
根据操作符的值执行一个动作;
}while(程序未结束)

由于指令系统的简单性,使得虚拟机执行的过程十分简单,从而有利于提高执行的效率。指令中操作数的数量和大小是由操作符决定的。如果操作数比一个字节大,那么它存储的顺序是高位字节优先。例如,一个16位的参数存放时占用两个字节,其值为:

第一个字节*256+第二个字节字节码指令流一般只是字节对齐的。指令tabltch和lookup是例外,在这两条指令内部要求强制的4字节边界对齐。

2.寄存器

Java虚拟机的寄存器用于保存机器的运行状态,与微处理器中的某些专用寄存器类似。

Java虚拟机的寄存器有四种:
pc:Java程序计数器。
optop:指向操作数栈顶端的指针。
frame:指向当前执行方法的执行环境的指针。
vars:指向当前执行方法的局部变量区第一个变量的指针。

Java虚拟机

Java虚拟机是栈式的,它不定义或使用寄存器来传递或接受参数,其目的是为了保证指令集的简洁性和实现时的高效性(特别是对于寄存器数目不多的处理器)。
所有寄存器都是32位的。

3.栈

Java虚拟机的栈有三个区域:局部变量区、运行环境区、操作数区。

(1)局部变量区 每个Java方法使用一个固定大小的局部变量集。它们按照与vars寄存器的字偏移量来寻址。局部变量都是32位的。长整数和双精度浮点数占据了两个局部变量的空间,却按照第一个局部变量的索引来寻址。(例如,一个具有索引n的局部变量,如果是一个双精度浮点数,那么它实际占据了索引n和n+1所代表的存储空间。)虚拟机规范并不要求在局部变量中的64位的值是64位对齐的。虚拟机提供了把局部变量中的值装载到操作数栈的指令,也提供了把操作数栈中的值写入局部变量的指令。

(2)运行环境区 在运行环境中包含的信息用于动态链接,正常的方法返回以及异常传播。

·动态链接
运行环境包括对指向当前类和当前方法的解释器符号表的指针,用于支持方法代码的动态链接。方法的class文件代码在引用要调用的方法和要访问的变量时使用符号。动态链接把符号形式的方法调用翻译成实际方法调用,装载必要的类以解释还没有定义的符号,并把变量访问翻译成与这些变量运行时的存储结构相应的偏移地址。动态链接方法和变量使得方法中使用的其它类的变化不会影响到本程序的代码。

·正常的方法返回
如果当前方法正常地结束了,在执行了一条具有正确类型的返回指令时,调用的方法会得到一个返回值。执行环境在正常返回的情况下用于恢复调用者的寄存器,并把调用者的程序计数器增加一个恰当的数值,以跳过已执行过的方法调用指令,然后在调用者的执行环境中继续执行下去。

·异常和错误传播
异常情况在Java中被称作Error(错误)或Exception(异常),是Throwable类的子类,在程序中的原因是:①动态链接错,如无法找到所需的class文件。②运行时错,如对一个空指针的引用

·程序使用了throw语句。
当异常发生时,Java虚拟机采取如下措施:
·检查与当前方法相联系的catch子句表。每个catch子句包含其有效指令范围,能够处理的异常类型,以及处理异常的代码块地址。
·与异常相匹配的catch子句应该符合下面的条件:造成异常的指令在其指令范围之内,发生的异常类型是其能处理的异常类型的子类型。如果找到了匹配的catch子句,那么系统转移到指定的异常处理块处执行;如果没有找到异常处理块,重复寻找匹配的catch子句的过程,直到当前方法的所有嵌套的catch子句都被检查过。
·由于虚拟机从第一个匹配的catch子句处继续执行,所以catch子句表中的顺序是很重要的。因为Java代码是结构化的,因此总可以把某个方法的所有的异常处理器都按序排列到一个表中,对任意可能的程序计数器的值,都可以用线性的顺序找到合适的异常处理块,以处理在该程序计数器值下发生的异常情况。
·如果找不到匹配的catch子句,那么当前方法得到一个"未截获异常"的结果并返回到当前方法的调用者,好像异常刚刚在其调用者中发生一样。如果在调用者中仍然没有找到相应的异常处理块,那么这种错误传播将被继续下去。如果错误被传播到最顶层,那么系统将调用一个缺省的异常处理块。
(3)操作数栈区 机器指令只从操作数栈中取操作数,对它们进行操作,并把结果返回到栈中。选择栈结构的原因是:在只有少量寄存器或非通用寄存器的机器(如Intel486)上,也能够高效地模拟虚拟机的行为。操作数栈是32位的。它用于给方法传递参数,并从方法接收结果,也用于支持操作的参数,并保存操作的结果。例如,iadd指令将两个整数相加。相加的两个整数应该是操作数栈顶的两个字。这两个字是由先前的指令压进堆栈的。这两个整数将从堆栈弹出、相加,并把结果压回到操作数栈中。

每个原始数据类型都有专门的指令对它们进行必须的操作。每个操作数在栈中需要一个存储位置,除了long和double型,它们需要两个位置。操作数只能被适用于其类型的操作符所操作。例如,压入两个int类型的数,如果把它们当作是一个long类型的数则是非法的。在Sun的虚拟机实现中,这个限制由字节码验证器强制实行。但是,有少数操作(操作符pe和swap),用于对运行时数据区进行操作时是不考虑类型的。

4.无用单元收集堆

Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java语言具有无用单元收集能力:它不给程序员显式释放对象的能力。Java不规定具体使用的无用单元收集算法,可以根据系统的需求使用各种各样的算法。

5.方法区

方法区与传统语言中的编译后代码或是Unix进程中的正文段类似。它保存方法代码(编译后的java代码)和符号表。在当前的Java实现中,方法代码不包括在无用单元收集堆中,但计划在将来的版本中实现。每个类文件包含了一个Java类或一个Java界面的编译后的代码。可以说类文件是Java语言的执行代码文件。为了保证类文件的平台无关性,Java虚拟机规范中对类文件的格式也作了详细的说明。其具体细节请参考Sun

阅读全文

与freedemon是什么app相关的资料

热点内容
电脑打印东西用什么文件 浏览:473
win8如何关掉程序 浏览:131
编程怎么编写手机短信验证 浏览:791
牵手是什么网站 浏览:379
哪个编程课是直播 浏览:272
win10显示不出手机文件夹 浏览:705
word文件阅读器 浏览:766
网站小图标怎么弄 浏览:58
怎么弄电脑密码 浏览:114
labview中将表格转为excel文件 浏览:454
口袋腕力升级 浏览:436
word刻录到光盘刻录大师 浏览:124
更改压缩文件后卡死是什么原因 浏览:201
电脑上如何发qq红包 浏览:230
如何删除word的空白页 浏览:822
创建swap文件 浏览:468
数控铣床编程在哪里编写 浏览:544
iphone文艺软件 浏览:938
纪元1404人口升级 浏览:527
公司网络如何设置自己路由器 浏览:649

友情链接