• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    ARM9平臺上KVM移植的研究和實現(xiàn)

    2012-04-29 00:44:03易佳望王斌肖暉胡海
    計算機(jī)時代 2012年5期

    易佳望 王斌 肖暉 胡海

    摘要: 在移動應(yīng)用開發(fā)中,為了將J2ME技術(shù)應(yīng)用到ARM9嵌入式平臺上,需要事先在該ARM9平臺上成功移植KVM。但是,在將SUN公司的CLDC 1.1參考實現(xiàn)移植到ARM9平臺的過程中,由于編譯工具版本更新導(dǎo)致的編譯工具與參考實現(xiàn)之間的版本不兼容問題,影響了KVM的成功移植。為此,研究了KVM的代碼執(zhí)行機(jī)制,并分析了SUN公司的CLDC 1.1參考實現(xiàn)的build過程。在此基礎(chǔ)上,采用目前主流編譯器來移植KVM,對編譯生成KVM各個階段產(chǎn)生的所有錯誤和警告進(jìn)行了深入分析,并給出了消除那些影響移植結(jié)果的錯誤和警告的適當(dāng)解決方法。所提出的解決方法不僅實現(xiàn)了參考實現(xiàn)源碼的成功編譯,而且提高了移植后KVM程序的健壯性。KVM移植測試的實驗結(jié)果表明,KVM成功地被移植到了ARM9+Embedded Linux平臺上。

    關(guān)鍵詞: 移動應(yīng)用開發(fā); J2ME; CLDC; KVM移植

    中圖分類號:TP399文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2012)05-22-04

    The research and implementation of KVM porting on ARM9 platforms

    Yi Jiawang, Wang Bin, Xiao Hui, Hu Hai

    (School of Computer & Communication Engineering, Changsha University of Science & Technology, Changsha, Hunan 410004, China)

    Abstract: In mobile application development, we need to successfully port KVM to ARM9 embedded platforms before we use J2ME technology on ARM9 platforms. However, in the process of porting SUN's CLDC 1.1 reference implementation to ARM9 platforms, the version incompatibility problem between compiling tools and the reference implementation, which is brought by version updating of compiling tools, leads to failure in KVM porting. This paper studies the mechanism of executing KVM code, and analyses the building process of SUN's CLDC 1.1 reference implementation. Based on this work, the paper uses currently popular compiling tools to port KVM, analyses in depth all the errors and warnings produced in phases of building KVM, and gives the appropriate solutions to eliminate those errors and warnings which affect the porting result. Solutions proposed in the paper not only achieve the success of compiling reference implementation source code but also improve the robustness of ported KVM programs. The experimental results of KVM porting tests show that KVM is successfully ported to an 'ARM9 + Embedded Linux' platform.

    Key words: Mobile application development; J2ME; CLDC; KVM porting

    0 引言

    目前移動手機(jī)上運(yùn)行的操作系統(tǒng)種類繁多,包括Linux、Windows Mobile、Palm OS、Symbian OS、Google Android等。Java和J2ME技術(shù)克服了手機(jī)平臺多樣性造成的應(yīng)用程序移植困難的問題,為移動應(yīng)用程序的跨平臺開發(fā)和運(yùn)行提供了可能。

    J2ME是Sun公司面向具有有限硬件資源的設(shè)備的Java版本,這些資源受限的設(shè)備包括PDA、手機(jī)、機(jī)頂盒和其它消費(fèi)電子設(shè)備與嵌入式設(shè)備[1]。CLDC[2]和MIDP[3]已經(jīng)成為用于移動手機(jī)應(yīng)用開發(fā)的J2ME標(biāo)準(zhǔn)。

    J2ME/CLDC技術(shù)的核心是Sun公司的KVM(Kilobyte Virtual Machine)[4]。KVM最初設(shè)計是用于資源受限的低端移動設(shè)備的JVM(Java virtual machine)。正是JVM的存在才使得Java具有“一次編譯,處處運(yùn)行”的特征[5,6],因此,KVM的移植便成為J2ME應(yīng)用于移動開發(fā)的首要前提。

    隨著編譯工具的不斷更新,在編譯生成KVM的過程中不可避免地出現(xiàn)了一些影響移植結(jié)果的新問題。對于這些新問題,一部分KVM移植者沿用較低版本的編譯工具以回避版本不兼容問題,而其他移植者雖然處理了新版本編譯器帶來的錯誤但卻忽視了其產(chǎn)生的大多數(shù)警告。這樣做要么使得移植后的KVM與最新編譯的J2ME應(yīng)用仍可能產(chǎn)生版本不兼容問題,要么使得被忽略的那些警告可能導(dǎo)致程序bug從而降低了移植后KVM的程序健壯性或魯棒性。

    為了使移植后的KVM能夠穩(wěn)定健壯地運(yùn)行最新編譯的J2ME應(yīng)用,本文將采用當(dāng)前主流的編譯工具對移植到ARM9平臺上的KVM源碼進(jìn)行編譯,同時對編譯產(chǎn)生的所有錯誤和警告進(jìn)行分析和研究,并給出消除這些錯誤和警告的適當(dāng)解決方法。

    1 KVM的代碼執(zhí)行機(jī)制

    為了更好地理解KVM的移植過程,我們需要對KVM的代碼執(zhí)行機(jī)制作一些研究。

    我們先來看一下JVM的代碼執(zhí)行機(jī)制,在此基礎(chǔ)上才能更好地理解KVM的代碼執(zhí)行機(jī)制。

    [Java源程序

    (*.java)][Java字節(jié)碼

    (*.class)][Java API類庫

    (*.class)][Java虛擬機(jī)

    (內(nèi)含interpreter)][操作系統(tǒng)及電腦硬件] [Bytecode結(jié)構(gòu)] [編譯] [運(yùn)行] [翻譯成本地代碼執(zhí)行][加載及校驗][加載及校驗]

    圖1JVM的代碼執(zhí)行機(jī)制

    在圖1中,文本格式的Java源程序(文件后綴名為.java)由Java編譯器編譯為Java字節(jié)碼文件(文件后綴名為.class),且每一個Java類對應(yīng)一個.class文件。

    在運(yùn)行階段,Java虛擬機(jī)先裝入或加載指定的“.class”文件,進(jìn)行必要的校驗,然后找到指定的入口方法(例如main),由interpreter翻譯運(yùn)行“.class”文件中的字節(jié)碼[7]。虛擬機(jī)在執(zhí)行過程中根據(jù)需要(如創(chuàng)建新對象等)動態(tài)加載用戶程序的其他“.class”文件或者系統(tǒng)類庫的“.class”文件并校驗和運(yùn)行[8]。Java API類庫(一個大型的現(xiàn)成軟件組件(類)集合)是一些為用戶程序運(yùn)行提供支持或起輔助作用的“.class”格式的標(biāo)準(zhǔn)的Java類,它是Java語言的一個標(biāo)準(zhǔn)組成部分。加載過程通常都是被推遲到必要的時候才進(jìn)行。

    JVM中的interpreter一般采用解釋的方式執(zhí)行字節(jié)碼。它按照程序執(zhí)行的順序逐條取出指令字節(jié)碼,翻譯成一段等效的本地代碼序列來執(zhí)行,這個解釋執(zhí)行過程一直重復(fù)到程序的最后一條指令執(zhí)行完為止[7]。

    下面我們再來看一下KVM的代碼執(zhí)行機(jī)制(如圖2所示)。

    [MyApp.Java][javac] [MyApp.class][preverifier] [預(yù)驗證過的

    MyApp.class][verifier] [interpreter][KVM] [下載到目標(biāo)設(shè)備][預(yù)驗證過的

    核心API類庫

    (*.class)][用JCC處理得到與api類庫對應(yīng)的兩個.c文件][JCC][prelink/prelode][指定CLDC類庫][指定CLDC類庫]

    圖2KVM的代碼執(zhí)行機(jī)制

    我們知道,KVM需要運(yùn)行在硬件資源受限的嵌入式設(shè)備上,因此有必要對虛擬機(jī)的功能進(jìn)行簡化,提高其運(yùn)行效率,并減小其體積。為此,將虛擬機(jī)原本復(fù)雜而耗資源的大部分校驗工作移出虛擬機(jī),交由PC開發(fā)平臺上一個工具軟件preverify來進(jìn)行預(yù)驗證或預(yù)校驗,從而減輕移動設(shè)備的負(fù)擔(dān),而在KVM中只留下一個簡單的輕量級的校驗器[6,9]。

    另一方面,由于嵌入式設(shè)備硬件資源的限制和減小體積的需要,CLDC只包括了必要的Java核心類庫。同時,出于安全性考慮,需要將PC開發(fā)平臺上由preverify預(yù)驗證過的CLDC類庫“打包”存放到虛擬機(jī)中去。這將由JCC (JavaCodeCompact)工具軟件來負(fù)責(zé)對預(yù)驗證過的CLDC類庫進(jìn)行處理,并將其預(yù)連接或預(yù)加載(prelink/preload)到KVM中。這樣做也可以避免動態(tài)加載這些類運(yùn)行時的開銷。

    因此,我們在編譯和預(yù)驗證用于KVM的Java代碼時,需要將-classpath選項指定為CLDC類庫的路徑,然后將預(yù)驗證過的class文件下載到目標(biāo)設(shè)備由KVM來執(zhí)行。

    2 CLDC參考實現(xiàn)

    移植所用的KVM源碼是來自SUN公司的CLDC 1.1參考實現(xiàn)。表1中描述了該CLDC 1.1參考實現(xiàn)源碼包中的目錄結(jié)構(gòu)[4]。

    表1CLDC 1.1參考實現(xiàn)的目錄結(jié)構(gòu)

    [[子目錄&說明&api&CLDC需要的核心Java類庫源代碼&bin&包含kvm等所有二進(jìn)制執(zhí)行文件和已編譯好的核心Java類庫的class文件&build&用于編譯生成面向不同操作系統(tǒng)平臺的KVM的makefile&doc&相關(guān)的說明文檔&jam&KVM的可選組件JAM(Java Application Manager)的源碼&kvm&面向不同平臺的KVM的源碼&tools&一些需要用到的工具軟件的源碼,如JavaCodeCompact,preverifier,KDWP Debug Proxy&]]

    3 CLDC參考實現(xiàn)的build過程

    KVM移植主要是采用合適的編譯工具對CLDC 1.1參考實現(xiàn)中的源碼進(jìn)行編譯,以生成運(yùn)行在目標(biāo)平臺上的kvm可執(zhí)行文件。

    用于源碼build的Makefile文件根據(jù)源碼目錄的層次結(jié)構(gòu)相應(yīng)地被組織成一個層次結(jié)構(gòu)。主Makefile文件放在build目錄中,由這里跳轉(zhuǎn)去執(zhí)行其它Makefile文件。在build目錄中,根據(jù)目標(biāo)平臺上操作系統(tǒng)的不同類型分別對應(yīng)有不同的主Makefile文件。

    在主Makefile文件中可以確定要參與build的代碼段,api部分是必選的,kdp和jcc都是可選的。因為要應(yīng)用于嵌入式系統(tǒng),故未選擇kdp。對于JAM(Java Application Management),為簡化起見沒有選擇該部分。所有的選擇可以通過修改Makefile文件中的相關(guān)開關(guān)選擇項值進(jìn)行,也可在命令行中用參數(shù)覆蓋。

    以ARM+Linux為目標(biāo)平臺對CLDC參考實現(xiàn)進(jìn)行build的操作很簡單,只需進(jìn)入build/linux目錄,通過make命令執(zhí)行那個主Makefile文件,就開始build過程了。下面的圖3描述了其build過程。

    [編譯生成preverify工具

    (x86平臺可執(zhí)行文件)][編譯和預(yù)驗證api classes,

    在壓縮得到class.zip文件

    (預(yù)驗證過的api類庫)][編輯生成JCC工具(Java可執(zhí)行程序),

    用JCC處理class.zip得到兩個.c文件,

    nativeFunctionTableUnix.c

    和ROMjavaUnix.c][將kvm的*.c文件

    編譯為*.o目標(biāo)文件][將api類庫對應(yīng)的兩個.c文件

    編譯為兩個.o目標(biāo)文件][將kvm的*.o文件和api類庫對應(yīng)的兩個.o文件

    連接在一起,生成kvm(ARM平臺可執(zhí)行文件)] [編譯生成kvm,同時將api類庫預(yù)連接到kvm中]

    圖3以ARM+Linux為目標(biāo)平臺的build過程

    4 CLDC參考實現(xiàn)的源碼編譯

    KVM移植所采用的編譯環(huán)境為:Java編譯器Javac 1.6.0_22,(Fedora9自帶)X86平臺Gcc 4.3.0編譯器和交叉編譯器Arm-Linux-Gcc 4.3.2。

    首先,KVM的運(yùn)行平臺是ARM+Linux平臺,所以需要在KVMVmUnixuild目錄中將用于編譯KVM的Makefile文件中的編譯器設(shè)置為交叉編譯器Arm-Linux-Gcc[10],即:

    ifeq($(GCC),true)

    CC=arm-linux-gcc

    而preverify等工具軟件是運(yùn)行在X86平臺上的,故無需改變其原采用的編譯器。表2列出了執(zhí)行make命令的過程中各個編譯對象所采用的編譯器。

    表2各個編譯對象所采用的編譯器

    [[編譯對象&運(yùn)行平臺&采用編譯器&Preverify Tool&X86&Gcc&Api Classes&NA&Javac&Jcc Tool&X86&Javac&KVM&Arm+Linux&Arm-Linux-Gcc&]]

    其次,在最終對KVM源碼進(jìn)行編譯之前,需要先對所需工具軟件和API類庫進(jìn)行編譯。因此,CLDC源碼編譯過程包括以下四個階段:編譯生成preverify工具,編譯和預(yù)驗證API類庫,編譯生成JCC工具,編譯和連接生成KVM。

    下面我們對CLDC源碼編譯過程中各階段產(chǎn)生的errors和warnings進(jìn)行分析,并給出適當(dāng)?shù)慕鉀Q方法。

    4.1 編譯生成preverify工具

    在使用X86 Gcc編譯tools/preverifier目錄下的C源文件時,編譯產(chǎn)生的errors & warnings及其解決方法可以見表3。

    表3編譯生成preverify時的錯誤和警告及其解決方法

    [[編譯錯誤和警告&解決方法&warning 1:

    內(nèi)嵌函數(shù)exit的不兼容隱式聲明&添加語句“#include”&warning 2:

    傳遞給iconv函數(shù)的參數(shù)2來自于不兼容指針類型&將第2個參數(shù)from另存為指向非const類型的指針,并改為傳遞該指針&]]

    對于表3中給出的解決方法,說明如下。

    ⑴ warning 1:因為Gcc對函數(shù)exit的隱式聲明和內(nèi)置函數(shù)exit不兼容,所以需要在convert_md.c文件中添加語句“#include ”。

    ⑵ warning 2:用于字符編碼轉(zhuǎn)換的iconv函數(shù)的聲明為size_t iconv(iconv_t cd, char **inbuf, size_t *inbytesleft, char **outbuf, size_t *outbytesleft);

    因為iconv函數(shù)會修改第2個參數(shù)inbuf和第4個參數(shù)outbuf指針?biāo)赶虻牡胤?,而源碼中傳遞給iconv函數(shù)的第2個參數(shù)from是指向const char類型的,其值是不能改變的,所以有警告。

    解決方法是將參數(shù)from另存為指向非const類型的指針并改為傳遞該指針,如下所示。

    char*from2=(char*)from; //需要進(jìn)行顯示類型轉(zhuǎn)換

    ret=iconv(ic, &from2, &ileft, &to, &oleft);

    4.2 編譯和預(yù)驗證api類庫

    在使用Javac編譯api目錄下的Java源文件時,編譯產(chǎn)生的errors & warnings及其解決方法可以見表4。

    表4編譯api類庫時的錯誤和警告及其解決方法

    [[編譯錯誤和警告&解決方法&warning:

    不能映射為ASCII編碼的字符&在api/Makefile文件中,對于javac命令添加“-encoding Cp1252”選項&error:

    無法訪問java.lang.StringBuilder類文件&在api/Makefile文件中,對于javac命令添加“-source 1.4”選項&]]

    對于表4中給出的解決方法,說明如下。

    ⑴ warning:在將Java源文件編譯為.class文件之前,JDK需要將源程序文本文件從原編碼格式統(tǒng)一轉(zhuǎn)換為Java內(nèi)部默認(rèn)的Unicode格式。

    如果不指定Java源文件編碼格式,JDK會以操作系統(tǒng)的默認(rèn)編碼格式作為轉(zhuǎn)換前源文件的編碼格式。這里編譯環(huán)境所用Linux操作系統(tǒng)的默認(rèn)編碼格式是UTF-8(對于英文字母就是ASCII編碼),因此該warning說明轉(zhuǎn)換前源文件編碼格式不是UTF-8。

    在vi/vim中可用“:set fileencoding”命令查看源文件字符編碼格式,結(jié)果為fileencoding=latin1,這表示源文件采用的是“Cp1252:Windows Latin-1”編碼。所以,在api目錄下的Makefile文件中,對于javac命令需要使用“-encoding Cp1252”選項指定源文件編碼格式。

    ⑵ error:java.lang.StringBuilder類是JDK1.5之后出現(xiàn)的[11]。而核心api類庫源文件的版本低于JDK1.6編譯器的版本,所以要在javac命令中使用“-source 1.4”選項指定源碼版本。

    4.3 編譯生成jcc工具

    在使用javac編譯tools/jcc目錄下的Java源文件時,編譯產(chǎn)生的errors & warnings及其解決方法可以見表5。

    對于表5中給出的解決方法,說明如下。

    ⑴ warning 1:同表4中的warning。

    ⑵ error:根據(jù)代碼可以判斷這里的enum是用作標(biāo)識符,所以要在javac命令中使用“-source 1.4”選項指定源碼版本(之后enum處會產(chǎn)生false warning)。

    ⑶ warning 2:可以用Java SE 6 API中的類來替換這兩個Sun專有API類,需要改寫相關(guān)源代碼。為了簡化起見這里暫不處理。

    表5編譯生成jcc工具時的錯誤和警告及其解決方法

    [[編譯錯誤和警告&解決方法&warning 1:

    不能映射為ASCII編碼的字符&在tools/jcc/Makefile文件中,對于javac命令添加“-encoding Cp1252”選項&error:

    JDK1.5之后,'enum'是關(guān)鍵詞,不能被用作標(biāo)識符&在tools/jcc /Makefile文件中,對于javac命令添加“-source 1.4”選項&warning 2:

    使用了Sun公司專有的API類,即sun.misc.Compare和sun.misc.Sort,未來版本中可能會被移除&目前版本可以支持,暫不處理。&]]

    4.4 編譯和連接生成kvm

    在使用交叉編譯器Arm-Linux-Gcc編譯KVM目錄下的C源文件時,編譯產(chǎn)生的errors & warnings及其解決方法可以見表6。

    表6編譯生成kvm時的錯誤和警告及其解決方法

    [[編譯錯誤和警告&解決方法&由兩個靜態(tài)函數(shù)的預(yù)先定義的位置不當(dāng)引起的一系列錯誤和警告&將這兩個靜態(tài)函數(shù)的預(yù)先定義移出所在函數(shù)體,并放在該函數(shù)體前面&warning 1:

    整型常數(shù)對于long類型太大&在這些整型常數(shù)或整型常量代表的常數(shù)后面加后綴LL&warning 2:

    有三個變量可能會在未初始化賦值的情況下被使用&不作處理,因為程序本身已經(jīng)保證了正確性&warning 3:

    定義了但沒有使用的variable和label&不影響程序正確性,可以不處理&error:

    _FPU_EXTENDED和

    _FPU_DOUBLE沒有被聲明&選擇不編譯相關(guān)的兩個語句,或者將這兩個語句都注釋掉&]]

    對于表6中給出的解決方法,說明如下。

    ⑴ GCC 4.0以上版本不支持將一個靜態(tài)函數(shù)的預(yù)先定義直接放到另一個函數(shù)的函數(shù)體內(nèi)部。因此,需要將兩個靜態(tài)函數(shù)function 'Vfy_verifyMethod'和function 'Vfy_checkNewInstructions'的預(yù)先定義移出到所在函數(shù)體的前面。

    ⑵ warning 1:因為32位機(jī)器的int和long類型都是32位,這些報警的整型常數(shù)已超出32位表示的范圍,所以它們是64位整型常數(shù),需要在這些整型常數(shù)或整型常量代表的常數(shù)后面加后綴LL(long long類型,交叉編譯器支持該類型)。

    ⑶ warning 2:報警的原因是,在變量的定義和使用之間存在switch或if-else等多分支語句,而且多分支語句中存在沒有對變量賦值的分支或路徑。這些變量分別是'typeKey'、'targetClassKey'和'thisClass'。經(jīng)檢查,程序中可以保證這些變量在有效使用前都已被初始化賦值過,故無需處理。

    ⑷ warning 3:略。

    ⑸ error:在kvm/VmUnix/h目錄下的machine_md.h文件中,將編譯開關(guān)選項PROCESSOR_ARCHITECTURE_X86的定義改為0,選擇不編譯函數(shù)function 'InitializeFloatingPoint'內(nèi)的兩個語句(也可以簡單注釋掉這兩個語句)。因為該函數(shù)只是用來設(shè)置X86 CPU集成的FPU的精度模式,所以不編譯這兩個語句并不影響針對ARM處理器所生成的KVM對浮點的支持。

    5 移植結(jié)果測試

    移植測試采用的目標(biāo)開發(fā)板平臺為S3C2440+Embedded Linux 2.6.32.2。

    按以上方法解決編譯時產(chǎn)生的errors和warnings后,可以得到一個KVM可執(zhí)行文件。在Linux終端中輸入命令:file kvm,將顯示該KVM是一個ARM平臺的可執(zhí)行文件,需要下載到ARM開發(fā)板上運(yùn)行。

    編寫一個“Hello World!”Java源程序,編譯和預(yù)驗證時指定-classpath選項為CLDC類庫。在Linux終端中輸入如下命令:

    [root@tom home]# javac -source 1.4 -classpath/home/

    j2me_cldc/api/classes -d /home/examples Hello.java

    [root@tom home]# preverify -classpath/home/j2me_cldc/api/

    classes -d ./home/examples

    這里要注意Javac命令要加選項-source 1.4,指定源碼版本。

    最后,將預(yù)驗證過的Hello.class下載到開發(fā)板上KVM可執(zhí)行文件所在的目錄中,在開發(fā)板終端中執(zhí)行命令:./kvm Hello,可以看到“Hello World!”的輸出,如圖4所示。這說明KVM移植成功(該KVM支持浮點運(yùn)算)。

    圖4KVM移植結(jié)果測試

    6 結(jié)束語

    本文采用目前主流版本的編譯器來移植KVM,對KVM源碼編譯各個階段所產(chǎn)生的錯誤和警告進(jìn)行了深入分析,并給出了消除它們的適當(dāng)解決方法。這些解決方法一方面消除了主要由編譯器版本更新導(dǎo)致的錯誤,實現(xiàn)了KVM的成功編譯;另一方面消除了那些可能會導(dǎo)致KVM程序bug的警告,提高了移植后KVM程序的健壯性或魯棒性。KVM移植結(jié)果的測試實驗表明,按本文所述解決方法消除相關(guān)錯誤和警告后編譯所得的KVM被成功地移植到了ARM9嵌入式平臺上。

    本文可以為以后新編譯環(huán)境下成功移植KVM提供有益的參考。為了在ARM9平臺上實現(xiàn)J2ME的應(yīng)用,我們進(jìn)一步的工作將是在成功移植功能完整的KVM的基礎(chǔ)上移植MIDP 2.0。

    參考文獻(xiàn):

    [1] 馮東,羅蕾.MTK系統(tǒng)下的J2ME運(yùn)行平臺設(shè)計[J].單片機(jī)與嵌入式

    系統(tǒng)應(yīng)用,2009.4.

    [2] Sun Microsystem,Inc.Connected Limited Device Configuration

    (CLDC).http://java.sun.com/products/cldc/.

    [3] Sun Microsystem, Inc. Mobile Information Device Profile(MIDP).

    http://java.sun.com/products/midp/.

    [4] Sun Microsystems, Inc. KVM Porting Guide, CLDC 1.1, J2ME,

    March 2003.

    [5] Sun Microsystems, Inc. The Java Virtual Machine Specification,

    Second Edition,1999.

    [6] 周顯軍,李眾立,張俊然.基于S3C4510B芯片KVM虛擬機(jī)的移植和

    測試[J].微計算機(jī)信息,2007.23(10-2).

    [7] 馬嘉,周明天,陳虹.一種基于ARM7的嵌入式Java虛擬機(jī)性能優(yōu)化

    技術(shù)研究[J].計算機(jī)應(yīng)用研究,2007.24(5).

    [8] Bill Venners.曹曉剛,蔣靖譯.深入Java虛擬機(jī)[M].機(jī)械工業(yè)出版社,

    2007.

    [9] 葉磊,陳榕,趙岳松.KVM在基于構(gòu)件的嵌入式操作系統(tǒng)上的移植和

    研究[J].計算機(jī)應(yīng)用研究,2005.9.

    [10] 袁文菊,孫天澤,李梅.Java虛擬機(jī)向ARM平臺的移植[J].微計算機(jī)

    信息,2007.23(8-2).

    [11] Sun Microsystem, Inc. Java Platform, Standard Edition 6 API

    Specification,http://download.oracle.com/javase/6/docs/api/.

    男女边摸边吃奶| 国产一区二区在线观看av| www.精华液| 美女福利国产在线| 一区二区三区四区激情视频| 操美女的视频在线观看| 亚洲av日韩精品久久久久久密 | 中文精品一卡2卡3卡4更新| e午夜精品久久久久久久| 777米奇影视久久| 国产男人的电影天堂91| 久久ye,这里只有精品| 久久ye,这里只有精品| 看免费av毛片| 亚洲精品国产av成人精品| 日本欧美国产在线视频| 黄网站色视频无遮挡免费观看| 成年av动漫网址| 美女中出高潮动态图| 欧美老熟妇乱子伦牲交| 亚洲人成网站在线观看播放| 男人添女人高潮全过程视频| 国产成人精品久久久久久| 日韩不卡一区二区三区视频在线| 免费观看性生交大片5| 亚洲欧美中文字幕日韩二区| 老熟女久久久| 欧美最新免费一区二区三区| 性少妇av在线| 丝袜美足系列| 天天躁夜夜躁狠狠躁躁| 久久鲁丝午夜福利片| 免费观看av网站的网址| 精品久久蜜臀av无| 久久精品国产综合久久久| 999精品在线视频| 午夜免费男女啪啪视频观看| 免费人妻精品一区二区三区视频| 黑人欧美特级aaaaaa片| 蜜桃国产av成人99| 精品酒店卫生间| 国产成人精品无人区| 一本色道久久久久久精品综合| 黄片播放在线免费| 晚上一个人看的免费电影| 久久av网站| 亚洲激情五月婷婷啪啪| 夫妻午夜视频| 亚洲熟女毛片儿| 午夜91福利影院| 免费看av在线观看网站| 黄色视频不卡| 亚洲熟女精品中文字幕| 久久99热这里只频精品6学生| 建设人人有责人人尽责人人享有的| 巨乳人妻的诱惑在线观看| 人体艺术视频欧美日本| 日韩制服骚丝袜av| 亚洲精品国产av成人精品| 人人妻,人人澡人人爽秒播 | 纵有疾风起免费观看全集完整版| 午夜久久久在线观看| 免费在线观看视频国产中文字幕亚洲 | 一区二区三区精品91| www.熟女人妻精品国产| 一区二区三区激情视频| 老汉色av国产亚洲站长工具| 美女主播在线视频| 国产成人a∨麻豆精品| 999久久久国产精品视频| 捣出白浆h1v1| 亚洲伊人久久精品综合| 国产精品熟女久久久久浪| 欧美成人精品欧美一级黄| 欧美日本中文国产一区发布| 午夜老司机福利片| 亚洲精品国产av成人精品| 天天躁狠狠躁夜夜躁狠狠躁| 亚洲精品aⅴ在线观看| 中文精品一卡2卡3卡4更新| 亚洲自偷自拍图片 自拍| 亚洲成人免费av在线播放| 人体艺术视频欧美日本| svipshipincom国产片| 国产 精品1| 成人午夜精彩视频在线观看| 亚洲色图 男人天堂 中文字幕| 久久影院123| 亚洲欧美激情在线| 国产一区二区激情短视频 | 天天躁夜夜躁狠狠久久av| 日本猛色少妇xxxxx猛交久久| 国产片特级美女逼逼视频| 成年动漫av网址| 精品福利永久在线观看| 国产精品女同一区二区软件| 亚洲美女搞黄在线观看| 满18在线观看网站| av一本久久久久| 秋霞在线观看毛片| 1024香蕉在线观看| 日韩伦理黄色片| 美女福利国产在线| 午夜福利视频在线观看免费| 免费女性裸体啪啪无遮挡网站| 亚洲免费av在线视频| 一二三四中文在线观看免费高清| 亚洲国产毛片av蜜桃av| av网站免费在线观看视频| 免费av中文字幕在线| 国产精品免费视频内射| 十八禁网站网址无遮挡| 色吧在线观看| 侵犯人妻中文字幕一二三四区| kizo精华| 亚洲色图 男人天堂 中文字幕| 丁香六月欧美| 国产免费又黄又爽又色| 天天躁夜夜躁狠狠久久av| 欧美精品av麻豆av| 欧美成人精品欧美一级黄| 国产精品一区二区在线观看99| 亚洲欧洲国产日韩| 久久久久网色| 黑人巨大精品欧美一区二区蜜桃| 欧美黑人精品巨大| 少妇精品久久久久久久| 黑人巨大精品欧美一区二区蜜桃| 久久精品熟女亚洲av麻豆精品| videosex国产| 亚洲精品,欧美精品| 国产精品亚洲av一区麻豆 | 黄片小视频在线播放| 在线天堂最新版资源| 亚洲色图 男人天堂 中文字幕| 男女高潮啪啪啪动态图| 亚洲精品av麻豆狂野| 青春草国产在线视频| 天天影视国产精品| 久久精品人人爽人人爽视色| 超色免费av| 在线观看三级黄色| 久久人人爽人人片av| 亚洲男人天堂网一区| 哪个播放器可以免费观看大片| 啦啦啦视频在线资源免费观看| 亚洲av在线观看美女高潮| 中文字幕人妻丝袜制服| 国产精品人妻久久久影院| 97人妻天天添夜夜摸| 1024香蕉在线观看| 观看av在线不卡| 咕卡用的链子| 男女午夜视频在线观看| 美女高潮到喷水免费观看| 久久99精品国语久久久| 国产成人免费观看mmmm| 一区二区三区四区激情视频| 建设人人有责人人尽责人人享有的| 两个人免费观看高清视频| 黄频高清免费视频| 色吧在线观看| 午夜日韩欧美国产| 中文字幕制服av| 欧美日本中文国产一区发布| 婷婷色麻豆天堂久久| 国产精品亚洲av一区麻豆 | 大陆偷拍与自拍| 观看av在线不卡| 男女高潮啪啪啪动态图| 欧美亚洲日本最大视频资源| 国产一区二区激情短视频 | 欧美日韩福利视频一区二区| 久久久久视频综合| 下体分泌物呈黄色| 午夜福利,免费看| 视频区图区小说| 欧美 亚洲 国产 日韩一| 国产色婷婷99| 日韩大码丰满熟妇| 亚洲,一卡二卡三卡| 亚洲欧美色中文字幕在线| 最新的欧美精品一区二区| 亚洲,一卡二卡三卡| 97在线人人人人妻| 成人毛片60女人毛片免费| 亚洲av电影在线观看一区二区三区| 女的被弄到高潮叫床怎么办| 人体艺术视频欧美日本| 欧美少妇被猛烈插入视频| 亚洲精品国产av蜜桃| 大陆偷拍与自拍| 国产片内射在线| 国产一级毛片在线| 国产精品av久久久久免费| e午夜精品久久久久久久| 狂野欧美激情性bbbbbb| av有码第一页| 一边亲一边摸免费视频| 99热全是精品| 久久国产精品大桥未久av| 2018国产大陆天天弄谢| 国产亚洲av高清不卡| 免费看不卡的av| 国产黄色免费在线视频| 国产精品 欧美亚洲| 亚洲欧美一区二区三区久久| 欧美 日韩 精品 国产| 在线天堂中文资源库| 91aial.com中文字幕在线观看| 久久ye,这里只有精品| 久久人人爽人人片av| 两个人免费观看高清视频| 国产精品 国内视频| 国产亚洲欧美精品永久| 老司机亚洲免费影院| 亚洲国产毛片av蜜桃av| 免费女性裸体啪啪无遮挡网站| 日韩大片免费观看网站| 午夜91福利影院| 无遮挡黄片免费观看| 精品国产露脸久久av麻豆| 精品久久久久久电影网| 国产1区2区3区精品| 狂野欧美激情性bbbbbb| h视频一区二区三区| 永久免费av网站大全| 日韩av免费高清视频| 9191精品国产免费久久| 国产亚洲精品第一综合不卡| 日韩人妻精品一区2区三区| 久久韩国三级中文字幕| 精品一品国产午夜福利视频| 69精品国产乱码久久久| av不卡在线播放| 欧美黑人欧美精品刺激| 中国三级夫妇交换| 建设人人有责人人尽责人人享有的| 国产有黄有色有爽视频| 久久午夜综合久久蜜桃| 极品少妇高潮喷水抽搐| 十八禁人妻一区二区| 亚洲欧美一区二区三区久久| 18禁国产床啪视频网站| av片东京热男人的天堂| 亚洲欧美激情在线| 一级毛片黄色毛片免费观看视频| 精品第一国产精品| 日本91视频免费播放| 成人手机av| 欧美 亚洲 国产 日韩一| 久久鲁丝午夜福利片| 午夜久久久在线观看| 日韩制服丝袜自拍偷拍| 久久天躁狠狠躁夜夜2o2o | 亚洲专区中文字幕在线 | 自线自在国产av| 最新的欧美精品一区二区| 无限看片的www在线观看| av视频免费观看在线观看| 免费高清在线观看视频在线观看| av一本久久久久| 国产 精品1| 久久精品熟女亚洲av麻豆精品| 国产有黄有色有爽视频| 亚洲av福利一区| netflix在线观看网站| 精品少妇一区二区三区视频日本电影 | 国产一区有黄有色的免费视频| 亚洲av日韩在线播放| 亚洲,一卡二卡三卡| 亚洲人成网站在线观看播放| 日韩大片免费观看网站| 久久久久久久大尺度免费视频| 中文天堂在线官网| 欧美乱码精品一区二区三区| 欧美黄色片欧美黄色片| 少妇的丰满在线观看| 老司机靠b影院| 国产女主播在线喷水免费视频网站| 亚洲成人手机| 久久天堂一区二区三区四区| 最新在线观看一区二区三区 | 新久久久久国产一级毛片| 亚洲天堂av无毛| a 毛片基地| 人人妻人人澡人人爽人人夜夜| 国产高清国产精品国产三级| 一个人免费看片子| 香蕉国产在线看| av女优亚洲男人天堂| 国产av精品麻豆| 天美传媒精品一区二区| 久久久欧美国产精品| 菩萨蛮人人尽说江南好唐韦庄| 亚洲av综合色区一区| 永久免费av网站大全| 亚洲精品久久午夜乱码| 精品人妻在线不人妻| 亚洲国产av影院在线观看| 韩国高清视频一区二区三区| 母亲3免费完整高清在线观看| 啦啦啦中文免费视频观看日本| 久久国产精品男人的天堂亚洲| 日韩精品有码人妻一区| 一区二区三区激情视频| a级毛片在线看网站| 日韩免费高清中文字幕av| 日韩,欧美,国产一区二区三区| 亚洲欧洲日产国产| 亚洲精品成人av观看孕妇| 天堂中文最新版在线下载| 91精品国产国语对白视频| 18禁国产床啪视频网站| 精品一区二区三区四区五区乱码 | 欧美成人午夜精品| 亚洲成人国产一区在线观看 | 午夜免费鲁丝| 国产精品一二三区在线看| 波野结衣二区三区在线| 国产精品女同一区二区软件| 在线观看免费视频网站a站| 美女主播在线视频| 最近2019中文字幕mv第一页| 波野结衣二区三区在线| 亚洲欧洲精品一区二区精品久久久 | 亚洲精品中文字幕在线视频| 美女高潮到喷水免费观看| 中文字幕最新亚洲高清| 欧美精品高潮呻吟av久久| 欧美日韩视频精品一区| 99久国产av精品国产电影| 精品酒店卫生间| 久久久久精品国产欧美久久久 | 亚洲av男天堂| 韩国高清视频一区二区三区| 午夜福利网站1000一区二区三区| 国产99久久九九免费精品| 欧美精品高潮呻吟av久久| 少妇被粗大猛烈的视频| 国产 精品1| 国产av码专区亚洲av| 久久97久久精品| 午夜免费观看性视频| 色婷婷av一区二区三区视频| 亚洲熟女毛片儿| 肉色欧美久久久久久久蜜桃| 亚洲精品久久午夜乱码| 日韩欧美一区视频在线观看| 亚洲av成人精品一二三区| 少妇 在线观看| 不卡视频在线观看欧美| 亚洲av福利一区| 晚上一个人看的免费电影| 午夜日本视频在线| 美国免费a级毛片| 久久亚洲国产成人精品v| 精品久久蜜臀av无| 伊人久久大香线蕉亚洲五| 国产福利在线免费观看视频| 亚洲欧洲日产国产| 天天躁夜夜躁狠狠躁躁| 麻豆av在线久日| 婷婷色综合www| 看十八女毛片水多多多| 欧美另类一区| 无遮挡黄片免费观看| bbb黄色大片| 妹子高潮喷水视频| 国产男女超爽视频在线观看| 欧美日韩视频高清一区二区三区二| 欧美日韩亚洲高清精品| 午夜福利网站1000一区二区三区| 热re99久久国产66热| 在线精品无人区一区二区三| 日本猛色少妇xxxxx猛交久久| 丁香六月天网| 亚洲国产av新网站| 另类精品久久| 男的添女的下面高潮视频| 精品少妇内射三级| 亚洲人成网站在线观看播放| 性少妇av在线| 蜜桃国产av成人99| 中文天堂在线官网| 丝袜美足系列| 午夜免费男女啪啪视频观看| 大码成人一级视频| 亚洲专区中文字幕在线 | 国产精品99久久99久久久不卡 | 亚洲精品国产av成人精品| 伦理电影大哥的女人| 成人18禁高潮啪啪吃奶动态图| 一个人免费看片子| 国产欧美日韩综合在线一区二区| 少妇人妻精品综合一区二区| 免费高清在线观看日韩| 黄片播放在线免费| 1024香蕉在线观看| 777米奇影视久久| 亚洲伊人色综图| 亚洲人成电影观看| 午夜激情av网站| 国产成人精品久久久久久| 毛片一级片免费看久久久久| 成年人免费黄色播放视频| 丰满迷人的少妇在线观看| 亚洲国产看品久久| 日韩大片免费观看网站| 婷婷色av中文字幕| 满18在线观看网站| 久久 成人 亚洲| 熟女av电影| 国产一区亚洲一区在线观看| 国产欧美日韩一区二区三区在线| 视频在线观看一区二区三区| 热99国产精品久久久久久7| 不卡视频在线观看欧美| 国产日韩一区二区三区精品不卡| 两个人免费观看高清视频| 99久久精品国产亚洲精品| 免费看av在线观看网站| 18在线观看网站| 91精品伊人久久大香线蕉| 亚洲成人国产一区在线观看 | 亚洲精品乱久久久久久| 性色av一级| 精品免费久久久久久久清纯 | 亚洲一卡2卡3卡4卡5卡精品中文| 亚洲欧美精品综合一区二区三区| 黑丝袜美女国产一区| 国产1区2区3区精品| 久久亚洲国产成人精品v| 中文精品一卡2卡3卡4更新| 精品亚洲成国产av| 一区在线观看完整版| 少妇 在线观看| 大话2 男鬼变身卡| 美女福利国产在线| 亚洲精品美女久久久久99蜜臀 | av国产精品久久久久影院| 国产精品久久久人人做人人爽| 最近最新中文字幕免费大全7| 欧美日本中文国产一区发布| 热re99久久国产66热| 免费观看人在逋| 下体分泌物呈黄色| 国产精品成人在线| 亚洲av成人不卡在线观看播放网 | 亚洲精品,欧美精品| 女的被弄到高潮叫床怎么办| 成人国产av品久久久| 亚洲av中文av极速乱| 另类精品久久| 少妇人妻久久综合中文| 日韩精品免费视频一区二区三区| 国产人伦9x9x在线观看| 亚洲男人天堂网一区| 国产免费视频播放在线视频| xxxhd国产人妻xxx| 男女床上黄色一级片免费看| 王馨瑶露胸无遮挡在线观看| 亚洲精品aⅴ在线观看| 国产精品嫩草影院av在线观看| 欧美日韩亚洲综合一区二区三区_| 国产男女内射视频| 国产人伦9x9x在线观看| 国产免费又黄又爽又色| 最黄视频免费看| 少妇 在线观看| 久久免费观看电影| 不卡av一区二区三区| 日韩熟女老妇一区二区性免费视频| 啦啦啦在线免费观看视频4| 中文字幕人妻丝袜一区二区 | 伊人久久大香线蕉亚洲五| 成人黄色视频免费在线看| 女人被躁到高潮嗷嗷叫费观| 日韩大码丰满熟妇| 免费看av在线观看网站| 亚洲天堂av无毛| 狠狠精品人妻久久久久久综合| 看非洲黑人一级黄片| 天天躁夜夜躁狠狠躁躁| 久久这里只有精品19| 国产亚洲av片在线观看秒播厂| 最新在线观看一区二区三区 | 婷婷成人精品国产| 亚洲国产欧美一区二区综合| 中文乱码字字幕精品一区二区三区| 国产伦人伦偷精品视频| 亚洲四区av| av.在线天堂| 国产成人a∨麻豆精品| 久久亚洲国产成人精品v| 中文字幕最新亚洲高清| 国产成人午夜福利电影在线观看| 中文精品一卡2卡3卡4更新| 精品亚洲成国产av| 日韩一卡2卡3卡4卡2021年| 国产精品蜜桃在线观看| 免费观看a级毛片全部| 精品国产超薄肉色丝袜足j| 亚洲av国产av综合av卡| 亚洲精品成人av观看孕妇| 这个男人来自地球电影免费观看 | 国产成人精品无人区| 五月天丁香电影| 纵有疾风起免费观看全集完整版| a级毛片黄视频| 老鸭窝网址在线观看| 最近的中文字幕免费完整| 男女边摸边吃奶| 国产精品99久久99久久久不卡 | 男人爽女人下面视频在线观看| 大话2 男鬼变身卡| 国产老妇伦熟女老妇高清| 色94色欧美一区二区| 在线 av 中文字幕| 亚洲人成电影观看| 精品人妻一区二区三区麻豆| 国产精品一区二区在线不卡| 大陆偷拍与自拍| 亚洲欧美日韩另类电影网站| 日韩伦理黄色片| 精品视频人人做人人爽| 黄色毛片三级朝国网站| 伊人亚洲综合成人网| 纯流量卡能插随身wifi吗| 精品久久蜜臀av无| 精品人妻熟女毛片av久久网站| 男女高潮啪啪啪动态图| 亚洲人成77777在线视频| 欧美日韩精品网址| 成人国产麻豆网| 日韩欧美一区视频在线观看| 男男h啪啪无遮挡| 制服丝袜香蕉在线| 亚洲国产欧美日韩在线播放| 可以免费在线观看a视频的电影网站 | 亚洲av男天堂| 尾随美女入室| 国产精品久久久久成人av| 亚洲美女黄色视频免费看| 国产亚洲精品第一综合不卡| 黑人欧美特级aaaaaa片| 精品免费久久久久久久清纯 | 男女床上黄色一级片免费看| 欧美 亚洲 国产 日韩一| 国产一区二区三区av在线| 在线观看一区二区三区激情| av免费观看日本| 日韩 欧美 亚洲 中文字幕| av国产精品久久久久影院| 亚洲精品aⅴ在线观看| 亚洲精品国产av蜜桃| 夫妻午夜视频| 国产高清不卡午夜福利| 一区二区三区激情视频| 中文字幕色久视频| 深夜精品福利| 国产精品久久久久成人av| 国产精品一国产av| 青春草视频在线免费观看| 久久青草综合色| 中文天堂在线官网| 老熟女久久久| 成人漫画全彩无遮挡| 叶爱在线成人免费视频播放| 妹子高潮喷水视频| 午夜激情久久久久久久| 黄色视频不卡| 久热爱精品视频在线9| av片东京热男人的天堂| 男女床上黄色一级片免费看| 免费在线观看视频国产中文字幕亚洲 | 在线 av 中文字幕| 欧美黄色片欧美黄色片| 精品免费久久久久久久清纯 | 欧美日韩亚洲综合一区二区三区_| 国语对白做爰xxxⅹ性视频网站| 欧美日韩一区二区视频在线观看视频在线| 亚洲欧美中文字幕日韩二区| 欧美精品一区二区大全| 韩国高清视频一区二区三区| 欧美日韩一级在线毛片| 一二三四在线观看免费中文在| 久久99精品国语久久久| 超碰97精品在线观看| 国产精品一国产av| 亚洲精品一区蜜桃| 一边亲一边摸免费视频| 人妻一区二区av| 99久久99久久久精品蜜桃| 国产一区二区三区综合在线观看| 欧美日韩国产mv在线观看视频| 午夜福利网站1000一区二区三区| 麻豆乱淫一区二区| 国产国语露脸激情在线看| 欧美精品高潮呻吟av久久| 国产亚洲最大av| 精品少妇黑人巨大在线播放| 久久 成人 亚洲| 日韩大码丰满熟妇| 国产精品久久久av美女十八| 亚洲 欧美一区二区三区| 亚洲精品视频女| 97在线人人人人妻| 最近中文字幕高清免费大全6| 欧美精品一区二区大全| 新久久久久国产一级毛片| 最近中文字幕高清免费大全6| 麻豆av在线久日| 国产日韩欧美在线精品| 大片免费播放器 马上看|