两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

程序初始化的方法及裝置的制造方法

文檔序號(hào):10593862閱讀:203來(lái)源:國(guó)知局
程序初始化的方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種程序初始化的方法及裝置,本發(fā)明首先解析目標(biāo)文件,其中目標(biāo)文件中包含所要調(diào)用的初始化函數(shù)的名稱;之后將解析目標(biāo)文件得到的解析結(jié)果進(jìn)行匹配,得到滿足預(yù)定條件的初始化函數(shù)的名稱;再將滿足預(yù)定條件的初始化函數(shù)的名稱寫入目的文件;最后在程序初始化過(guò)程中調(diào)用目的文件中存儲(chǔ)的各個(gè)所述初始化函數(shù),完成程序的初始化過(guò)程。本發(fā)明可以有效的達(dá)到簡(jiǎn)化初始化程序,易于擴(kuò)展、閱讀和理解程序的目的,同時(shí)可以將各個(gè)初始化函數(shù)自動(dòng)化的集中到一起,不需要人為地添加大量的初始化函數(shù)。
【專利說(shuō)明】
程序初始化的方法及裝置
技術(shù)領(lǐng)域
[0001 ]本發(fā)明計(jì)算機(jī)領(lǐng)域,更具體設(shè)及一種程序初始化的方法及裝置。
【背景技術(shù)】
[0002] 程序在初始化的過(guò)程中,通常會(huì)調(diào)用很多初始化函數(shù),每個(gè)初始化函數(shù)之間有時(shí) 并沒有非常大的依賴關(guān)系,也就是說(shuō),運(yùn)些初始化函數(shù)的執(zhí)行先后順序是無(wú)關(guān)緊要的。
[0003] 現(xiàn)有技術(shù)通常的做法是寫一個(gè)函數(shù),通過(guò)該函數(shù)去調(diào)用各個(gè)初始化函數(shù),例如寫 一個(gè)函數(shù)init_all,通過(guò)它調(diào)用多個(gè)初始化函數(shù):
[0004]
[0005] 運(yùn)種方法會(huì)導(dǎo)致init_all過(guò)于賄腫不利于擴(kuò)展和閱讀。
[0006] 現(xiàn)有技術(shù)中,比如Iinux內(nèi)核通常使用初始化模塊module_init的方法,將初始化 函數(shù)作為module_init的輸入?yún)?shù),最終在Iinux內(nèi)核啟動(dòng)時(shí),會(huì)調(diào)用到初始化函數(shù)。該方法 解決了上述程序賄腫、不利于擴(kuò)展的技術(shù)問(wèn)題,但是該方法過(guò)于復(fù)雜,維護(hù)起來(lái)比較難,閱 讀起來(lái)也比較費(fèi)勁。

【發(fā)明內(nèi)容】

