專利名稱:跨平臺的字節(jié)序處理方法、裝置和字節(jié)碼運(yùn)行平臺的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域,尤其涉及跨平臺的字節(jié)序處理方法、裝置和 字節(jié)碼運(yùn)行平臺。
背景技術(shù):
字節(jié)碼(bytecode)不同于通常情況下經(jīng)過編譯器編譯后輸出的目標(biāo)代碼,
意味著在一個平臺生成的字節(jié)碼可能在與生成該字節(jié)碼的平臺不同的平臺上 運(yùn)行,例如,對于嵌入式環(huán)境,為了節(jié)省嵌入式客戶端執(zhí)行解析、編譯的時間 和所需的內(nèi)存空間, 一種做法是將解析、編譯從處理字節(jié)碼的過程中抽離出來, 即,服務(wù)器預(yù)先對源代碼進(jìn)行解析和編譯(稱為"預(yù)編譯"),客戶端直接運(yùn)行 服務(wù)器生成的字節(jié)碼即可。由于服務(wù)器所在的平臺可能與客戶端所在的平臺并 不相同,跨平臺的字節(jié)碼在處理過程中不可避免會遇到字節(jié)序(endianness) 的問題。
所謂字節(jié)序,是專門針對多個字節(jié)的數(shù)據(jù)類型而言,通俗的定義是大于一 個字節(jié)的數(shù)據(jù)類型在內(nèi)存中的存放順序。按照數(shù)據(jù)的高低字節(jié)在內(nèi)存中的相對 位置,可以簡單地將字節(jié)序分為大端字節(jié)序(Big Endianness)和小端字節(jié)序 (Little Endianness )。大端字節(jié)序指的是高位字節(jié)排放在內(nèi)存的低地址端,低 位字節(jié)排放在內(nèi)存的高地址端,小端字節(jié)序剛好與之相反,低位字節(jié)排放在內(nèi) 存的低地址端,高位字節(jié)排放在內(nèi)存的高地址端。
在現(xiàn)有技術(shù)中,當(dāng)生成字節(jié)碼的平臺的字節(jié)序與運(yùn)行該字節(jié)碼的平臺的字 節(jié)序不同時,例如,生成字節(jié)碼的平臺的字節(jié)序?yàn)榇蠖俗止?jié)序,運(yùn)行該字節(jié)碼 的平臺的字節(jié)序?yàn)樾《俗止?jié)序,或者,生成字節(jié)碼的平臺的字節(jié)序?yàn)樾《俗止?jié) 序,運(yùn)行該字節(jié)碼的平臺的字節(jié)序?yàn)榇蠖俗止?jié)序,如果生成的字節(jié)碼直接在與 生成該字節(jié)碼的平臺不同的平臺上運(yùn)行,那么,這種處理方法顯然只能得到一 個錯誤的運(yùn)行結(jié)果。 發(fā)明內(nèi)容本發(fā)明實(shí)施例提供跨平臺的字節(jié)序處理方法和裝置,解決現(xiàn)有技術(shù)處理表 示多字節(jié)數(shù)據(jù)的字節(jié)碼時,在字節(jié)序不同的平臺上直接運(yùn)行字節(jié)碼而導(dǎo)致結(jié)果 錯誤的問題。
本發(fā)明實(shí)施例提供的一種跨平臺的字節(jié)序處理方法,包括 對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處理,所述多字節(jié)數(shù)據(jù)包括第一類型數(shù) 據(jù)和第二類型數(shù)據(jù),所述第一類型數(shù)據(jù)為16位整型數(shù)據(jù)或32位整型數(shù)據(jù),所述 第二類型數(shù)據(jù)為64位整型數(shù)據(jù)、單精度浮點(diǎn)數(shù)據(jù)或雙精度浮點(diǎn)數(shù)據(jù);
若所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼經(jīng)過預(yù)處理后轉(zhuǎn)換成表示單字節(jié)數(shù)據(jù)的 字節(jié)碼,則運(yùn)行所述表示單字節(jié)數(shù)據(jù)的字節(jié)碼,否則,按照預(yù)處理平臺的字節(jié) 序和運(yùn)行平臺的字節(jié)序相同與否調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié)序以還原所述多 字節(jié)數(shù)據(jù)。
本發(fā)明實(shí)施例提供的一種跨平臺的字節(jié)序處理裝置,包括編譯平臺和運(yùn)行 平臺,所述編譯平臺和運(yùn)行平臺分立,其中,
所述編譯平臺包括預(yù)處理模塊,用于對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處 理,所述多字節(jié)數(shù)據(jù)包括第一類型數(shù)據(jù)和第二類型數(shù)據(jù),第一類型數(shù)據(jù)為16 位整型數(shù)據(jù)或32位整型數(shù)據(jù),所述第二類型數(shù)據(jù)為64位整型數(shù)據(jù)、單精度浮點(diǎn) 數(shù)據(jù)或雙精度浮點(diǎn)數(shù)據(jù);
所述運(yùn)行平臺包括執(zhí)行模塊,用于若所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼經(jīng)過所 述預(yù)處理模塊預(yù)處理后轉(zhuǎn)換成表示單字節(jié)數(shù)據(jù)的字節(jié)碼時,直接運(yùn)行所述表示 單字節(jié)數(shù)據(jù)的字節(jié)碼,否則,按照預(yù)處理平臺的字節(jié)序和運(yùn)行平臺的字節(jié)序相 同與否調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié)序以還原所述多字節(jié)數(shù)據(jù)。
本發(fā)明實(shí)施例提供的一種跨平臺的字節(jié)序處理方法,包括
對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處理以得到表示單字節(jié)數(shù)據(jù)的字節(jié)碼, 所述多字節(jié)數(shù)包括16位整型數(shù)據(jù)、32位整型數(shù)據(jù)、64位整形數(shù)據(jù)、單精度浮點(diǎn) 數(shù)據(jù)或雙精度浮點(diǎn)數(shù)據(jù);
運(yùn)行所述表示單字節(jié)數(shù)據(jù)的字節(jié)碼。
本發(fā)明實(shí)施例提供一種跨平臺的字節(jié)序處理裝置,包括編譯平臺和運(yùn)行平 臺,所述編譯平臺和運(yùn)行平臺分立,其中,所述編譯平臺包括預(yù)處理模塊,用于對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處
理以得到表示單字節(jié)數(shù)據(jù)的字節(jié)碼,所述多字節(jié)數(shù)據(jù)包括16位整型數(shù)據(jù)、32 位整型數(shù)據(jù)、64位整形數(shù)據(jù)、單精度浮點(diǎn)數(shù)據(jù)或雙精度浮點(diǎn)數(shù)據(jù);
所述運(yùn)行平臺包括運(yùn)行模塊,用于運(yùn)行經(jīng)過所述預(yù)處理模塊處理后得到的 表示單字節(jié)數(shù)據(jù)的字節(jié)碼。
本發(fā)明實(shí)施例提供的一種跨平臺的字節(jié)序處理方法,包括對表示多字節(jié) 數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處理以使所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼中包含預(yù)處理平 臺的字節(jié)序,所述多字節(jié)數(shù)包括16位整型數(shù)據(jù)、32位整型數(shù)據(jù)、64位整形數(shù)據(jù)、 單精度浮點(diǎn)數(shù)據(jù)或雙精度浮點(diǎn)數(shù)據(jù);
按照預(yù)處理平臺的字節(jié)序和運(yùn)行平臺的字節(jié)序相同與否調(diào)整所述多字節(jié) 數(shù)據(jù)的字節(jié)序以還原所述多字節(jié)數(shù)據(jù)。
本發(fā)明實(shí)施例提供的一種跨平臺的字節(jié)序處理裝置,包括編譯平臺和運(yùn)行 平臺,所述編譯平臺和運(yùn)行平臺分立,其中,
所述編譯平臺包括預(yù)編譯模塊,用于對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處 理以使所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼中包含預(yù)處理平臺的字節(jié)序,所述多字節(jié) 數(shù)包括16位整型數(shù)據(jù)、32位整型數(shù)據(jù)、64位整形數(shù)據(jù)、單精度浮點(diǎn)數(shù)據(jù)或雙精 度浮點(diǎn)數(shù)據(jù);
所述運(yùn)行平臺包括調(diào)整模塊,用于按照預(yù)處理平臺的字節(jié)序和運(yùn)行平臺的 字節(jié)序相同與否調(diào)整經(jīng)過所述預(yù)編譯模塊處理的多字節(jié)數(shù)據(jù)的字節(jié)序以還原 所述多字節(jié)數(shù)據(jù)。。
本發(fā)明實(shí)施例提供的一種字節(jié)碼運(yùn)行平臺,包括
接收模塊,用于接收表示多字節(jié)數(shù)據(jù)的字節(jié)碼,所述字節(jié)碼包含對所述字 節(jié)碼進(jìn)行預(yù)處理的預(yù)處理平臺的字節(jié)序;
調(diào)整模塊,用于按照運(yùn)行平臺的字節(jié)序和所述預(yù)處理平臺的字節(jié)序相同與 否調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié)序以還原所述多字節(jié)數(shù)據(jù)。
在本發(fā)明實(shí)施例中,通過預(yù)處理平臺的預(yù)處理以使表示多字節(jié)數(shù)據(jù)的字節(jié) 碼分解成表示單字節(jié)數(shù)據(jù)的字節(jié)碼或在表示多字節(jié)數(shù)據(jù)的字節(jié)碼中添加預(yù)處 理平臺的字節(jié)序,在運(yùn)行平臺直接運(yùn)行所述表示單字節(jié)數(shù)據(jù)的字節(jié)碼或?qū)⑺龆嘧止?jié)數(shù)據(jù)的字節(jié)序調(diào)整為與所述運(yùn)行平臺的字節(jié)序相同。由于將表示多字節(jié) 數(shù)據(jù)的字節(jié)碼分解成表示單字節(jié)數(shù)據(jù)的字節(jié)碼,與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)際 上規(guī)避了不同字節(jié)序的平臺在運(yùn)行同 一字節(jié)碼時因字節(jié)序問題導(dǎo)致的錯誤,與 此同時,在運(yùn)行平臺將多字節(jié)數(shù)據(jù)的字節(jié)序調(diào)整到與運(yùn)行平臺的字節(jié)序相同, 可以將所述多字節(jié)數(shù)據(jù)正確保存于運(yùn)行平臺,便于后續(xù)正確使用所述多字節(jié)數(shù) 據(jù)。
圖l是本發(fā)明實(shí)施例一提供的跨平臺的字節(jié)序處理方法基本流程示意圖; 圖2A是本發(fā)明實(shí)施例二提供的預(yù)處理平臺和運(yùn)行平臺的其中一種字節(jié)序 示意圖2B是本發(fā)明實(shí)施例二提供的預(yù)處理平臺和運(yùn)行平臺的其中一種字節(jié)序 示意圖2C是本發(fā)明實(shí)施例二提供的預(yù)處理平臺和運(yùn)行平臺的其中一種字節(jié)序 示意圖3是本發(fā)明實(shí)施例三提供的跨平臺的字節(jié)序處理方法基本流程示意圖; 圖4是本發(fā)明實(shí)施例四提供的跨平臺的字節(jié)序處理方法基本流程示意圖; 圖5A是本發(fā)明實(shí)施例五提供的預(yù)處理平臺和運(yùn)行平臺的其中 一種字節(jié)序 示意圖5B是本發(fā)明實(shí)施例五提供的預(yù)處理平臺和運(yùn)行平臺的其中一種字節(jié)序 示意圖5C是本發(fā)明實(shí)施例五提供的預(yù)處理平臺和運(yùn)行平臺的其中 一種字節(jié)序 示意圖6是本發(fā)明實(shí)施例六提供的跨平臺的字節(jié)序處理裝置基本邏輯結(jié)構(gòu)示意
圖7是本發(fā)明實(shí)施例七提供的跨平臺的字節(jié)序處理裝置基本邏輯結(jié)構(gòu)示意
圖8是本發(fā)明實(shí)施例八提供的跨平臺的字節(jié)序處理裝置基本邏輯結(jié)構(gòu)示意
10圖9是本發(fā)明實(shí)施例九提供的 一種字節(jié)碼運(yùn)行平臺基本邏輯結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清 楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是 全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造 性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí) 施例提供跨平臺的字節(jié)序處理方法和相應(yīng)的跨平臺的字節(jié)序處理裝置。以下分 別進(jìn)行詳細(xì)說明。請參閱圖1,本發(fā)明實(shí)施例一提供的跨平臺的字節(jié)序處理方法基本流程,包括步驟S101,對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處理。在本實(shí)施例中,可以將多字節(jié)數(shù)據(jù)分為第一類型數(shù)據(jù)和第二類型數(shù)據(jù),第 一類型數(shù)據(jù)為16位整型數(shù)據(jù)或32位整型數(shù)據(jù),第二類型數(shù)據(jù)為64位整型數(shù)據(jù)、 單精度浮點(diǎn)數(shù)據(jù)或雙精度浮點(diǎn)數(shù)據(jù)。對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處理包 括生成表示多字節(jié)數(shù)據(jù)的字節(jié)碼;如果表示多字節(jié)數(shù)據(jù)的字節(jié)碼是表示第一類 型數(shù)據(jù)的字節(jié)碼,則對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處理進(jìn)一步包括將表示第一類型數(shù)據(jù)的字節(jié)碼分解為表示單字節(jié)數(shù)據(jù)的字節(jié)碼。分解的方法可以是對第一類型數(shù)據(jù)的二進(jìn)制表示進(jìn)行左右移位,例如,對 一個表示32位整型數(shù)據(jù)(用ival表示)的字節(jié)碼分解為表示單字節(jié)數(shù)據(jù)的字節(jié) 碼, 一種表示其分解方法的編譯器編譯代碼如下*dst++ = (uint8) ((ival 24)&0xFF);*dst++ = (uint8) ((ival》16)&0xFF);*dst++ = (uint8) ((ival 8)&0xFF);*dst++ = (uint8) (ival&0xFF);上述代碼基于C語言,本領(lǐng)域的技術(shù)人員可以理解其含義表示的方法,不 做贅述。對于表示第二類型數(shù)據(jù)的字節(jié)碼,在平臺的機(jī)器字長不是較長(例如,機(jī)器字長為16位或32位的平臺),可以采取不同于表示第一類型數(shù)據(jù)的字節(jié)碼的 預(yù)處理方法,包括生成表示第二類型數(shù)據(jù)的字節(jié)碼,例如,生成一個表示64位整型數(shù)據(jù)(用 value表示)的字節(jié)碼方法的編譯器編譯代碼如下*dst++ = JSC_OP—CONST—INT64;sval=(char*)&value;for(j=0;j<8;j++){*dst++ = *sval++;上述代碼基于C語言,本領(lǐng)域的技術(shù)人員可以理解其含義表示的方法,不 做贅述。之后進(jìn)一步包括在表示第二類型數(shù)據(jù)的字節(jié)碼中添加預(yù)處理平臺的字節(jié)序。 在本發(fā)明實(shí)施例中,預(yù)處理平臺可以是執(zhí)行編譯過程的服務(wù)器或生成表示 第二類型數(shù)據(jù)的字節(jié)碼的平臺。在表示第二類型數(shù)據(jù)的字節(jié)碼中添加預(yù)處理平 臺的字節(jié)序原因在于預(yù)處理平臺的字節(jié)序可能與字節(jié)碼運(yùn)行平臺的字節(jié)序不從而作出相應(yīng)的操作。在表示第二類型數(shù)據(jù)的字節(jié)碼中添加預(yù)處理平臺的字節(jié) 序可以通過例如在表示第二類型數(shù)據(jù)的字節(jié)碼中添加說明或標(biāo)識預(yù)處理平臺的字節(jié)序的一段代碼、數(shù)值或一個參數(shù)來完成。步驟S102,若所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼經(jīng)過預(yù)處理后轉(zhuǎn)換成表示單字 節(jié)數(shù)據(jù)的字節(jié)碼,則運(yùn)行所述表示單字節(jié)數(shù)據(jù)的字節(jié)碼,否則,按照預(yù)處理平 臺的字節(jié)序和運(yùn)行平臺的字節(jié)序相同與否調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié)序以還 原所述多字節(jié)數(shù)據(jù)。如前所述,對于表示第一類型數(shù)據(jù)的字節(jié)碼,在經(jīng)過步驟S101的預(yù)處理后, 實(shí)際上分解成了多個表示單字節(jié)數(shù)據(jù)的字節(jié)碼,例如, 一個表示16位整型數(shù)據(jù) 的字節(jié)碼分解成2個表示單字節(jié)數(shù)據(jù)的字節(jié)碼, 一個表示32位整型數(shù)據(jù)的字節(jié)碼分解成4個表示單字節(jié)數(shù)據(jù)的字節(jié)碼。由于字節(jié)序是針對多字節(jié)而言,因此, 可以直接運(yùn)行所述表示單字節(jié)數(shù)據(jù)的字節(jié)碼,還原多字節(jié)數(shù)據(jù)。例如,與步驟S101中表示32位整型數(shù)據(jù)(用ival表示)的字節(jié)碼分解為表示單字節(jié)數(shù)據(jù)的字 節(jié)碼相應(yīng), 一種還原32位整型數(shù)據(jù)的代碼如下value = (uint32) ((pc
《24) | (pc[1]《16) | (pc[2]《8) | (pc[3]));pc[O]、 pc[l]、 pc[2]和pc[3]表示單字節(jié)數(shù)據(jù),代碼基于C語言,本領(lǐng)域的技 術(shù)人員可以理解其含義表示的方法,不做贅述。。從以上方案說明中可知,對于表示第一類型數(shù)據(jù)的字節(jié)碼,由于在預(yù)處理 過程中就已經(jīng)將表示多字節(jié)數(shù)據(jù)的字節(jié)碼分解成了表示單字節(jié)數(shù)據(jù)的字節(jié)碼; 而字節(jié)序是針對多字節(jié)而言,因此,與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例規(guī)避了由 于平臺的字節(jié)序不同而直接保存導(dǎo)致的字節(jié)序問題。對于表示第二類型數(shù)據(jù)的字節(jié)碼,由于在其中添加了預(yù)處理平臺的字節(jié) 序,在運(yùn)行平臺運(yùn)行表示第二類型數(shù)據(jù)的字節(jié)碼時,通過以下方式解決字節(jié)序 問題51021, 將表示第二類型數(shù)據(jù)的字節(jié)碼直接復(fù)制到運(yùn)行平臺的內(nèi)存中; 直接復(fù)制(例如,通過內(nèi)存直接復(fù)制)意味著表示第二類型數(shù)據(jù)的字節(jié)碼臺的字節(jié)序是大端字節(jié)序,則表示第二類型數(shù)據(jù)的字節(jié)碼直接復(fù)制到運(yùn)行平臺 的內(nèi)存中時,其存放的方法應(yīng)該是第二類型數(shù)據(jù)的高位字節(jié)存放于該段內(nèi)存的 低地址內(nèi)存單元,低位字節(jié)存放于該段內(nèi)存的高地址內(nèi)存單元,此時并不考慮 運(yùn)行平臺的字節(jié)序是大端字節(jié)序還是小端字節(jié)序。51022, 讀取預(yù)處理平臺的字節(jié)序;51023, 比較運(yùn)行平臺的字節(jié)序和所述預(yù)處理平臺的字節(jié)序; 在本實(shí)施例中,運(yùn)行平臺為運(yùn)行表示第二類型數(shù)據(jù)的字節(jié)碼的平臺,例如,虛擬機(jī)所在的平臺、機(jī)頂盒或客戶端等等。運(yùn)行平臺和預(yù)處理平臺的分立意味 著兩個平臺的字節(jié)序可能不同,這是比較運(yùn)行平臺的字節(jié)序和所述預(yù)處理平臺 的字節(jié)序的最直接原因。51024, 若所述運(yùn)行平臺的字節(jié)序和所述預(yù)處理平臺的字節(jié)序相同,保持13所述第二類型數(shù)據(jù)的字節(jié)序,否則,調(diào)整所述第二類型數(shù)據(jù)的字節(jié)序以使所述 第二類型數(shù)據(jù)的字節(jié)序與所述運(yùn)行平臺的字節(jié)序相同。如前所述,字節(jié)序一般分為大端字節(jié)序和小端字節(jié)序,因此,比較的結(jié)果 和處理方法如下表一所示。預(yù)處理平臺字節(jié)序運(yùn)行平臺字節(jié)序比較結(jié)果調(diào)整方案大端字節(jié)序大端字節(jié)序字節(jié)序相同不調(diào)整,直接使用大端字節(jié)序小端字節(jié)序字節(jié)序不同高低位對調(diào)小端字節(jié)序大端字節(jié)序字節(jié)序不同高低位對調(diào)小端字節(jié)序小端字節(jié)序字節(jié)序相同不調(diào)整,直接使用表一舉例而言,若預(yù)處理平臺(編譯器所在平臺)的字節(jié)序和運(yùn)行平臺(虛擬機(jī)所 在平臺)的字節(jié)序都為大端字節(jié)序,且64位整型數(shù)據(jù)為F8F7F6F5F4F3F2F1構(gòu)成(其中,F(xiàn)i至Fs分別表示一個字節(jié),且Fs最高位字節(jié),F(xiàn)i是最低位字節(jié)),那么,在 F8F7F6F5F4F3F2F1被直接復(fù)制到運(yùn)行平臺的內(nèi)存中時,F(xiàn)s已經(jīng)存放在該段內(nèi)存的 低地址內(nèi)存單元,F(xiàn)i已經(jīng)存放在該段內(nèi)存的高地址內(nèi)存單元,如圖2A所示,存 放方式與運(yùn)行平臺的大端字節(jié)序相符,因此,F(xiàn)8F7F6F5F4F3F2F1 在內(nèi)存中的存放方式不需要調(diào)整,即,不需要調(diào)整F8F7F6F5F4F3F2F1的字節(jié)序。 而若預(yù)處理平臺(編譯器所在平臺)的字節(jié)序和運(yùn)行平臺(虛擬機(jī)所在平 臺)的字節(jié)序不同,例如,預(yù)處理平臺的字節(jié)序?yàn)樾《俗止?jié)序,運(yùn)行平臺的字 節(jié)序?yàn)榇蠖俗止?jié)序,64位整型數(shù)據(jù)為F8F7F6F5F4F3F2F1構(gòu)成(其中,F(xiàn)i至Fs分別 表示一個字節(jié),且Fs最高位字節(jié),F(xiàn)i是最低位字節(jié)),即,F(xiàn)8F7F6F5F4F3F2F1在 預(yù)處理平臺的內(nèi)存中的存放方式為Fs存放在存一段內(nèi)存的高地址內(nèi)存單元, Fi存放在該段內(nèi)存的低地址內(nèi)存單元。當(dāng)F8F7F6F5F4F3F2F1被直接復(fù)制到運(yùn)行平臺的內(nèi)存中時,F(xiàn)8F7F6F5F4F3F2Fl在運(yùn)4亍平臺的內(nèi)存中的存方文方式仍然為F8存放在運(yùn)行平臺 一段內(nèi)存的高地址內(nèi)存單元,F(xiàn)i存放在該段內(nèi)存的低地址內(nèi)存 單元,如圖2B所示。這種存放方式顯然與運(yùn)行平臺的大端字節(jié)序不符,因此, 需要對F8F7F6FsF4F3F2F1在內(nèi)存中的存放方式作出調(diào)整,調(diào)整方式是將Fs存放在一段內(nèi)存的低地址內(nèi)存單元,F(xiàn)l存放在該段內(nèi)的高地址內(nèi)存單元,如圖2C所示, 經(jīng)過字節(jié)序調(diào)整后,F(xiàn)8F7F6F5F4F3F2Fl的字節(jié)序與所述運(yùn)行平臺的字節(jié)序相同, 才算是將F8F7F6F5F4F3F2Fl還原,在后續(xù)使用F8F7F6F5F4F3F2Fl時才不致出4晉。
當(dāng)然,對于機(jī)器字長比較長的平臺(例如,機(jī)器字長為64位的平臺),可 以采用本發(fā)明實(shí)施例三提供的跨平臺的字節(jié)序處理方法,基本流程請參閱圖3, 包括
步驟S301,對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處理以得到表示單字節(jié)數(shù)據(jù) 的字節(jié)碼。
在本實(shí)施例中,多字節(jié)數(shù)據(jù)包括16位整型數(shù)據(jù)、32位整型數(shù)據(jù)、64位整形 數(shù)據(jù)、單精度浮點(diǎn)數(shù)據(jù)或雙精度浮點(diǎn)數(shù)據(jù)。
對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處理包括 生成表示多字節(jié)數(shù)據(jù)的字節(jié)碼;
將表示多字節(jié)數(shù)據(jù)的字節(jié)碼分解為表示單字節(jié)數(shù)據(jù)的字節(jié)碼。 分解的方法可以是對多字節(jié)數(shù)據(jù)的二進(jìn)制表示進(jìn)行左右移位,例如,對一
個表示64位整型數(shù)據(jù)(用ival表示)的字節(jié)碼分解為表示單字節(jié)數(shù)據(jù)的字節(jié)碼,
一種表示其分解方法的編譯器編譯代碼如下
*dst++ =(uint8)((ival》56)&0xFF)
*dst++ =(uint8)((ival 48)&0xFF)
*dst++ =(uint8)((ival》40)&0xFF)
*dst++ =(uint8)((ival 32)&0xFF)
*dst++ =(uint8)((ival 24)&0xFF)
*dst++ =(uint8)((ival》16)綠FF)
*dst++ =(uint8)((ival》8)綠FF);
*dst++ =(uint8)(ival綠FF);
上述代碼基于c語言,本領(lǐng)域的技術(shù)人員可以理解其含義表示的方法,不
做贅述。
步驟S302,運(yùn)行所述表示單字節(jié)數(shù)據(jù)的字節(jié)碼。
在經(jīng)過步驟S101的預(yù)處理后,實(shí)際上分解成了多個表示單字節(jié)數(shù)據(jù)的字節(jié)碼,例如, 一個表示32位整型數(shù)據(jù)的字節(jié)碼分解成4個表示單字節(jié)數(shù)據(jù)的字節(jié) 碼, 一個表示64位整型數(shù)據(jù)的字節(jié)碼分解成8個表示單字節(jié)數(shù)據(jù)的字節(jié)碼。由 于字節(jié)序是針對多字節(jié)而言,因此,可以直接運(yùn)行所述表示單字節(jié)數(shù)據(jù)的字節(jié) 碼,還原多字節(jié)數(shù)據(jù)。例如,與步驟S301中表示64位整型數(shù)據(jù)(用ival表示) 的字節(jié)碼分解為表示單字節(jié)數(shù)據(jù)的字節(jié)碼相應(yīng), 一種還原64位整型數(shù)據(jù)的代碼 ^口下
value = (uint32) ((pc
《56) | (pc[1]《48) | (pc[2]《40) | (pc[3]《32) | (pc[4]《24) I (pc[5]《16) I (pc[6]《8) | (pc[7]));
pc[O]、 pc[l]、 pc[2]、 pc[3]、 pc[4]、 pc[5]、 pc[6]和pc[7]表示單字節(jié)數(shù)據(jù), 代碼基于C語言,本領(lǐng)域的技術(shù)人員可以理解其含義表示的方法,不做贅述。
從以上方案說明中可知,對于表示多字節(jié)數(shù)據(jù)的字節(jié)碼,由于在預(yù)處理過 程中就已經(jīng)將表示多字節(jié)數(shù)據(jù)的字節(jié)碼分解成了表示單字節(jié)數(shù)據(jù)的字節(jié)碼;而 字節(jié)序是針對多字節(jié)而言,因此,與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例規(guī)避了由于 平臺的字節(jié)序不同而直接保存導(dǎo)致的字節(jié)序問題。
對于平臺的機(jī)器字長不是較長(例如,機(jī)器字長為16位或32位的平臺), 還可以采用本發(fā)明實(shí)施例四提供的跨平臺的字節(jié)序處理方法,基本流程請參閱 圖4,包括
步驟S401,對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處理以使所述表示多字節(jié)數(shù) 據(jù)的字節(jié)碼中包含預(yù)處理平臺的字節(jié)序。
在本實(shí)施例中,多字節(jié)數(shù)包括16位整型數(shù)據(jù)、32位整型數(shù)據(jù)、64位整形數(shù) 據(jù)、單精度浮點(diǎn)數(shù)據(jù)或雙精度浮點(diǎn)數(shù)據(jù)。對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處 理包括
生成表示表示多字節(jié)數(shù)據(jù)的字節(jié)碼,例如,生成一個表示64位整型數(shù)據(jù)(用 value表示)的字節(jié)碼方法的編譯器編譯代碼如下 *dst++ = JSC—OP—CONST—INT64; sval=(char*)&value; for(j=0;j<8;j++){
*dst++ = *sval++;上述代碼基于C語言,本領(lǐng)域的技術(shù)人員可以理解其含義表示的方法,不 做贅述。
之后進(jìn)一步包括
在表示多字節(jié)數(shù)據(jù)的字節(jié)碼中添加預(yù)處理平臺的字節(jié)序。 在本發(fā)明實(shí)施例中,預(yù)處理平臺可以是執(zhí)行編譯過程的服務(wù)器或生成表示 多字節(jié)數(shù)據(jù)的字節(jié)碼的平臺。在表示多字節(jié)數(shù)據(jù)的字節(jié)碼中添加預(yù)處理平臺的 字節(jié)序原因在于預(yù)處理平臺的字節(jié)序可能與字節(jié)碼運(yùn)行平臺的字節(jié)序不同,
作出相應(yīng)的操作。在表示多字節(jié)數(shù)據(jù)的字節(jié)碼中添加預(yù)處理平臺的字節(jié)序可以
的一段代碼、數(shù)值或一個參數(shù)來完成。
述多字節(jié)數(shù)據(jù)的字節(jié)序以還原所述多字節(jié)數(shù)據(jù)。
對于表示多字節(jié)數(shù)據(jù)的字節(jié)碼,由于在其中添加了預(yù)處理平臺的字節(jié)序, 在運(yùn)行平臺運(yùn)行表示多字節(jié)數(shù)據(jù)的字節(jié)碼時,通過以下方式解決字節(jié)序問題
54021, 將表示多字節(jié)數(shù)據(jù)的字節(jié)碼直接復(fù)制到運(yùn)行平臺的內(nèi)存中。 直接復(fù)制(例如,通過內(nèi)存直接復(fù)制)意味著表示多字節(jié)數(shù)據(jù)的字節(jié)碼在
的字節(jié)序是大端字節(jié)序,則表示多字節(jié)數(shù)據(jù)的字節(jié)碼直接復(fù)制到運(yùn)行平臺的內(nèi) 存中時,其存放的方法應(yīng)該是多字節(jié)數(shù)據(jù)的高位字節(jié)存放于該段內(nèi)存的低地址
內(nèi)存單元,低位字節(jié)存放于該段內(nèi)存的高地址內(nèi)存單元,此時并不考慮運(yùn)行平 臺的字節(jié)序是大端字節(jié)序還是小端字節(jié)序。
54022, 讀取預(yù)處理平臺的字節(jié)序。
54023, 比較運(yùn)行平臺的字節(jié)序和所述預(yù)處理平臺的字節(jié)序。 在本實(shí)施例中,運(yùn)行平臺為運(yùn)行表示多字節(jié)數(shù)據(jù)的字節(jié)碼的平臺,例如,
虛擬機(jī)所在的平臺、機(jī)頂盒或客戶端等等。運(yùn)行平臺和預(yù)處理平臺的分立意味 著兩個平臺的字節(jié)序可能不同,這是比較運(yùn)行平臺的字節(jié)序和所述預(yù)處理平臺的字節(jié)序的最直接原因。
S4024,若所述運(yùn)行平臺的字節(jié)序和所述預(yù)處理平臺的字節(jié)序相同,保持 所述多字節(jié)數(shù)據(jù)字節(jié)序,否則,調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié)序以使所述多字節(jié) 數(shù)據(jù)的字節(jié)序與所述運(yùn)行平臺的字節(jié)序相同。
如前所述,字節(jié)序一般分為大端字節(jié)序和小端字節(jié)序,因此,比4交的結(jié)果 和處理方法如下表二所示。
預(yù)處理平臺字節(jié)序運(yùn)行平臺字節(jié)序比較結(jié)果調(diào)整方案
大端字節(jié)序大端字節(jié)序字節(jié)序相同不調(diào)整,直接使用
大端字節(jié)序小端字節(jié)序字節(jié)序不同高低位對調(diào)
小端字節(jié)序大端字節(jié)序字節(jié)序不同高低位對調(diào)
小端字節(jié)序小端字節(jié)序字節(jié)序相同不調(diào)整,直4t使用
表二
舉例而言,若預(yù)處理平臺(編譯器所在平臺)的字節(jié)序和運(yùn)行平臺(虛擬 機(jī)所在平臺)的字節(jié)序都為大端字節(jié)序,且64位整型數(shù)據(jù)為F8F7F6F5F4F3F2F1
構(gòu)成(其中,F(xiàn)i至Fs分別表示一個字節(jié),且F8最高位字節(jié),F(xiàn)i是最低位字節(jié)), 那么,在F8F7F6F5F4F3F2F1被直接復(fù)制到運(yùn)行平臺的內(nèi)存中時,F(xiàn)s已經(jīng)存放在該 段內(nèi)存的低地址內(nèi)存單元,F(xiàn)i已經(jīng)存放在該段內(nèi)存的高地址內(nèi)存單元,如圖5 的圖5A所示,存放方式與運(yùn)行平臺的大端字節(jié)序相符,因此,F(xiàn)8F7F6F5F4F3F2F1 在內(nèi)存中的存放方式不需要調(diào)整,即,不需要調(diào)整F8F7F6F5F4F3F2F1的字節(jié)序。 而若預(yù)處理平臺(編譯器所在平臺)的字節(jié)序和運(yùn)行平臺(虛擬機(jī)所在平 臺)的字節(jié)序不同,例如,預(yù)處理平臺的字節(jié)序?yàn)樾《俗止?jié)序,運(yùn)行平臺的字 節(jié)序?yàn)榇蠖俗止?jié)序,64位整型數(shù)據(jù)為F8F7F6F5F4F3F2F1構(gòu)成(其中,F(xiàn)i至Fs分別 表示一個字節(jié),且Fs最高位字節(jié),F(xiàn)i是最低位字節(jié)),即,F(xiàn)8F7F6F5F4F3F2F1在 預(yù)處理平臺的內(nèi)存中的存放方式為Fs存放在存一段內(nèi)存的高地址內(nèi)存單元, Fi存放在該段內(nèi)存的低地址內(nèi)存單元。當(dāng)F8F7F6F5F4F3F2F1被直接復(fù)制到運(yùn)行平 臺的內(nèi)存中時,F(xiàn)8F7F6F5F4F3F2F1在運(yùn)行平臺的內(nèi)存中的存放方式仍然為Fs 存放在運(yùn)行平臺一段內(nèi)存的高地址內(nèi)存單元,F(xiàn)i存放在該段內(nèi)存的低地址內(nèi)存
18因此,需要對F8F7F6FsF4F3F2Fi在內(nèi)存中的存放方式作出調(diào)整,調(diào)整方式是將Fs 存放在一段內(nèi)存的低地址內(nèi)存單元,F(xiàn)i存放在該段內(nèi)的高地址內(nèi)存單元,如圖 5的圖5C所示,經(jīng)過字節(jié)序調(diào)整后,才算是將F8F7F6F5F4F3F2F1還原,在后續(xù)使 用時才不致出錯。
請參閱圖6,本發(fā)明實(shí)施例六提供的跨平臺的字節(jié)序處理裝置基本邏輯結(jié) 構(gòu)示意圖,該跨平臺的字節(jié)序處理裝置與本發(fā)明實(shí)施例一提供的if爭平臺的字節(jié) 序處理方法相應(yīng)。為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。該裝 置包括分立的預(yù)處理平臺61和運(yùn)行平臺62,其中
預(yù)處理平臺61包括預(yù)處理模塊611,用于對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行 預(yù)處理,其包括
字節(jié)碼生成單元6111,用于生成所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼;
第一預(yù)處理單元6112,用于將所述字節(jié)碼生成單元6111生成的表示第一類 型數(shù)據(jù)的字節(jié)碼分解為表示單字節(jié)數(shù)據(jù)的字節(jié)碼;
第二預(yù)處理單元6113,用于在所述字節(jié)碼生成單元6111生成的表示第二類 型數(shù)據(jù)的字節(jié)碼中添加預(yù)處理平臺61的字節(jié)序,所述預(yù)處理平臺61為生成所述 表示第二類型數(shù)據(jù)的字節(jié)碼的平臺或編譯平臺;
其中,多字節(jié)數(shù)據(jù)包括第一類型數(shù)據(jù)和第二類型數(shù)據(jù),第一類型數(shù)據(jù)為16 位整型數(shù)據(jù)或32位整型數(shù)據(jù),所述第二類型數(shù)據(jù)為64位整型數(shù)據(jù)、單精度浮點(diǎn) 數(shù)據(jù)或雙精度浮點(diǎn)數(shù)據(jù)。
運(yùn)行平臺62包括執(zhí)行模塊621,用于若所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼經(jīng)過 所述預(yù)處理模塊預(yù)處理后轉(zhuǎn)換成表示單字節(jié)數(shù)據(jù)的字節(jié)碼時,直接運(yùn)行所述表 示單字節(jié)數(shù)據(jù)的字節(jié)碼,否則,按照預(yù)處理平臺61的字節(jié)序和運(yùn)行平臺62的字
節(jié)序相同與否調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié)序以還原所述多字節(jié)數(shù)據(jù)。執(zhí)行模塊 621包括
第 一執(zhí)行單元6211,用于運(yùn)行所述第 一預(yù)處理單元6112分解后的單字節(jié)數(shù) 據(jù)的字節(jié)碼;
第二執(zhí)行單元6212,用于將表示第二類型數(shù)據(jù)的字節(jié)碼直接復(fù)制到運(yùn)行平臺的內(nèi)存中后,讀取所述第二預(yù)處理單元6113添加的預(yù)處理平臺61的字節(jié)序并
比較所述運(yùn)行平臺62的字節(jié)序和所述預(yù)處理平臺61的字節(jié)序,在所述預(yù)處理平 臺61的字節(jié)序和所述運(yùn)行平臺62的字節(jié)序相同時,保持所述第二類型數(shù)據(jù)的字 節(jié)序,在所述預(yù)處理平臺61的字節(jié)序和所述運(yùn)行平臺62的字節(jié)序不同時,調(diào)整 所述第二類型數(shù)據(jù)的字節(jié)序以使所述第二類型數(shù)據(jù)的字節(jié)序與所述運(yùn)行平臺 62的字節(jié)序相同。
預(yù)處理模塊611及其包含的字節(jié)碼生成單元6111、第一預(yù)處理單元6112、 第二預(yù)處理單元6113和執(zhí)行模塊621及其包含的第 一執(zhí)行單元6211 、第二執(zhí)行 單元6212的功能或運(yùn)作已在前文相應(yīng)的方法實(shí)施例中說明,此處不再贅述。
從以上方案說明中可知,對于表示第一類型數(shù)據(jù)的字節(jié)碼,由于在預(yù)處理 過程中就已經(jīng)將表示多字節(jié)數(shù)據(jù)的字節(jié)碼分解成了表示單字節(jié)數(shù)據(jù)的字節(jié)碼; 而字節(jié)序是針對多字節(jié)而言,因此,與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例規(guī)避了由 于平臺的字節(jié)序不同而直接保存導(dǎo)致的字節(jié)序問題。對于表示第二類型數(shù)據(jù)的 字節(jié)碼,通過在運(yùn)行平臺端調(diào)整第二類型數(shù)據(jù)的字節(jié)序,使得第二類型數(shù)據(jù)的 字節(jié)序與所述運(yùn)行平臺的字節(jié)序相同,如此,在后續(xù)使用第二類型數(shù)據(jù)不會因
為字節(jié)序的問題而出錯。
請參閱圖7,本發(fā)明實(shí)施例七提供的跨平臺的字節(jié)序處理裝置基本邏輯結(jié) 構(gòu)示意圖,該跨平臺的字節(jié)序處理裝置與本發(fā)明實(shí)施例二提供的跨平臺的字節(jié) 序處理方法相應(yīng)。為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。該裝 置包括分立的預(yù)處理平臺71和運(yùn)行平臺72,其中
預(yù)處理平臺71包括預(yù)處理模塊711,用于對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行 預(yù)處理,所述多字節(jié)數(shù)據(jù)包括16位整型數(shù)據(jù)、32位整型數(shù)據(jù)、64位整形數(shù)據(jù)、 單精度浮點(diǎn)數(shù)據(jù)或雙精度浮點(diǎn)數(shù)據(jù)。預(yù)處理模塊711包括
字節(jié)碼生成單元7111,用于生成所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼;
分解單元7112,用于將所述字節(jié)碼生成單元7111生成的表示多字節(jié)數(shù)據(jù)的 字節(jié)碼分解為多個表示單字節(jié)數(shù)據(jù)的字節(jié)碼。
運(yùn)行平臺72包括運(yùn)行模塊721,用于運(yùn)行經(jīng)過所述預(yù)處理模塊處理后得到 的表示單字節(jié)數(shù)據(jù)的字節(jié)碼。預(yù)處理模塊711及其包含的字節(jié)碼生成單元7111、分解單元7112和運(yùn)行模 塊721的功能或運(yùn)作已在前文相應(yīng)的方法實(shí)施例中說明,此處不再贅述。
從以上方案說明中可知,對于表示多字節(jié)數(shù)據(jù)的字節(jié)碼,由于在預(yù)處理過 程中就已經(jīng)將表示多字節(jié)數(shù)據(jù)的字節(jié)碼分解成了表示單字節(jié)數(shù)據(jù)的字節(jié)碼;而 字節(jié)序是針對多字節(jié)而言,因此,與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例規(guī)避了由于 平臺的字節(jié)序不同而直接保存導(dǎo)致的字節(jié)序問題。
請參閱圖8,本發(fā)明實(shí)施例八提供的跨平臺的字節(jié)序處理裝置基本邏輯結(jié) 構(gòu)示意圖,該跨平臺的字節(jié)序處理裝置與本發(fā)明實(shí)施例三提供的跨平臺的字節(jié) 序處理方法相應(yīng)。為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。該裝 置包括分立的預(yù)處理平臺81和運(yùn)行平臺82,其中
預(yù)處理平臺81包括預(yù)編譯模塊811,用于對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行 預(yù)處理以使所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼中包含預(yù)處理平臺81的字節(jié)序,所述 多字節(jié)數(shù)包括16位整型數(shù)據(jù)、32位整型數(shù)據(jù)、64位整形數(shù)據(jù)、單精度浮點(diǎn)數(shù)據(jù) 或雙精度浮點(diǎn)數(shù)據(jù)。預(yù)編譯^t塊811包括
字節(jié)碼生成單元8111,用于生成所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼;
預(yù)處理單元8112,用于在所述字節(jié)碼生成單元8111生成的表示多字節(jié)數(shù)據(jù) 的字節(jié)碼中添加預(yù)處理平臺的字節(jié)序,所述預(yù)處理平臺81為與所述運(yùn)行平臺82
運(yùn)行平臺82包括調(diào)整模塊821 ,用于按照預(yù)處理平臺81的字節(jié)序和運(yùn)行平 臺82的字節(jié)序相同與否調(diào)整所述預(yù)編譯模塊處理的多字節(jié)數(shù)據(jù)的字節(jié)序以還 原所述多字節(jié)數(shù)據(jù)。其包括
執(zhí)行單元8211,用于將所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼直接復(fù)制到運(yùn)行平臺 82的內(nèi)存中,讀取所述預(yù)處理單元8112添加的預(yù)處理平臺81的字節(jié)序并比較所 述運(yùn)行平臺82的字節(jié)序和所述預(yù)處理平臺81的字節(jié)序,在所述預(yù)處理平臺81 的字節(jié)序和所述運(yùn)行平臺82的字節(jié)序相同時,保持所述多字節(jié)數(shù)據(jù)的字節(jié)序, 在所述預(yù)處理平臺81的字節(jié)序和所述運(yùn)行平臺82的字節(jié)序不同時,調(diào)整所述多 字節(jié)數(shù)據(jù)的字節(jié)序以使所述多字節(jié)數(shù)據(jù)的字節(jié)序與所述運(yùn)行平臺82的字節(jié)序 相同。
21預(yù)編譯模塊811及其包含的字節(jié)碼生成單元8111、預(yù)處理單元8112和調(diào)整
模塊821及其包含的執(zhí)行單元8211的功能或運(yùn)作已在前文相應(yīng)的方法實(shí)施例中 說明,此處不再贅述。
由以上方案的說明可知,對于多字節(jié)數(shù)據(jù)的字節(jié)碼,通過在運(yùn)行平臺端調(diào) 整多字節(jié)數(shù)據(jù)的字節(jié)序,使得多字節(jié)數(shù)據(jù)的字節(jié)序與所述運(yùn)行平臺的字節(jié)序相 同,如此,在后續(xù)使用多字節(jié)數(shù)據(jù)不會因?yàn)樽止?jié)序的問題而出錯。
請參閱圖9,本發(fā)明實(shí)施例九提供的 一種字節(jié)碼運(yùn)行平臺基本邏輯結(jié)構(gòu)示 意圖,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。該字節(jié)碼運(yùn)行平 臺包括
接收模塊901,用于接收表示多字節(jié)數(shù)據(jù)的字節(jié)碼,所述字節(jié)碼包含對所 述字節(jié)碼進(jìn)行預(yù)處理的預(yù)處理平臺的字節(jié)序;
調(diào)整模塊902,用于按照運(yùn)行平臺的字節(jié)序和所述預(yù)處理平臺的字節(jié)序相 同與否調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié)序以還原所述多字節(jié)數(shù)據(jù),其包括
執(zhí)行單元9021,用于將所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼直接復(fù)制到運(yùn)行平臺 的內(nèi)存中,讀取所述接收模塊901接收的預(yù)處理平臺的字節(jié)序并比較所述運(yùn)行 平臺的字節(jié)序和所述預(yù)處理平臺的字節(jié)序,在所述預(yù)處理平臺的字節(jié)序和所述 運(yùn)行平臺的字節(jié)序相同時,保持所述多字節(jié)數(shù)據(jù)的字節(jié)序,在所述預(yù)處理平臺 的字節(jié)序和所述運(yùn)行平臺的字節(jié)序不同時,調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié)序以使 所述多字節(jié)數(shù)據(jù)的字節(jié)序與所述運(yùn)行平臺的字節(jié)序相同。
由以上方案的說明可知,對于多字節(jié)數(shù)據(jù)的字節(jié)碼,通過在運(yùn)行平臺端調(diào) 整多字節(jié)數(shù)提的字節(jié)序,使得多字節(jié)數(shù)據(jù)的字節(jié)序與所述運(yùn)行平臺的字節(jié)序相 同,如此,在后續(xù)使用多字節(jié)數(shù)據(jù)不會因?yàn)樽止?jié)序的問題而出錯。
驟是可以通過程序來指令相關(guān)的硬件來完成,該程序可以存儲于一計(jì)算機(jī)可讀 存儲介質(zhì)中,存儲介質(zhì)可以包括只讀存儲器(ROM, Read Only Memory )、 隨機(jī)存取存儲器(RAM, Random Access Memory )、磁盤或光盤等。
以上對本發(fā)明實(shí)施例所提供的跨平臺的字節(jié)序處理方法和裝置進(jìn)行了詳實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng) 域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會有 改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本發(fā)明的限制。
權(quán)利要求
1、一種跨平臺的字節(jié)序處理方法,其特征在于,包括對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處理,所述多字節(jié)數(shù)據(jù)包括第一類型數(shù)據(jù)和第二類型數(shù)據(jù),所述第一類型數(shù)據(jù)為16位整型數(shù)據(jù)或32位整型數(shù)據(jù),所述第二類型數(shù)據(jù)為64位整型數(shù)據(jù)、單精度浮點(diǎn)數(shù)據(jù)或雙精度浮點(diǎn)數(shù)據(jù);若所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼經(jīng)過預(yù)處理后轉(zhuǎn)換成表示單字節(jié)數(shù)據(jù)的字節(jié)碼,則運(yùn)行所述表示單字節(jié)數(shù)據(jù)的字節(jié)碼,否則,按照預(yù)處理平臺的字節(jié)序和運(yùn)行平臺的字節(jié)序相同與否調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié)序以還原所述多字節(jié)數(shù)據(jù)。
2、 如權(quán)利要求l所述跨平臺的字節(jié)序處理方法,其特征在于,所述對所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處理包括 生成表示多字節(jié)數(shù)據(jù)的字節(jié)碼;將所述表示第一類型數(shù)據(jù)的字節(jié)碼分解為表示單字節(jié)數(shù)據(jù)的字節(jié)碼。
3、 如權(quán)利要求2所述跨平臺的字節(jié)序處理方法,其特征在于,還包括 在所述表示第二類型數(shù)據(jù)的字節(jié)碼中添加預(yù)處理平臺的字節(jié)序,所述預(yù)處理平臺為生成所述表示第二類型數(shù)據(jù)的字節(jié)碼的平臺。
4、 如權(quán)利要求3所述跨平臺的字節(jié)序處理方法,其特征在于,所述按照預(yù) 處理平臺的字節(jié)序和運(yùn)行平臺的字節(jié)序相同與否調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié) 序以還原所述多字節(jié)數(shù)據(jù)包括將表示第二類型數(shù)據(jù)的字節(jié)碼直接復(fù)制到運(yùn)行平臺的內(nèi)存中; 讀取所述預(yù)處理平臺的字節(jié)序;比較所述運(yùn)行平臺的字節(jié)序和所述預(yù)處理平臺的字節(jié)序; 若所述運(yùn)行平臺的字節(jié)序和所述預(yù)處理平臺的字節(jié)序相同,保持所述第二類型數(shù)據(jù)的字節(jié)序,否則,調(diào)整所述第二類型數(shù)據(jù)的字節(jié)序以使所述第二類型數(shù)據(jù)的字節(jié)序與所述運(yùn)行平臺的字節(jié)序相同。
5、 一種跨平臺的字節(jié)序處理裝置,包括編譯平臺和運(yùn)行平臺,其特征在 于,所述預(yù)處理平臺和運(yùn)行平臺分立,其中,所述預(yù)處理平臺包括預(yù)處理模塊,用于對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù) 處理,所述多字節(jié)數(shù)據(jù)包括第一類型數(shù)據(jù)和第二類型數(shù)據(jù),第一類型數(shù)據(jù)為16位整型數(shù)據(jù)或32位整型數(shù)據(jù),所述第二類型數(shù)據(jù)為64位整型數(shù)據(jù)、單精度浮點(diǎn) 數(shù)據(jù)或雙精度浮點(diǎn)數(shù)據(jù);所述運(yùn)行平臺包括執(zhí)行模塊,用于若所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼經(jīng)過所 述預(yù)處理模塊預(yù)處理后轉(zhuǎn)換成表示單字節(jié)數(shù)據(jù)的字節(jié)碼時,直接運(yùn)行所述表示 單字節(jié)數(shù)據(jù)的字節(jié)碼,否則,按照預(yù)處理平臺的字節(jié)序和運(yùn)行平臺的字節(jié)序相 同與否調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié)序以還原所述多字節(jié)數(shù)據(jù)。
6、 如權(quán)利要求5所述跨平臺的字節(jié)序處理裝置,其特征在于,所述預(yù)處理 模塊包括字節(jié)碼生成單元,用于生成所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼; 第一預(yù)處理單元,用于將所述字節(jié)碼生成單元生成的表示第一類型數(shù)據(jù)的字節(jié)碼分解為表示單字節(jié)數(shù)據(jù)的字節(jié)碼第二預(yù)處理單元,用于在所述字節(jié)碼生成單元生成的表示第二類型數(shù)據(jù)的字節(jié)碼中添加預(yù)處理平臺的字節(jié)序,所述預(yù)處理平臺為生成所述表示第二類型數(shù)據(jù)的字節(jié)碼的平臺或編譯平臺。
7、 如權(quán)利要求6所述跨平臺的字節(jié)序處理裝置,其特征在于,所述執(zhí)行模 塊包括第 一執(zhí)行單元,用于運(yùn)行所述第 一預(yù)處理單元分解后的單字節(jié)數(shù)據(jù)的字節(jié)碼;第二執(zhí)行單元,用于將表示第二類型數(shù)據(jù)的字節(jié)碼直接復(fù)制到運(yùn)行平臺的 內(nèi)存中后,讀取所述第二預(yù)處理單元添加的預(yù)處理平臺的字節(jié)序并比較所述運(yùn) 行平臺的字節(jié)序和所述預(yù)處理平臺的字節(jié)序,在所述預(yù)處理平臺的字節(jié)序和所 述運(yùn)行平臺的字節(jié)序相同時,保持所述第二類型數(shù)據(jù)的字節(jié)序,在所述預(yù)處理 平臺的字節(jié)序和所述運(yùn)行平臺的字節(jié)序不同時,調(diào)整所述第二類型數(shù)據(jù)的字節(jié) 序以使所述第二類型數(shù)據(jù)的字節(jié)序與所述運(yùn)行平臺的字節(jié)序相同。
8、 一種跨平臺的字節(jié)序處理方法,其特征在于,包括 對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處理以得到表示單字節(jié)數(shù)據(jù)的字節(jié)碼,所述多字節(jié)數(shù)包括16位整型數(shù)據(jù)、32位整型數(shù)據(jù)、64位整形數(shù)據(jù)、單精度浮點(diǎn) 數(shù)據(jù)或雙精度浮點(diǎn)數(shù)據(jù);運(yùn)行所述表示單字節(jié)數(shù)據(jù)的字節(jié)碼。
9、 如權(quán)利要求8所述跨平臺的字節(jié)序處理方法,其特征在于,所述對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處理以得到表示單字節(jié)數(shù)據(jù)的字節(jié)碼具體為 生成所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼;將所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼分解為多個表示單字節(jié)數(shù)據(jù)的字節(jié)碼。
10、 一種跨平臺的字節(jié)序處理裝置,包括預(yù)處理平臺和運(yùn)行平臺,其特征 在于,所述預(yù)處理平臺和運(yùn)行平臺分立,其中,所述預(yù)處理平臺包括預(yù)處理模塊,用于對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù) 處理以得到表示單字節(jié)數(shù)據(jù)的字節(jié)碼,所述多字節(jié)數(shù)據(jù)包括16位整型數(shù)據(jù)、32 位整型數(shù)據(jù)、64位整形數(shù)據(jù)、單精度浮點(diǎn)數(shù)據(jù)或雙精度浮點(diǎn)數(shù)據(jù);所述運(yùn)行平臺包括運(yùn)行模塊,用于運(yùn)行經(jīng)過所述預(yù)處理模塊處理后得到的 表示單字節(jié)數(shù)據(jù)的字節(jié)碼。
11、 如權(quán)利要求10所述跨平臺的字節(jié)序處理裝置,其特征在于,所述預(yù)處 理模塊包括字節(jié)碼生成單元,用于生成所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼; 分解單元,用于將所述字節(jié)碼生成單元生成的表示多字節(jié)數(shù)據(jù)的字節(jié)碼分 解為多個表示單字節(jié)數(shù)據(jù)的字節(jié)碼。
12、 一種跨平臺的字節(jié)序處理方法,其特征在于,包括 對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處理以使所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼中包含預(yù)處理平臺的字節(jié)序,所述多字節(jié)數(shù)包括16位整型數(shù)據(jù)、32位整型數(shù) 據(jù)、64位整形數(shù)據(jù)、單精度浮點(diǎn)數(shù)據(jù)或雙精度浮點(diǎn)數(shù)據(jù);按照預(yù)處理平臺的字節(jié)序和運(yùn)行平臺的字節(jié)序相同與否調(diào)整所述多字節(jié) 數(shù)據(jù)的字節(jié)序以還原所述多字節(jié)數(shù)據(jù)。
13、 如權(quán)利要求12所述跨平臺的字節(jié)序處理方法,其特征在于,所述對表 示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處理包括生成所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼;在所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼中添加預(yù)處理平臺的字節(jié)序。
14、 如權(quán)利要求13所述跨平臺的字節(jié)序處理方法,其特征在于,所述按照預(yù)處理平臺的字節(jié)序和運(yùn)行平臺的字節(jié)序相同與否調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié)序以還原所述多字節(jié)數(shù)據(jù)包括將所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼直接復(fù)制到運(yùn)行平臺的內(nèi)存中;讀取所述預(yù)處理平臺的字節(jié)序;比較所述運(yùn)行平臺的字節(jié)序和所述預(yù)處理平臺的字節(jié)序,所述運(yùn)行平臺為運(yùn)行所述表示表示多字節(jié)數(shù)據(jù)的字節(jié)碼的平臺;若所述運(yùn)行平臺的字節(jié)序和所述預(yù)處理平臺的字節(jié)序相同,保持所述多字 節(jié)數(shù)據(jù)的字節(jié)序,否則,調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié)序以使所述多字節(jié)數(shù)據(jù)的 字節(jié)序與所述運(yùn)行平臺的字節(jié)序相同。
15、 一種跨平臺的字節(jié)序處理裝置,包括預(yù)處理平臺和運(yùn)行平臺,其特征 在于,所述預(yù)處理平臺和運(yùn)行平臺分立,其中,所述預(yù)處理平臺包括預(yù)編譯模塊,用于對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù) 處理以使所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼中包含預(yù)處理平臺的字節(jié)序,所述多字 節(jié)數(shù)包括16位整型數(shù)據(jù)、32位整型數(shù)據(jù)、64位整形數(shù)據(jù)、單精度浮點(diǎn)數(shù)據(jù)或雙 精度浮點(diǎn)數(shù)據(jù);所述運(yùn)行平臺包括調(diào)整模塊,用于按照預(yù)處理平臺的字節(jié)序和運(yùn)行平臺的 字節(jié)序相同與否調(diào)整經(jīng)過所述預(yù)編譯模塊處理的多字節(jié)數(shù)據(jù)的字節(jié)序以還原 所述多字節(jié)數(shù)據(jù)。
16、 如權(quán)利要求15所述跨平臺的字節(jié)序處理裝置,其特征在于,所述預(yù)編 譯模塊包括字節(jié)碼生成單元,用于生成所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼;預(yù)處理單元,用于在所述字節(jié)碼生成單元生成的表示多字節(jié)數(shù)據(jù)的字節(jié)碼中添加預(yù)處理平臺的字節(jié)序,所述預(yù)處理平臺為與所述運(yùn)行平臺分立的編譯平臺或生成所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼的平臺。
17、 如權(quán)利要求16所述跨平臺的字節(jié)序處理裝置,其特征在于,所述調(diào)整 模塊包括執(zhí)行單元,用于將所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼直接復(fù)制到運(yùn)行平臺的內(nèi) 存中,讀取所述預(yù)處理單元添加的預(yù)處理平臺的字節(jié)序并比較所述運(yùn)行平臺的字節(jié)序和所述預(yù)處理平臺的字節(jié)序,在所述預(yù)處理平臺的字節(jié)序和所述運(yùn)行平 臺的字節(jié)序相同時,保持所述多字節(jié)數(shù)據(jù)的字節(jié)序,在所述預(yù)處理平臺的字節(jié) 序和所述運(yùn)行平臺的字節(jié)序不同時,調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié)序以使所述多字節(jié)數(shù)據(jù)的字節(jié)序與所述運(yùn)行平臺的字節(jié)序相同。
18、 一種字節(jié)碼運(yùn)行平臺,其特征在于,包括接收模塊,用于接收表示多字節(jié)數(shù)據(jù)的字節(jié)碼,所述字節(jié)碼包含對所述字節(jié)碼進(jìn)行預(yù)處理的預(yù)處理平臺的字節(jié)序;調(diào)整模塊,用于按照運(yùn)行平臺的字節(jié)序和所述預(yù)處理平臺的字節(jié)序相同與 否調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié)序以還原所述多字節(jié)數(shù)據(jù)。
19、 如權(quán)利要求18所述字節(jié)碼運(yùn)行平臺,其特征在于,所述調(diào)整模塊包括: 執(zhí)行單元,用于將所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼直接復(fù)制到運(yùn)行平臺的內(nèi)節(jié)序和所述預(yù)處理平臺的字節(jié)序,在所述預(yù)處理平臺的字節(jié)序和所述運(yùn)行平臺的字節(jié)序相同時,保持所述多字節(jié)數(shù)據(jù)的字節(jié)序,在所述預(yù)處理平臺的字節(jié)序 和所述運(yùn)行平臺的字節(jié)序不同時,調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié)序以使所述多字節(jié)數(shù)據(jù)的字節(jié)序與所述運(yùn)行平臺的字節(jié)序相同。
全文摘要
本發(fā)明實(shí)施例提供一種跨平臺的字節(jié)序處理方法,以解決處理表示多字節(jié)數(shù)據(jù)的字節(jié)碼時在字節(jié)序不同的平臺上直接運(yùn)行字節(jié)碼而導(dǎo)致結(jié)果錯誤的問題。該方法包括對表示多字節(jié)數(shù)據(jù)的字節(jié)碼進(jìn)行預(yù)處理;若所述表示多字節(jié)數(shù)據(jù)的字節(jié)碼經(jīng)過預(yù)處理后轉(zhuǎn)換成表示單字節(jié)數(shù)據(jù)的字節(jié)碼,則運(yùn)行所述表示單字節(jié)數(shù)據(jù)的字節(jié)碼,否則,按照預(yù)處理平臺的字節(jié)序和運(yùn)行平臺的字節(jié)序相同與否調(diào)整所述多字節(jié)數(shù)據(jù)的字節(jié)序以還原所述多字節(jié)數(shù)據(jù)。本發(fā)明規(guī)避了不同字節(jié)序的平臺在運(yùn)行同一字節(jié)碼時因字節(jié)序問題導(dǎo)致的錯誤,與此同時,在運(yùn)行平臺將多字節(jié)數(shù)據(jù)的字節(jié)序調(diào)整到與運(yùn)行平臺的字節(jié)序相同,可以將所述多字節(jié)數(shù)據(jù)正確保存于運(yùn)行平臺,便于后續(xù)正確使用所述多字節(jié)數(shù)據(jù)。
文檔編號G06F9/45GK101645017SQ20091016194
公開日2010年2月10日 申請日期2009年9月7日 優(yōu)先權(quán)日2009年9月7日
發(fā)明者徐佳宏, 朱呂亮, 程伯欽 申請人:深圳市茁壯網(wǎng)絡(luò)股份有限公司