本發(fā)明實(shí)施例涉及計(jì)算機(jī)領(lǐng)域,并且更具體地,涉及處理信息的方法及其裝置。
背景技術(shù):在目前的編譯技術(shù)中,常用的函數(shù)調(diào)用方式通過棧來實(shí)現(xiàn)參數(shù)和返回值傳遞,具體而言,當(dāng)調(diào)用函數(shù)需要向被調(diào)函數(shù)傳遞參數(shù)時(shí),調(diào)用函數(shù)從被調(diào)函數(shù)的棧空間開始位置起逐個(gè)存入?yún)?shù)內(nèi)容,相應(yīng)地,被調(diào)函數(shù)從自己的??臻g開始位置起寫入傳遞給它的參數(shù),并在寄存器中對該參數(shù)內(nèi)容執(zhí)行操作,這種方式的實(shí)現(xiàn)需要額外增加讀寫指令,同時(shí)由于寄存器和棧之間的存取操作時(shí)延較大,會(huì)使得系統(tǒng)性能消耗較大。由于上述完全用棧來傳參的方式效率較低,為此使用寄存器來傳參成為了一種新的方式,滑窗機(jī)制是一種在兼顧成本的情況下通過寄存器傳遞參數(shù)的方式,比如tensalica公司的芯片,它提供了32個(gè)通用物理寄存器,依次編號為A0-A31,而在匯編代碼中直接操作的只有16個(gè)寄存器,稱為初始窗口。初始窗口的16個(gè)寄存器依次編號為a0-a15,該a0-a15可稱為邏輯寄存器,當(dāng)父函數(shù)調(diào)用子函數(shù)時(shí),需要進(jìn)行窗口滑動(dòng),每次滑動(dòng)的寄存器數(shù)固定,例如4和8,分別被稱作call4和call8調(diào)用。以call8調(diào)用為例,當(dāng)父函數(shù)通過call8指令調(diào)用子函數(shù)時(shí),父函數(shù)中的a0-a7是子函數(shù)不能訪問到的,這樣,這8個(gè)寄存器就不需要由父函數(shù)或者子函數(shù)顯式的壓棧保存,窗口劃動(dòng)后自然對這8個(gè)寄存器進(jìn)行保護(hù),其中,a0-a3寄存器稱為父函數(shù)的基本寄存器,a4-a7寄存器為子函數(shù)的擴(kuò)展寄存器;對父函數(shù)的a8-a15,在窗口劃動(dòng)后又變成了子函數(shù)窗口的a0-a7寄存器,這部分寄存器(稱為滑動(dòng)寄存器)的內(nèi)容直接被子函數(shù)看到,因此可以用他們來存儲一些函數(shù)間傳遞用到的參數(shù)。這樣避免了將參數(shù)保存到棧傳遞導(dǎo)致的存儲時(shí)間耗費(fèi)。雖然滑窗機(jī)制能減少對??臻g的存取操作,然而,在現(xiàn)有技術(shù)中,當(dāng)編譯器配置完成后,使用該編譯器編譯的所有函數(shù)均采用默認(rèn)的劃窗長度,且此默認(rèn)劃窗長度在任何情況下都是固定不變的。因此,當(dāng)該默認(rèn)劃窗長度較大時(shí),例如,8或12,當(dāng)函數(shù)調(diào)用次數(shù)大到一定深度的時(shí)候,就會(huì)不斷的產(chǎn)生溢出,導(dǎo)致我們并不能從滑窗機(jī)制中獲取好處。而當(dāng)該默認(rèn)劃窗長度較小時(shí),例如4,雖然減少了溢出的概率,但是當(dāng)函數(shù)調(diào)用不會(huì)產(chǎn)生溢出時(shí),與較大的劃窗長度相比,較小的劃窗長度增加了存入棧中寄存器的個(gè)數(shù),因而增加了程序運(yùn)行時(shí)延。因此,現(xiàn)有技術(shù)中采用固定的劃窗長度使得處理信息過程中還會(huì)由于存取數(shù)據(jù)耗費(fèi)時(shí)間,函數(shù)的運(yùn)行速率較慢,對內(nèi)存空間的利用率和系統(tǒng)的整體性能較差。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例提供了一種處理信息的方法及其裝置,能夠解決現(xiàn)有技術(shù)中由于固定的劃窗長度而造成的存取數(shù)據(jù)的時(shí)間耗費(fèi)。第一方面,提供了一種處理信息的方法,包括:確定待編譯函數(shù)的目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度;根據(jù)該目標(biāo)劃窗長度,確定該待編譯函數(shù)的匯編代碼。結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,該確定待編譯函數(shù)的目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度,包括:根據(jù)用于指示該待編譯函數(shù)的劃窗長度的用戶編譯指令,確定該待編譯函數(shù)的目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度。結(jié)合第一方面,在第二種可能的實(shí)現(xiàn)方式中,該確定待編譯函數(shù)的目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度,包括:獲取該待編譯函數(shù)的函數(shù)調(diào)用信息;根據(jù)該函數(shù)調(diào)用信息,確定該目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度。結(jié)合第一方面或結(jié)合第一方面的第一種或第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,該根據(jù)該目標(biāo)劃窗長度,確定該待編譯函數(shù)的匯編代碼,包括:根據(jù)該目標(biāo)劃窗長度,進(jìn)行寄存器分配;根據(jù)該寄存器分配和該目標(biāo)劃窗長度,生成該待編譯函數(shù)的匯編代碼。結(jié)合第一方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,該根據(jù)該寄存器分配和該目標(biāo)劃窗長度,生成該待編譯函數(shù)的匯編代碼,包括:調(diào)整該待編譯函數(shù)的調(diào)用指令,使得該待編譯函數(shù)的劃窗長度為該目標(biāo)劃窗長度。結(jié)合第一方面或結(jié)合第一方面的第一種或第二種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,該根據(jù)該目標(biāo)劃窗長度,確定該待編譯函數(shù)的匯編代碼,包括:根據(jù)該初始劃窗長度,生成該待編譯函數(shù)的初始匯編代碼;調(diào)整該初始匯編代碼以獲得目標(biāo)匯編代碼,使得該目標(biāo)匯編代碼中該待編譯函數(shù)的劃窗長度為該目標(biāo)劃窗長度。結(jié)合第一方面的第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,該調(diào)整該初始匯編代碼以獲得目標(biāo)匯編代碼,使得該目標(biāo)匯編代碼中該待編譯函數(shù)的劃窗長度為該目標(biāo)劃窗長度,包括:壓棧保存該待編譯函數(shù)的當(dāng)前被調(diào)用子函數(shù)的初始擴(kuò)展寄存器中存儲的信息;將該待編譯函數(shù)的當(dāng)前調(diào)用子函數(shù)的初始滑動(dòng)寄存器中的參數(shù)值移動(dòng)至該當(dāng)前調(diào)用子函數(shù)的目標(biāo)滑動(dòng)寄存器中;根據(jù)該目標(biāo)劃窗長度,調(diào)整該待編譯函數(shù)的調(diào)用指令;將該當(dāng)前調(diào)用子函數(shù)的目標(biāo)返回寄存器中的返回值移動(dòng)至該當(dāng)前調(diào)用子函數(shù)的初始返回寄存器中;將該壓棧保存的信息寫入該當(dāng)前被調(diào)用子函數(shù)的初始擴(kuò)展寄存器中。第二方面,提供了一種處理信息的裝置,包括:第一確定模塊,用于確定待編譯函數(shù)的目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度;第二確定模塊,用于根據(jù)該第一確定模塊確定的該目標(biāo)劃窗長度,確定該待編譯函數(shù)的匯編代碼。結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,該第一確定模塊具體用于根據(jù)用于指示該待編譯函數(shù)的劃窗長度的用戶編譯指令,確定該待編譯函數(shù)的目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度。結(jié)合第二方面,在第二種可能的實(shí)現(xiàn)方式中,該第一確定模塊包括:獲取單元,用于獲取該待編譯函數(shù)的函數(shù)調(diào)用信息;確定單元,用于根據(jù)該獲取單元獲取的該函數(shù)調(diào)用信息,確定該目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度。結(jié)合第二方面或結(jié)合第二方面的第一種或第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,該第二確定模塊包括:分配單元,用于根據(jù)該目標(biāo)劃窗長度,進(jìn)行寄存器分配;第一生成單元,用于根據(jù)該分配單元分配的寄存器和該目標(biāo)劃窗長度,生成該待編譯函數(shù)的匯編代碼。結(jié)合第二方面的第三種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,該第一生成單元具體用于調(diào)整該待編譯函數(shù)的調(diào)用指令,使得該待編譯函數(shù)的劃窗長度為該目標(biāo)劃窗長度。結(jié)合第二方面或結(jié)合第二方面的第一種或第二種可能的實(shí)現(xiàn)方式,在第五種可能的實(shí)現(xiàn)方式中,該第二確定模塊包括:第二生成單元,用于根據(jù)該初始劃窗長度,生成該待編譯函數(shù)的初始匯編代碼;調(diào)整單元,用于調(diào)整該第二生成單元生成的該初始匯編代碼以獲得目標(biāo)匯編代碼,使得該目標(biāo)匯編代碼中該待編譯函數(shù)的劃窗長度為該目標(biāo)劃窗長度。結(jié)合第二方面的第五種可能的實(shí)現(xiàn)方式,在第六種可能的實(shí)現(xiàn)方式中,該調(diào)整單元包括:保存子單元,用于壓棧保存該待編譯函數(shù)的當(dāng)前被調(diào)用子函數(shù)的初始擴(kuò)展寄存器中存儲的信息;第一移動(dòng)子單元,用于將該待編譯函數(shù)的當(dāng)前調(diào)用子函數(shù)的初始滑動(dòng)寄存器中的參數(shù)值移動(dòng)至該當(dāng)前調(diào)用子函數(shù)的目標(biāo)滑動(dòng)寄存器中;調(diào)整子單元,用于根據(jù)該目標(biāo)劃窗長度,調(diào)整該待編譯函數(shù)的調(diào)用指令;第二移動(dòng)子單元,用于將該當(dāng)前調(diào)用子函數(shù)的目標(biāo)返回寄存器中的返回值移動(dòng)至該當(dāng)前調(diào)用子函數(shù)的初始返回寄存器中;讀取子單元,用于將該保存子單元壓棧保存的信息寫入該當(dāng)前被調(diào)用子函數(shù)的初始擴(kuò)展寄存器中。因此,根據(jù)本發(fā)明實(shí)施例的處理信息的方法和裝置,通過根據(jù)實(shí)際情況靈活地確定函數(shù)調(diào)用的劃窗長度,能夠降低由于使用固定的劃窗長度而造成的時(shí)間和內(nèi)存消耗,提高處理信息的運(yùn)行速率,提高對內(nèi)存空間的利用率,提升系統(tǒng)的整體性能,提高用戶體驗(yàn)。附圖說明為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對本發(fā)明實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面所描述的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是根據(jù)本發(fā)明實(shí)施例的處理信息的方法的示意性流程圖。圖2是根據(jù)本發(fā)明實(shí)施例的處理信息的方法的另一示意性流程圖。圖3是根據(jù)本發(fā)明實(shí)施例的處理信息的方法的再一示意性流程圖。圖4是根據(jù)本發(fā)明實(shí)施例的處理信息的方法的再一示意性流程圖。圖5是根據(jù)本發(fā)明實(shí)施例的處理信息的方法的再一示意性流程圖。圖6是根據(jù)本發(fā)明實(shí)施例的寄存器的示意圖。圖7是根據(jù)本發(fā)明實(shí)施例的處理信息的裝置的示意性流程圖。圖8是根據(jù)本發(fā)明實(shí)施例的處理信息的裝置的另一示意性流程圖。圖9是根據(jù)本發(fā)明實(shí)施例的處理信息的裝置的再一示意性流程圖。圖10是根據(jù)本發(fā)明實(shí)施例的處理信息的裝置的再一示意性流程圖。圖11是根據(jù)本發(fā)明實(shí)施例的處理信息的裝置的再一示意性流程圖。圖12是根據(jù)本發(fā)明另一實(shí)施例的處理信息的裝置的示意性流程圖。具體實(shí)施方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明的一部分實(shí)施例,而不是全部實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都應(yīng)屬于本發(fā)明保護(hù)的范圍。應(yīng)理解,本發(fā)明實(shí)施例的技術(shù)方案可以應(yīng)用于各種計(jì)算機(jī)系統(tǒng),例如,個(gè)人計(jì)算機(jī)(PersonalComputer,簡稱為“PC”)、計(jì)算機(jī)集群系統(tǒng)、大型計(jì)算機(jī)系統(tǒng)或各種超級計(jì)算機(jī)(Supercomputer)等等,本發(fā)明對此并不作限定。此外,本發(fā)明還可以應(yīng)用于各種編譯器,例如,gcc,g++,c++,open64,等等,本發(fā)明實(shí)施例對此不作限定。圖1示出了根據(jù)本發(fā)明實(shí)施例的處理信息的方法100的流程性示意圖,該方法可以由任何合適的裝置執(zhí)行,例如編譯器,為了便于描述,下面以編譯器執(zhí)行為例進(jìn)行說明,但本發(fā)明實(shí)施例不限于此。如圖1所示,該方法100包括:S110,確定待編譯函數(shù)的目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度;S120,根據(jù)該目標(biāo)劃窗長度,確定該待編譯函數(shù)的匯編代碼。因此,根據(jù)本發(fā)明實(shí)施例的處理信息的方法,通過根據(jù)實(shí)際情況靈活地確定函數(shù)調(diào)用的劃窗長度,能夠降低由于使用固定的劃窗長度而造成的時(shí)間和內(nèi)存消耗,提高處理信息的運(yùn)行速率,提高對內(nèi)存空間的利用率,提升系統(tǒng)的整體性能,提高用戶體驗(yàn)。在S110中,該初始劃窗長度可以為預(yù)設(shè)的固定劃窗長度,可選地,編譯器可以將預(yù)設(shè)劃窗長度設(shè)置為一個(gè)較大的值,例如,8或12,以使得存入棧中的寄存器個(gè)數(shù)較少。當(dāng)編譯器需要編譯調(diào)度次數(shù)較多的函數(shù)時(shí),該預(yù)設(shè)劃窗長度可能會(huì)造成寄存器溢出,此時(shí)可以調(diào)整該函數(shù)的調(diào)用劃窗長度,例如,調(diào)整為4,以降低寄存器溢出的概率,但本明實(shí)施例不限于此。在S120中,該編譯器默認(rèn)采用該初始劃窗長度編譯該待編譯函數(shù),因此,當(dāng)該目標(biāo)劃窗長度不等于該初始劃窗長度時(shí),該編譯器需要將該初始劃窗長度調(diào)整為該目標(biāo)劃窗長度,可選地,該編譯器可以在執(zhí)行寄存器分配前調(diào)整該劃窗長度,并根據(jù)調(diào)整后的目標(biāo)劃窗長度分配寄存器以及生成該待編譯函數(shù)的匯編代碼;或者該編譯器在執(zhí)行寄存器分配后調(diào)整該劃窗長度,即按照初始劃窗長度生成該待編譯函數(shù)的匯編文件,然后通過修改該匯編文件來調(diào)整劃窗長度,但本發(fā)明實(shí)施例不限于此??蛇x地,該編譯器可以通過多種方式確定是否需要調(diào)整函數(shù)調(diào)用的劃窗長度,例如,該編譯器可以通過編譯接口“#program”中的用戶編譯指令,來確定是否需要調(diào)整函數(shù)調(diào)用的劃窗長度;或者該編譯器可以通過過程間(IPA)分析來確定是否需要調(diào)整函數(shù)調(diào)用的劃窗長度,但本發(fā)明實(shí)施例不限于此??蛇x地,S110,確定待編譯函數(shù)的目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度,包括:S111,根據(jù)用于指示該待編譯函數(shù)的劃窗長度的用戶編譯指令,確定該待編譯函數(shù)的目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度。其中,該用戶編譯指令可以通過編譯接口獲取,例如,通過“#program”接口可以使用戶設(shè)置函數(shù)調(diào)用的劃窗長度,一個(gè)用戶通過“#program”接口設(shè)置劃窗長度的源代碼例子如下:其中,“windows_length”用于設(shè)定函數(shù)調(diào)用的劃窗長度,這里用戶指定的劃窗長度為4,如果編譯器的初始劃窗長度不為4,則確定需要將函數(shù)調(diào)用的劃窗長度調(diào)整為4,但本發(fā)明實(shí)施例不限于此??蛇x地,作為另一實(shí)施例,該編譯器也可以通過進(jìn)行IPA分析確定是否需要調(diào)整函數(shù)調(diào)用的劃窗長度。相應(yīng)地,如圖2所示,S110,確定待編譯函數(shù)的目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度,包括:S112,獲取該待編譯函數(shù)的函數(shù)調(diào)用信息;S113,根據(jù)該函數(shù)調(diào)用信息,確定該目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度。其中,該函數(shù)調(diào)用信息可以具體為函數(shù)調(diào)用圖,該編譯器可以根據(jù)該函數(shù)調(diào)用信息確定該待編譯函數(shù)的調(diào)用深度,并根據(jù)該調(diào)用深度確定該待編譯函數(shù)的目標(biāo)劃窗長度,例如,當(dāng)該待編譯函數(shù)的調(diào)用深度大于4時(shí),其目標(biāo)劃窗長度為4,更大的劃窗長度會(huì)造成寄存器溢出。當(dāng)該編譯器的初始劃窗長度為4時(shí),那么該編譯器可以不調(diào)整劃窗長度;否則,該編譯器需要將劃窗長度調(diào)整為4,但本發(fā)明實(shí)施例不限于此??蛇x地,該編譯器可以在執(zhí)行寄存器分配前調(diào)整該待編譯函數(shù)的劃窗長度,操作簡單方便,易于實(shí)現(xiàn),如圖3所示,S120,編譯器該根據(jù)該目標(biāo)劃窗長度,確定該待編譯函數(shù)的匯編代碼,包括:S121,根據(jù)該目標(biāo)劃窗長度,進(jìn)行寄存器分配;S122,根據(jù)該寄存器分配和該目標(biāo)劃窗長度,生成該待編譯函數(shù)的匯編代碼。其中,在S121中,該編譯器可以根據(jù)該目標(biāo)劃窗長度,調(diào)整該待編譯函數(shù)的傳參寄存器和返回寄存器,并利用該傳參寄存器和返回寄存器生成該待編譯函數(shù)的匯編代碼,例如,該初始劃窗長度為8,該編譯器將該待編譯函數(shù)的當(dāng)前調(diào)用子函數(shù)的邏輯寄存器a8-a15作為傳參寄存器,邏輯寄存器a8作為返回寄存器;而當(dāng)函數(shù)調(diào)用的劃窗長度調(diào)整為4時(shí),該編譯器需要將該待編譯函數(shù)的當(dāng)前調(diào)用子函數(shù)的邏輯寄存器a6-a11作為傳參寄存器,邏輯寄存器a6作為返回寄存器,但本發(fā)明實(shí)施例不限于此??蛇x地,相應(yīng)地,S122,根據(jù)該寄存器分配和該目標(biāo)劃窗長度,生成該待編譯函數(shù)的匯編代碼,包括:S122a,調(diào)整該待編譯函數(shù)的調(diào)用指令,使得該待編譯函數(shù)的劃窗長度為該目標(biāo)劃窗長度。具體地,該編譯器可以將該待編譯函數(shù)的初始調(diào)用指令修改為該待編譯函數(shù)的目標(biāo)調(diào)用指令,其中,該初始調(diào)用指令的調(diào)用劃窗長度為初始劃窗長度,目標(biāo)調(diào)用指令的調(diào)用劃窗長度為目標(biāo)劃窗長度,例如,當(dāng)初始劃窗長度和目標(biāo)劃窗長度分別為8和4時(shí),初始調(diào)用指令和目標(biāo)調(diào)用指令分別為call4和call8,但本發(fā)明實(shí)施例不限于此??蛇x地,作為另一實(shí)施例,該編譯器也可以在執(zhí)行寄存器分配之后再調(diào)整函數(shù)調(diào)用的劃窗長度,相應(yīng)地,如圖4所示,S120,根據(jù)該目標(biāo)劃窗長度,確定該待編譯函數(shù)的匯編代碼,包括:S123,根據(jù)該初始劃窗長度,生成該待編譯函數(shù)的初始匯編代碼;S124,調(diào)整該初始匯編代碼以獲得目標(biāo)匯編代碼,使得該目標(biāo)匯編代碼中該待編譯函數(shù)的劃窗長度為該目標(biāo)劃窗長度。其中,在S124中,該編譯器可以通過修改該初始匯編代碼中的調(diào)用指令,并相應(yīng)根據(jù)該調(diào)用指令的修改對該初始匯編代碼做調(diào)整。可選地,作為另一實(shí)施例,如圖5所示,S124,調(diào)整該初始匯編代碼以獲得目標(biāo)匯編代碼,使得該目標(biāo)匯編代碼中該待編譯函數(shù)的劃窗長度為該目標(biāo)劃窗長度,包括:S124a,壓棧保存該待編譯函數(shù)的當(dāng)前被調(diào)用子函數(shù)的初始擴(kuò)展寄存器中存儲的信息;S124b,將該待編譯函數(shù)的當(dāng)前調(diào)用子函數(shù)的初始滑動(dòng)寄存器中的參數(shù)值移動(dòng)至該當(dāng)前調(diào)用子函數(shù)的目標(biāo)滑動(dòng)寄存器中;S124c,根據(jù)該目標(biāo)劃窗長度,調(diào)整該待編譯函數(shù)的調(diào)用指令;S124d,將該當(dāng)前調(diào)用子函數(shù)的目標(biāo)返回寄存器中的返回值移動(dòng)至該當(dāng)前調(diào)用子函數(shù)的初始返回寄存器中;S124e,將該壓棧保存的信息寫入該當(dāng)前被調(diào)用子函數(shù)的初始擴(kuò)展寄存器中。在執(zhí)行寄存器分配之后再調(diào)整函數(shù)調(diào)用的劃窗長度雖然會(huì)帶來一些冗余的操作,不過在寄存器分配后的優(yōu)化中會(huì)見冗余指令被刪除掉。并且,這樣可以根據(jù)實(shí)際需要選擇性地調(diào)整該待編譯函數(shù)的一個(gè)或多個(gè)子函數(shù)的函數(shù)調(diào)用的劃窗長度,提高編譯器處理信息的靈活度。下面通過具體例子來詳細(xì)闡述在生成初始匯編代碼后調(diào)整函數(shù)調(diào)用的劃窗長度的方法,如圖6所示,該編譯器需要將待編譯函數(shù)中的第一調(diào)用子函數(shù)調(diào)用第一被調(diào)用子函數(shù)時(shí)的劃窗長度由8調(diào)整為4,而該待編譯函數(shù)的其它子函數(shù)均采用初始劃窗長度8進(jìn)行函數(shù)調(diào)用,為了便于描述,下面將該第一調(diào)用子函數(shù)稱為父函數(shù),將第一被調(diào)用子函數(shù)稱為子函數(shù);并將采用該初始劃窗長度的函數(shù)調(diào)用稱為call8調(diào)用,采用目標(biāo)劃窗長度的函數(shù)調(diào)用稱為call4調(diào)用。首先,該編譯器可以為修改調(diào)用指令做前期準(zhǔn)備工作,具體地,該編譯器首先為寄存器a4-a7開辟一塊??臻g,并將寄存器a4-a7中存放的數(shù)值壓棧保存;然后,該編譯器將call8調(diào)用的傳參寄存器a8-a15中存放的數(shù)值移動(dòng)到call4調(diào)用的傳參寄存器a4-a11中。上述步驟執(zhí)行后,該編譯器可以將匯編代碼中的call8指令修改為call4指令,使得該函數(shù)調(diào)用的劃窗長度為4。最后,該編譯器需要將call4調(diào)用的返回寄存器a4中的函數(shù)返回值移動(dòng)到call8調(diào)用的返回寄存器a8中,并將壓棧保存的原來在寄存器a4-a7中存放的數(shù)值重新讀回寄存器a4-a7,該編譯器恢復(fù)預(yù)設(shè)的初始劃窗長度編譯其它子函數(shù)。因此,根據(jù)本發(fā)明實(shí)施例的處理信息的方法,通過根據(jù)實(shí)際情況靈活地確定函數(shù)調(diào)用的劃窗長度,能夠降低由于使用固定的劃窗長度而造成的時(shí)間和內(nèi)存消耗,提高處理信息的運(yùn)行速率,提高對內(nèi)存空間的利用率,提升系統(tǒng)的整體性能,提高用戶體驗(yàn)。應(yīng)注意,圖6的這個(gè)例子是為了幫助本領(lǐng)域技術(shù)人員更好地理解本發(fā)明實(shí)施例,而非要限制本發(fā)明實(shí)施例的范圍。本領(lǐng)域技術(shù)人員根據(jù)所給出的圖6的例子,顯然可以進(jìn)行各種等價(jià)的修改或變化,這樣的修改或變化也落入本發(fā)明實(shí)施例的范圍內(nèi)。應(yīng)理解,上述各過程的序號的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對本發(fā)明實(shí)施例的實(shí)施過程構(gòu)成任何限定。上文中結(jié)合圖1至圖6,詳細(xì)描述了根據(jù)本發(fā)明實(shí)施例的處理信息的方法,下面將結(jié)合圖7至圖12,描述根據(jù)本發(fā)明實(shí)施例的處理信息的裝置。圖7示出了根據(jù)本發(fā)明實(shí)施例的處理信息的裝置300的示意性框圖,包括:第一確定模塊310,用于確定待編譯函數(shù)的目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度;第二確定模塊320,用于根據(jù)該第一確定模塊310確定的該目標(biāo)劃窗長度,確定該待編譯函數(shù)的匯編代碼。因此,根據(jù)本發(fā)明實(shí)施例的處理信息的裝置,通過根據(jù)實(shí)際情況靈活地確定函數(shù)調(diào)用的劃窗長度,能夠降低由于使用固定的劃窗長度而造成的時(shí)間和內(nèi)存消耗,提高處理信息的運(yùn)行速率,提高對內(nèi)存空間的利用率,提升系統(tǒng)的整體性能,提高用戶體驗(yàn)??蛇x地,該第一確定模塊310具體用于根據(jù)用于指示該待編譯函數(shù)的劃窗長度的用戶編譯指令,確定該待編譯函數(shù)的目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度。可選地,作為另一實(shí)施例,如圖8所示,該第一確定模塊310包括:獲取單元311,用于獲取該待編譯函數(shù)的函數(shù)調(diào)用信息;確定單元312,用于根據(jù)該獲取單元311獲取的該函數(shù)調(diào)用信息,確定該目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度??蛇x地,作為另一實(shí)施例,如圖9所示,該第二確定模塊320包括:分配單元321,用于根據(jù)該目標(biāo)劃窗長度,進(jìn)行寄存器分配;第一生成單元322,用于根據(jù)該分配單元321分配的寄存器和該目標(biāo)劃窗長度,生成該待編譯函數(shù)的匯編代碼??蛇x地,作為另一實(shí)施例,該第一生成單元322具體用于調(diào)整該待編譯函數(shù)的調(diào)用指令,使得該待編譯函數(shù)的劃窗長度為該目標(biāo)劃窗長度??蛇x地,作為另一實(shí)施例,如圖10所示,該第二確定模塊320包括:第二生成單元323,用于根據(jù)該初始劃窗長度,生成該待編譯函數(shù)的初始匯編代碼;調(diào)整單元324,用于調(diào)整該第二生成單元323生成的該初始匯編代碼以獲得目標(biāo)匯編代碼,使得該目標(biāo)匯編代碼中該待編譯函數(shù)的劃窗長度為該目標(biāo)劃窗長度??蛇x地,作為另一實(shí)施例,如圖11所示,該調(diào)整單元324包括:保存子單元324a,用于壓棧保存該待編譯函數(shù)的當(dāng)前被調(diào)用子函數(shù)的初始擴(kuò)展寄存器中存儲的信息;第一移動(dòng)子單元324b,用于將該待編譯函數(shù)的當(dāng)前調(diào)用子函數(shù)的初始滑動(dòng)寄存器中的參數(shù)值移動(dòng)至該當(dāng)前調(diào)用子函數(shù)的目標(biāo)滑動(dòng)寄存器中;調(diào)整子單元324c,用于根據(jù)該目標(biāo)劃窗長度,調(diào)整該待編譯函數(shù)的調(diào)用指令;第二移動(dòng)子單元324d,用于將該當(dāng)前調(diào)用子函數(shù)的目標(biāo)返回寄存器中的返回值移動(dòng)至該當(dāng)前調(diào)用子函數(shù)的初始返回寄存器中;寫入子單元325e,用于將該保存子單元324a壓棧保存的信息寫入該當(dāng)前被調(diào)用子函數(shù)的初始擴(kuò)展寄存器中。因此,根據(jù)本發(fā)明實(shí)施例的處理信息的裝置,通過根據(jù)實(shí)際情況靈活地確定函數(shù)調(diào)用的劃窗長度,能夠降低由于使用固定的劃窗長度而造成的時(shí)間和內(nèi)存消耗,提高處理信息的運(yùn)行速率,提高對內(nèi)存空間的利用率,提升系統(tǒng)的整體性能,提高用戶體驗(yàn)。圖12示出了根據(jù)本發(fā)明實(shí)施例的處理信息的裝置400的示意性框圖,如圖12所示,該處理信息的裝置400包括處理器410、存儲器420和總線系統(tǒng)430。其中,處理器410和存儲器420通過總線系統(tǒng)430相連,該存儲器420用于存儲指令,該處理器410通過該總線系統(tǒng)430,調(diào)用該存儲器420中存儲的該指令,用于確定待編譯函數(shù)的目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度,以及根據(jù)該第一確定模塊確定的該目標(biāo)劃窗長度,確定該待編譯函數(shù)的匯編代碼。因此,根據(jù)本發(fā)明實(shí)施例的處理信息的裝置,通過根據(jù)實(shí)際情況靈活地確定函數(shù)調(diào)用的劃窗長度,能夠降低由于使用固定的劃窗長度而造成的時(shí)間和內(nèi)存消耗,提高處理信息的運(yùn)行速率,提高對內(nèi)存空間的利用率,提升系統(tǒng)的整體性能,提高用戶體驗(yàn)。應(yīng)理解,在本發(fā)明實(shí)施例中,該處理器410可以是中央處理單元(CentralProcessingUnit,簡稱為“CPU”),該處理器410還可以是其他通用處理器、數(shù)字信號處理器(DSP)、專用集成電路(ASIC)、現(xiàn)成可編程門陣列(FPGA)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件等。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。該存儲器420可以包括只讀存儲器和隨機(jī)存取存儲器,并向處理器410提供指令和數(shù)據(jù)。存儲器420的一部分還可以包括非易失性隨機(jī)存取存儲器。例如,存儲器420還可以存儲設(shè)備類型的信息。該總線系統(tǒng)430除包括數(shù)據(jù)總線之外,還可以包括電源總線、控制總線和狀態(tài)信號總線等。但是為了清楚說明起見,在圖中將各種總線都標(biāo)為總線系統(tǒng)430。在實(shí)現(xiàn)過程中,上述方法的各步驟可以通過處理器410中的硬件的集成邏輯電路或者軟件形式的指令完成。結(jié)合本發(fā)明實(shí)施例所公開的方法的步驟可以直接體現(xiàn)為硬件處理器執(zhí)行完成,或者用處理器中的硬件及軟件模塊組合執(zhí)行完成。軟件模塊可以位于隨機(jī)存儲器,閃存、只讀存儲器,可編程只讀存儲器或者電可擦寫可編程存儲器、寄存器等本領(lǐng)域成熟的存儲介質(zhì)中。該存儲介質(zhì)位于存儲器420,處理器410讀取存儲器420中的信息,結(jié)合其硬件完成上述方法的步驟。為避免重復(fù),這里不再詳細(xì)描述??蛇x地,該處理器410具體用于根據(jù)用于指示該待編譯函數(shù)的劃窗長度的用戶編譯指令,確定該待編譯函數(shù)的目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度。可選地,作為另一實(shí)施例,該處理器410還用于獲取該待編譯函數(shù)的函數(shù)調(diào)用信息;根據(jù)該函數(shù)調(diào)用信息,確定該目標(biāo)劃窗長度,該目標(biāo)劃窗長度不等于該待編譯函數(shù)的初始劃窗長度。可選地,作為另一實(shí)施例,該處理器410還用于根據(jù)該目標(biāo)劃窗長度,進(jìn)行寄存器分配;根據(jù)該分配的寄存器和該目標(biāo)劃窗長度,生成該待編譯函數(shù)的匯編代碼。可選地,作為另一實(shí)施例,該處理器410具體用于調(diào)整該待編譯函數(shù)的調(diào)用指令,使得該待編譯函數(shù)的劃窗長度為該目標(biāo)劃窗長度??蛇x地,作為另一實(shí)施例,該處理器410還用于根據(jù)該初始劃窗長度,生成該待編譯函數(shù)的初始匯編代碼;以及調(diào)整該初始匯編代碼以獲得目標(biāo)匯編代碼,使得該目標(biāo)匯編代碼中該待編譯函數(shù)的劃窗長度為該目標(biāo)劃窗長度??蛇x地,作為另一實(shí)施例,該處理器410還用于壓棧保存該待編譯函數(shù)的當(dāng)前被調(diào)用子函數(shù)的初始擴(kuò)展寄存器中存儲的信息;將該待編譯函數(shù)的當(dāng)前調(diào)用子函數(shù)的初始滑動(dòng)寄存器中的參數(shù)值移動(dòng)至該當(dāng)前調(diào)用子函數(shù)的目標(biāo)滑動(dòng)寄存器中;根據(jù)該目標(biāo)劃窗長度,調(diào)整該待編譯函數(shù)的調(diào)用指令;將該當(dāng)前調(diào)用子函數(shù)的目標(biāo)返回寄存器中的返回值移動(dòng)至該當(dāng)前調(diào)用子函數(shù)的初始返回寄存器中;以及將該壓棧保存的信息寫入該當(dāng)前被調(diào)用子函數(shù)的初始擴(kuò)展寄存器中。因此,根據(jù)本發(fā)明實(shí)施例的處理信息的裝置,通過根據(jù)實(shí)際情況靈活地確定函數(shù)調(diào)用的劃窗長度,能夠降低由于使用固定的劃窗長度而造成的時(shí)間和內(nèi)存消耗,提高處理信息的運(yùn)行速率,提高對內(nèi)存空間的利用率,提升系統(tǒng)的整體性能,提高用戶體驗(yàn)。應(yīng)理解,在本發(fā)明實(shí)施例中,術(shù)語“和/或”僅僅是一種描述關(guān)聯(lián)對象的關(guān)聯(lián)關(guān)系,表示可以存在三種關(guān)系。例如,A和/或B,可以表示:單獨(dú)存在A,同時(shí)存在A和B,單獨(dú)存在B這三種情況。另外,本文中字符“/”,一般表示前后關(guān)聯(lián)對象是一種“或”的關(guān)系。本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實(shí)施例中描述的各方法步驟和單元,能夠以電子硬件、計(jì)算機(jī)軟件或者二者的結(jié)合來實(shí)現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各實(shí)施例的步驟及組成。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。本領(lǐng)域普通技術(shù)人員可以對每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實(shí)施例中的對應(yīng)過程,在此不再贅述。在本申請所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng)、裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口、裝置或單元的間接耦合或通信連接,也可以是電的,機(jī)械的或其它的形式連接。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本發(fā)明實(shí)施例方案的目的。另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以是兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲在一個(gè)計(jì)算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分,或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個(gè)存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲器(Read-OnlyMemory,簡稱為“ROM”)、隨機(jī)存取存儲器(RandomAccessMemory,簡稱為“RAM”)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到各種等效的修改或替換,這些修改或替換都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。