導航:首頁 > 軟體問題 > 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相關的資料

熱點內容
哪個編程課是直播 瀏覽: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
引用extjs 瀏覽:463
linux默認顯示隱藏文件 瀏覽:402
板繪水彩上色教程 瀏覽:634
itunes升級固件在哪個文件夾 瀏覽:210

友情鏈接