freedemon是什么app|漫酷阅读器苹果下载不了

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


赞 (0)