[0007] 本發(fā)明解決的技術(shù)問(wèn)題是如何在程序初始化過(guò)程中簡(jiǎn)化調(diào)用初始化函數(shù)的程序, 同時(shí)有利于初始化程序的擴(kuò)展和閱讀。
[000引為了解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種程序初始化的方法,所述方法包括W 下步驟:
[0009] 解析目標(biāo)文件,其中所述目標(biāo)文件中包含所要調(diào)用的初始化函數(shù)的名稱;
[0010] 將解析所述目標(biāo)文件得到的解析結(jié)果進(jìn)行匹配,得到滿足預(yù)定條件的初始化函數(shù) 的名稱;
[0011] 將滿足所述預(yù)定條件的初始化函數(shù)的名稱寫入目的文件;
[0012] 程序初始化過(guò)程中調(diào)用所述目的文件中存儲(chǔ)的各個(gè)所述初始化函數(shù)。
[0013] 優(yōu)選地,解析所述目標(biāo)文件之前,所述方法還包括通過(guò)編譯形成所述目標(biāo)文件的 步驟。
[0014] 優(yōu)選地,所述方法還包括將各個(gè)滿足所述預(yù)定條件的初始化函數(shù)的名稱W數(shù)組元 素的方式存儲(chǔ)在所述目的文件中的步驟。
[0015] 優(yōu)選地,所述方法還包括利用循環(huán)的方式調(diào)用所述目的文件中存儲(chǔ)的各個(gè)所述初 始化函數(shù)的步驟。
[0016] 優(yōu)選地,所述目標(biāo)文件為多個(gè)。
[0017] 優(yōu)選地,所述方法還包括根據(jù)函數(shù)的名稱,將解析所述目標(biāo)文件得到的解析結(jié)果 進(jìn)行匹配,得到滿足預(yù)定條件的初始化函數(shù)的名稱的步驟。
[0018] -種程序初始化的裝置,所述裝置包括解析模塊、匹配模塊、存儲(chǔ)模塊W及初始化 模塊;
[0019] 所述解析模塊用于解析目標(biāo)文件,其中所述目標(biāo)文件中包含所要調(diào)用的初始化函 數(shù)的名稱;
[0020] 所述匹配模塊用于將解析所述目標(biāo)文件得到的解析結(jié)果進(jìn)行匹配,得到滿足預(yù)定 條件的初始化函數(shù)的名稱;
[0021] 所述存儲(chǔ)模塊用于將滿足所述預(yù)定條件的初始化函數(shù)的名稱存儲(chǔ)到目的文件 中;、
[0022] 所述初始化模塊用于在程序初始化過(guò)程中調(diào)用所述目的文件中存儲(chǔ)的各個(gè)所述 初始化函數(shù)。
[0023] 優(yōu)選地,所述目的文件W數(shù)組的方式存儲(chǔ)各個(gè)滿足所述預(yù)定條件的初始化函數(shù)的 名稱。
[0024] 優(yōu)選地,所述初始化模塊還包括調(diào)用子模塊,所述調(diào)用子模塊用于利用循環(huán)的方 式調(diào)用所述目的文件中存儲(chǔ)的各個(gè)所述初始化函數(shù)。
[0025] 優(yōu)選地,所述目標(biāo)文件為多個(gè)。
[0026] 本發(fā)明提供了一種程序初始化的方法及裝置,本發(fā)明首先解析目標(biāo)文件,其中目 標(biāo)文件中包含所要調(diào)用的初始化函數(shù)的名稱;之后將解析目標(biāo)文件得到的解析結(jié)果進(jìn)行匹 配,得到滿足預(yù)定條件的初始化函數(shù)的名稱;再將滿足預(yù)定條件的初始化函數(shù)的名稱寫入 目的文件;最后在程序初始化過(guò)程中調(diào)用目的文件中存儲(chǔ)的各個(gè)所述初始化函數(shù),完成程 序的初始化過(guò)程。本發(fā)明可W有效的達(dá)到簡(jiǎn)化初始化程序,易于擴(kuò)展、閱讀和理解程序的目 的,同時(shí)可W將各個(gè)初始化函數(shù)自動(dòng)化的集中到一起,不需要人為地在類似init_all添加 大量的初始化函數(shù)。
【附圖說(shuō)明】
[0027] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可W 根據(jù)運(yùn)些附圖獲得其他的附圖。
[0028] 圖1是本發(fā)明的程序初始化的方法的流程圖。
【具體實(shí)施方式】
[0029] 下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。W下實(shí)施例用于說(shuō)明本發(fā) 明,但不能用來(lái)限制本發(fā)明的范圍。
[0030] -種程序初始化的方法,如圖I所示,所述方法包括W下步驟:
[0031] S1、解析模塊解析目標(biāo)文件,其中所述目標(biāo)文件中包含所要調(diào)用的初始化函數(shù)的 名稱;優(yōu)選地,此步驟之前所述方法還包括通過(guò)編譯形成所述目標(biāo)文件的步驟,通常編譯得 到的目標(biāo)文件或者成為Ob j文件,或者.O文件等等;
[0032] S2、匹配模塊將解析所述目標(biāo)文件得到的解析結(jié)果進(jìn)行匹配,得到滿足預(yù)定條件 的初始化函數(shù)的名稱;優(yōu)選地,此步驟中根據(jù)函數(shù)的名稱將解析所述目標(biāo)文件得到的解析 結(jié)果進(jìn)行匹配;
[0033] S3、存儲(chǔ)模塊將滿足所述預(yù)定條件的初始化函數(shù)的名稱寫入目的文件,其中初始 化函數(shù)的名稱為指針型數(shù)據(jù);優(yōu)選地,此步驟中將各個(gè)滿足所述預(yù)定條件的初始化函數(shù)的 名稱W指針數(shù)組元素的方式存儲(chǔ)在所述目的文件中,即目的文件中將各個(gè)初始化函數(shù)的名 稱存儲(chǔ)在指針數(shù)組中;
[0034] S4、程序初始化過(guò)程中調(diào)用所述目的文件中存儲(chǔ)的各個(gè)所述初始化函數(shù),優(yōu)選地, 此步驟中利用for循環(huán)的方式調(diào)用所述目的文件中存儲(chǔ)的各個(gè)所述初始化函數(shù);
[0035] 其中目標(biāo)文件可W是多個(gè),將從多個(gè)目標(biāo)文件匹配得到的初始化函數(shù)均存儲(chǔ)在目 的文件中。
[0036] 上述方法可W用在但不限于Liunx程序的初始化。
[0037] 上述方法可W有效的達(dá)到簡(jiǎn)化初始化程序,易于擴(kuò)展、閱讀和理解程序的目的,同 時(shí)可W將各個(gè)初始化函數(shù)自動(dòng)化的集中到一起,不需要人為地在類似init_all添加大量的 初始化函數(shù)。
[0038] 上述步驟S1-S3在Linux中可W利用下面的命令實(shí)現(xiàn):
[0039] nm{0BJ_AIX} |awk-f 址init〉init.c是得到的一個(gè)目的文件
[0040] 運(yùn)里面nm是Iinux的一個(gè)命令,用來(lái)解析編譯出來(lái)的目標(biāo)文件。{0BJ_ALU是所有 目標(biāo)文件的集合。nm{0BJ_ALL}會(huì)得到S列類似下面的數(shù)據(jù),其中第S列就是函數(shù)名,
[004。 例如;
[0042] 12:M5678T AAAA-Init
[0043] abcel2:M5T BBBBJnitMain
[0044] awk-f mkinit說(shuō)明要用mkinit文件里面的描述方法來(lái)解析皿{0BJ_ALL}執(zhí)行后得 到的結(jié)果,例如解析上面的兩行。
[0045] Mnit.c說(shuō)明是要將awk-f址init的解析結(jié)果輸出到init.c。
[0046] 其中,址init文件內(nèi)容如下,:
[0047] BEGINU = 0}#初始化變量j = 0,運(yùn)一步是在解析目標(biāo)文件集合之前 [004引 /_InitMain$/{init_main[j++]=$3;}
[0049] 上面命令表示匹配目標(biāo)文件中的W_InitMain結(jié)尾的函數(shù)43即是函數(shù)名,將其寫 入到變量init_main中
[0050] 上面命令就是將前面皿{0BJ_ALU得到的結(jié)果,進(jìn)行匹配,匹配到WJnitMain為 結(jié)尾的函數(shù)后,將該行中的第S個(gè)數(shù)據(jù)寫入到init_main中,前面在說(shuō)明nm{0BJ_ALU時(shí)候 提到過(guò),第=列就是函數(shù)名。
[0051 ]之后編譯init. C,然后將0BJ_A化和init.O-起鏈接,最終成為需要的程序。當(dāng)程 序初始化時(shí),會(huì)執(zhí)行到ini t. C中的函數(shù),通過(guò)f or循環(huán)來(lái)執(zhí)行指針數(shù)組中的各個(gè)成員,就達(dá) 到了初始化的目的。
[0052] 對(duì)應(yīng)于上述方法本發(fā)明還公開了一種程序初始化的裝置,所述裝置包括解析模 塊、匹配模塊、存儲(chǔ)模塊W及初始化模塊。所述解析模塊用于解析目標(biāo)文件,其中所述目標(biāo) 文件中包含所要調(diào)用的初始化函數(shù)的名稱;所述匹配模塊用于將解析所述目標(biāo)文件得到的 解析結(jié)果進(jìn)行匹配,得到滿足預(yù)定條件的初始化函數(shù)的名稱;所述存儲(chǔ)模塊用于將滿足所 述預(yù)定條件的初始化函數(shù)的名稱存儲(chǔ)到目的文件中;、所述初始化模塊用于在程序初始化 過(guò)程中調(diào)用所述目的文件中存儲(chǔ)的各個(gè)所述初始化函數(shù)。
[0053] 其中所述目的文件W數(shù)組的方式存儲(chǔ)各個(gè)滿足所述預(yù)定條件的初始化函數(shù)的名 稱。
[0054] 進(jìn)一步地,所述初始化模塊還包括調(diào)用子模塊,所述調(diào)用子模塊用于利用循環(huán)的 方式調(diào)用所述目的文件中存儲(chǔ)的各個(gè)所述初始化函數(shù)。
[0055] 下面舉例來(lái)說(shuō)明上述方法或裝置的工作過(guò)程:
[0056] 假設(shè)有兩個(gè)文件a.c和b.c,a. C里面函數(shù)AA_Ini tMain,b.c里面有函數(shù)bb_ InitMain,當(dāng)編譯a.c和b.c后,得到目標(biāo)文件a.o和b.o,通過(guò)nm a.o b.o|awk-f mkinit〉 init.c進(jìn)行匹配,只查找^_1]1;[11曰;[]1結(jié)尾的函數(shù),并寫入到文件init.c中,init.c文件內(nèi) 容是:
[0化7]
[005引利用上述的程序可W得到目的文件init.c。程序初始化時(shí)通常會(huì)事先準(zhǔn)備一個(gè)文 件,通過(guò)for循環(huán)遍歷上面的指針數(shù)組init_main,運(yùn)樣就得到了里面的各個(gè)初始化函數(shù),然 后就能夠執(zhí)行運(yùn)些函數(shù)了,即實(shí)現(xiàn)各個(gè)初始化函數(shù)的調(diào)用。
[0059] W上實(shí)施方式僅用于說(shuō)明本發(fā)明,而非對(duì)本發(fā)明的限制。盡管參照實(shí)施例對(duì)本發(fā) 明進(jìn)行了詳細(xì)說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,對(duì)本發(fā)明的技術(shù)方案進(jìn)行各種組合、 修改或者等同替換,都不脫離本發(fā)明技術(shù)方案的精神和范圍,均應(yīng)涵蓋在本發(fā)明的權(quán)利要 求范圍當(dāng)中。
【主權(quán)項(xiàng)】
1. 一種程序初始化的方法,其特征在于,所述方法包括以下步驟: 解析目標(biāo)文件,其中所述目標(biāo)文件中包含所要調(diào)用的初始化函數(shù)的名稱; 將解析所述目標(biāo)文件得到的解析結(jié)果進(jìn)行匹配,得到滿足預(yù)定條件的初始化函數(shù)的名 稱; 將滿足所述預(yù)定條件的初始化函數(shù)的名稱寫入目的文件; 程序初始化過(guò)程中調(diào)用所述目的文件中存儲(chǔ)的各個(gè)所述初始化函數(shù)。2. 根據(jù)權(quán)利要求1中所述的方法,其特征在于,解析所述目標(biāo)文件之前,所述方法還包 括通過(guò)編譯形成所述目標(biāo)文件的步驟。3. 根據(jù)權(quán)利要求1中所述的方法,其特征在于,所述方法還包括將各個(gè)滿足所述預(yù)定條 件的初始化函數(shù)的名稱以指針數(shù)組元素的方式存儲(chǔ)在所述目的文件中的步驟。4. 根據(jù)權(quán)利要求3中所述的方法,其特征在于,所述方法還包括利用循環(huán)的方式調(diào)用所 述目的文件中存儲(chǔ)的各個(gè)所述初始化函數(shù)的步驟。5. 根據(jù)權(quán)利要求1中所述的方法,其特征在于,所述目標(biāo)文件為多個(gè)。6. 根據(jù)權(quán)利要求1中所述的方法,其特征在于,所述方法還包括根據(jù)函數(shù)的名稱,將解 析所述目標(biāo)文件得到的解析結(jié)果進(jìn)行匹配,得到滿足預(yù)定條件的初始化函數(shù)的名稱的步 驟。7. -種程序初始化的裝置,其特征在于,所述裝置包括解析模塊、匹配模塊、存儲(chǔ)模塊 以及初始化t旲塊; 所述解析模塊用于解析目標(biāo)文件,其中所述目標(biāo)文件中包含所要調(diào)用的初始化函數(shù)的 名稱; 所述匹配模塊用于將解析所述目標(biāo)文件得到的解析結(jié)果進(jìn)行匹配,得到滿足預(yù)定條件 的初始化函數(shù)的名稱; 所述存儲(chǔ)模塊用于將滿足所述預(yù)定條件的初始化函數(shù)的名稱存儲(chǔ)到目的文件中;、 所述初始化模塊用于在程序初始化過(guò)程中調(diào)用所述目的文件中存儲(chǔ)的各個(gè)所述初始 化函數(shù)。8. 根據(jù)權(quán)利要求7中所述的裝置,其特征在于,所述目的文件以指針數(shù)組的方式存儲(chǔ)各 個(gè)滿足所述預(yù)定條件的初始化函數(shù)的名稱。9. 根據(jù)權(quán)利要求7中所述的裝置,其特征在于,所述初始化模塊還包括調(diào)用子模塊,所 述調(diào)用子模塊用于利用循環(huán)的方式調(diào)用所述目的文件中存儲(chǔ)的各個(gè)所述初始化函數(shù)。10. 根據(jù)權(quán)利要求7中所述的裝置,其特征在于,所述目標(biāo)文件為多個(gè)。
【文檔編號(hào)】G06F9/445GK105955751SQ201610315887
【公開日】2016年9月21日
【申請(qǐng)日】2016年5月12日
【發(fā)明人】李鵬
【申請(qǐng)人】漢柏科技有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
大安市| 阳新县| 黄山市| 迭部县| 赤峰市| 宝鸡市| 广河县| 古浪县| 玛多县| 大足县| 始兴县| 栾川县| 尉犁县| 满洲里市| 宜兴市| 沅陵县| 穆棱市| 朝阳区| 定远县| 钟山县| 乾安县| 池州市| 郸城县| 福鼎市| 永川市| 盐城市| 肇东市| 六枝特区| 东乡| 图们市| 墨脱县| 包头市| 林州市| 乐至县| 磐安县| 额尔古纳市| 昌乐县| 时尚| 巴南区| 西丰县| 建水县|