本發(fā)明涉及應(yīng)用框架領(lǐng)域,尤其涉及一種程序運行方法、裝置、設(shè)備及介質(zhì)。
背景技術(shù):
1、javascript語言運行時是一種特殊的軟件,主要用作嵌入式軟件和設(shè)備當中,如各種手表手環(huán),傳感器設(shè)備等,它讀取javascript語言,將其編譯成內(nèi)部格式,并運行這些代碼。然而在上述設(shè)備中,往往受限于設(shè)備體積,致使該設(shè)備的處理器性能較差,運行內(nèi)存較低,致使運行javascript語言時執(zhí)行效率較低,進而影響用戶體驗。
技術(shù)實現(xiàn)思路
1、本發(fā)明提供一種程序運行方法、裝置、設(shè)備及介質(zhì),用以解決相關(guān)技術(shù)中由于設(shè)備的處理器性能較差,運行內(nèi)存較低,致使運行javascript語言時執(zhí)行效率較低,進而影響用戶體驗的技術(shù)問題。
2、第一方面,本發(fā)明實施例提供一種程序運行方法,該方法包括:
3、確定在設(shè)備端運行目標程序時,獲取目標程序的源代碼;
4、利用源代碼生成目標程序?qū)?yīng)的編譯碼;
5、將編譯碼發(fā)送至設(shè)備端,以使設(shè)備端根據(jù)編譯碼運行目標程序。
6、在一種可能實施的方式中,本發(fā)明實施例提供的方法中,編譯碼包括可執(zhí)行代碼和字節(jié)碼,則利用源代碼生成目標程序?qū)?yīng)的編譯碼,包括:
7、判斷源代碼的數(shù)據(jù)類型;
8、將確定類型的源代碼編譯為可執(zhí)行代碼,可執(zhí)行代碼為設(shè)備端能夠直接執(zhí)行的代碼;
9、將無法確定類型的源代碼編譯為字節(jié)碼,字節(jié)碼為在設(shè)備端邊解釋邊執(zhí)行的代碼。
10、在一種可能實施的方式中,本發(fā)明實施例提供的方法中,判斷源代碼的數(shù)據(jù)類型,包括:
11、根據(jù)源代碼的內(nèi)部變量與外部參數(shù)判斷源代碼的數(shù)據(jù)類型。
12、在一種可能實施的方式中,本發(fā)明實施例提供的方法中,字節(jié)碼包括解釋字節(jié)碼和特殊字節(jié)碼,則將無法確定類型的源代碼編譯為字節(jié)碼,包括:
13、將無法確定類型的源代碼編譯為解釋字節(jié)碼;
14、將存在多個疑似類型的源代碼編譯為特殊字節(jié)碼,疑似類型為源代碼可能的數(shù)據(jù)類型。
15、第二方面,本發(fā)明實施例提供另一種程序運行方法,該方法包括:
16、確定運行目標程序時,從服務(wù)器端獲取目標程序?qū)?yīng)的編譯碼;
17、基于編譯碼,運行目標程序。
18、在一種可能實施的方式中,本發(fā)明實施例提供的方法中,編譯碼包括可執(zhí)行代碼和字節(jié)碼,則基于編譯碼,運行目標程序,包括:
19、執(zhí)行可執(zhí)行代碼;
20、解釋并執(zhí)行字節(jié)碼。
21、在一種可能實施的方式中,本發(fā)明實施例提供的方法中,字節(jié)碼包括解釋字節(jié)碼和特殊字節(jié)碼,則解釋并執(zhí)行字節(jié)碼,包括:
22、以解釋模式解釋解釋字節(jié)碼;
23、以預(yù)編譯模式解釋特殊字節(jié)碼,解釋模式和預(yù)編譯模式使用相同的中央處理器寄存器分配規(guī)則、相同的函數(shù)調(diào)用規(guī)則和相同的異常處理規(guī)則。
24、在一種可能實施的方式中,本發(fā)明實施例提供的方法中,編譯碼包括可執(zhí)行代碼和字節(jié)碼,則利用源代碼生成目標。
25、第三方面,本發(fā)明實施例提供一種程序運行裝置,包括:
26、第一獲取單元,用于確定在設(shè)備端運行目標程序時,獲取目標程序的源代碼;
27、處理單元,用于利用源代碼生成目標程序?qū)?yīng)的編譯碼;
28、發(fā)送單元,用于將編譯碼發(fā)送至設(shè)備端,以使設(shè)備端根據(jù)編譯碼運行目標程序。
29、在一種可能實施的方式中,本發(fā)明實施例提供的裝置中,編譯碼包括可執(zhí)行代碼和字節(jié)碼,則處理單元具體用于:
30、判斷源代碼的數(shù)據(jù)類型;
31、將確定類型的源代碼編譯為可執(zhí)行代碼,可執(zhí)行代碼為設(shè)備端能夠直接執(zhí)行的代碼;
32、將無法確定類型的源代碼編譯為字節(jié)碼,字節(jié)碼為在設(shè)備端邊解釋邊執(zhí)行的代碼。
33、在一種可能實施的方式中,本發(fā)明實施例提供的裝置中,處理單元具體用于:
34、根據(jù)源代碼的內(nèi)部變量與外部參數(shù)判斷源代碼的數(shù)據(jù)類型。
35、在一種可能實施的方式中,本發(fā)明實施例提供的裝置中,字節(jié)碼包括解釋字節(jié)碼和特殊字節(jié)碼,則處理單元具體用于:
36、將無法確定類型的源代碼編譯為解釋字節(jié)碼;
37、將存在多個疑似類型的源代碼編譯為特殊字節(jié)碼,疑似類型為源代碼可能的數(shù)據(jù)類型。
38、第四方面,本發(fā)明實施例提供另一種程序運行裝置,包括:
39、第二獲取單元,用于確定運行目標程序時,從服務(wù)器端獲取目標程序?qū)?yīng)的編譯碼;
40、運行單元,用于基于編譯碼,運行目標程序。
41、在一種可能實施的方式中,本發(fā)明實施例提供的裝置中,編譯碼包括可執(zhí)行代碼和字節(jié)碼,則運行單元具體用于:
42、執(zhí)行可執(zhí)行代碼;
43、解釋并執(zhí)行字節(jié)碼。
44、在一種可能實施的方式中,本發(fā)明實施例提供的裝置中,字節(jié)碼包括解釋字節(jié)碼和特殊字節(jié)碼,則運行單元具體用于:
45、以解釋模式解釋解釋字節(jié)碼;
46、以預(yù)編譯模式解釋特殊字節(jié)碼,解釋模式和預(yù)編譯模式使用相同的中央處理器寄存器分配規(guī)則、相同的函數(shù)調(diào)用規(guī)則和相同的異常處理規(guī)則。
47、第五方面,本發(fā)明實施例提供一種電子設(shè)備,包括:至少一個處理器、至少一個存儲器以及存儲在存儲器中的計算機程序指令,當計算機程序指令被處理器執(zhí)行時實現(xiàn)如本發(fā)明實施例第一、二方面所提供的方法。
48、第六方面,本發(fā)明實施例提供一種計算機可讀存儲介質(zhì),其上存儲有計算機程序指令,當計算機程序指令被處理器執(zhí)行時實現(xiàn)如本發(fā)明實施例第一、二方面所提供的方法。
49、本發(fā)明實施例中,首先確定在設(shè)備端運行目標程序時,獲取目標程序的源代碼,然后利用源代碼生成目標程序?qū)?yīng)的編譯碼,最后將編譯碼發(fā)送至設(shè)備端,以使設(shè)備端根據(jù)編譯碼運行目標程序。與相關(guān)技術(shù)相比,將代碼的編譯和運行分離開,在服務(wù)器上編譯代碼,從而能夠在不占用過多性能的前提下大幅提升代碼的運行速度,進而提升用戶體驗。
1.一種程序運行方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的程序運行方法,其特征在于,所述編譯碼包括可執(zhí)行代碼和字節(jié)碼,則所述利用所述源代碼生成所述目標程序?qū)?yīng)的編譯碼,包括:
3.根據(jù)權(quán)利要求2所述的程序運行方法,其特征在于,所述判斷所述源代碼的數(shù)據(jù)類型,包括:
4.根據(jù)權(quán)利要求3所述的程序運行方法,其特征在于,所述字節(jié)碼包括解釋字節(jié)碼和特殊字節(jié)碼,則所述將無法確定類型的源代碼編譯為所述字節(jié)碼,包括:
5.一種程序運行方法,其特征在于,包括:
6.根據(jù)權(quán)利要求5所述的程序運行方法,其特征在于,所述編譯碼包括可執(zhí)行代碼和字節(jié)碼,則所述基于所述編譯碼,運行所述目標程序,包括:
7.根據(jù)權(quán)利要求6所述的程序運行方法,其特征在于,所述字節(jié)碼包括解釋字節(jié)碼和特殊字節(jié)碼,則所述解釋并執(zhí)行所述字節(jié)碼,包括:
8.一種程序運行裝置,其特征在于,包括:
9.一種程序運行裝置,其特征在于,包括:
10.一種電子設(shè)備,其特征在于,包括:至少一個處理器、至少一個存儲器以及存儲在所述存儲器中的計算機程序指令,當所述計算機程序指令被所述處理器執(zhí)行時實現(xiàn)如權(quán)利要求1-4或5-7中任一項所述的方法。
11.一種計算機可讀存儲介質(zhì),其上存儲有計算機程序指令,其特征在于,當所述計算機程序指令被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1-4或5-7中任一項所述的方法。