本公開(kāi)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別涉及一種寄存器訪問(wèn)方法、裝置及系統(tǒng)。
背景技術(shù):
在一些硬件系統(tǒng)應(yīng)用中,常常需要用中央處理器(Central Processing Unit,簡(jiǎn)稱CPU)+現(xiàn)場(chǎng)可編程門(mén)陣列(Field Programmable Gate Array,簡(jiǎn)稱FPGA)、數(shù)字信號(hào)處理器(Digital Singnal Processor,簡(jiǎn)稱DSP)+FPGA、或者進(jìn)階精簡(jiǎn)指令集機(jī)器(Advanced Reduced Instruction Set Computer Machine,簡(jiǎn)稱ARM)處理器+FPGA或者微控制單元(Microcontroller Unit,簡(jiǎn)稱MCU)+FPGA的架構(gòu)來(lái)擴(kuò)展處理器接口或者外設(shè)。
目前,一個(gè)寄存器包括多個(gè)位域,如果需要訪問(wèn)寄存器中的位域,根據(jù)待訪問(wèn)位域的起始地址和終止地址確定基于寄存器的初始地址的偏移量,然后在寄存器的初始地址基礎(chǔ)上,偏移所述偏移量得到待訪問(wèn)位域的初始地址,通過(guò)該初始地址可以訪問(wèn)對(duì)應(yīng)的位域。
技術(shù)實(shí)現(xiàn)要素:
為克服相關(guān)技術(shù)中存在的問(wèn)題,本公開(kāi)提供一種寄存器訪問(wèn)方法、裝置及系統(tǒng)。所述技術(shù)方案如下:
根據(jù)本公開(kāi)實(shí)施例的第一方面,提供一種寄存器訪問(wèn)方法,包括:
獲取待訪問(wèn)位域的起始地址和終止地址;
根據(jù)待訪問(wèn)位域的起始地址和終止地址,確定待訪問(wèn)位域?qū)?yīng)一個(gè)第一變量;
通過(guò)訪問(wèn)對(duì)應(yīng)的一個(gè)第一變量訪問(wèn)所述待訪問(wèn)位域,其中,寄存器包括N個(gè)位域,所述N個(gè)位域中的每個(gè)位域?qū)?yīng)一個(gè)第一變量,N為大于或者等于2的正整數(shù)。
本公開(kāi)實(shí)施例提供的技術(shù)方案可以包括以下有益效果:由于每個(gè)位域?qū)?yīng)一個(gè)第一變量,因此寄存器訪問(wèn)裝置可以直接通過(guò)確定的第一變量訪問(wèn)待訪問(wèn)位域,無(wú)需通過(guò)寄存器對(duì)應(yīng)的固定的地址和偏移量訪問(wèn)對(duì)應(yīng)的位域,從而提高寄存器訪問(wèn)效率。
可選地,所述方法還包括:獲取所述寄存器的起始地址和終止地址;
根據(jù)所述寄存器的起始地址和所述終止地址確定所述寄存器對(duì)應(yīng)的第二變量;
通過(guò)訪問(wèn)所述第二變量訪問(wèn)所述寄存器的所有位域,其中,所述第二變量對(duì)應(yīng)所述寄存器的所有位域。從而提高寄存器訪問(wèn)的靈活性。
可選地,第一變量和第二變量被定義在與所述寄存器對(duì)應(yīng)的聯(lián)合體中;
所述N個(gè)位域?qū)?yīng)的N個(gè)第一變量被定義在一個(gè)結(jié)構(gòu)體中;
相應(yīng)的,所述通過(guò)訪問(wèn)對(duì)應(yīng)的一個(gè)第一變量訪問(wèn)所述待訪問(wèn)位域,包括:
通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合訪問(wèn)所述待訪問(wèn)位域;
所述通過(guò)訪問(wèn)所述第二變量訪問(wèn)所述寄存器的所有位域,包括:
通過(guò)聯(lián)合體標(biāo)識(shí)與第二變量的標(biāo)識(shí)組合訪問(wèn)所述寄存器的所有位域。
通過(guò)將寄存器定義為一個(gè)聯(lián)合體,該聯(lián)合體包括:所述N個(gè)第一變量和一個(gè)第二變量;所述N個(gè)第一變量組成一個(gè)結(jié)構(gòu)體,所述第二變量用于表示所述寄存器。而無(wú)需像現(xiàn)有技術(shù)中,僅僅定義寄存器為一個(gè)變量,只能通過(guò)寄存器對(duì)應(yīng)的固定的地址和偏移量訪問(wèn)對(duì)應(yīng)的位域,本公開(kāi)實(shí)施例中,寄存器對(duì)應(yīng)有第一變量,即每個(gè)位域?qū)?yīng)一個(gè)變量,因此寄存器訪問(wèn)裝置可以直接根據(jù)該第一變量訪問(wèn)待訪問(wèn)位域,從而提高寄存器訪問(wèn)效率。
可選地,通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合訪問(wèn)所述待訪問(wèn)位域,包括:
通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合讀取所述待訪問(wèn)位域中的所述數(shù)據(jù);或者,
在待訪問(wèn)位域?yàn)榭諘r(shí),則通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合向所述待訪問(wèn)位域?qū)懭霐?shù)據(jù),在待訪問(wèn)位域?yàn)榉强諘r(shí),通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合刪除所述待訪問(wèn)位域中的原始數(shù)據(jù),并向所述待訪問(wèn)位域?qū)懭胄碌臄?shù)據(jù)。
由于可以直接根據(jù)確定的第一變量確定所述待訪問(wèn)位域,從而提高寄存器讀取或者寫(xiě)入效率。
可選地,所述方法還包括:通過(guò)重新定義寄存器的N個(gè)位域中每個(gè)位域包含的位數(shù)及在寄存器中占用的位置,調(diào)整對(duì)應(yīng)的第一變量。從而提高訪問(wèn)待訪問(wèn)位域的靈活性。
下面將介紹發(fā)明實(shí)施例提供一種寄存器訪問(wèn)裝置,其中裝置部分與上述方法對(duì)應(yīng),對(duì)應(yīng)內(nèi)容技術(shù)效果相同,在此不再贅述。
根據(jù)本公開(kāi)實(shí)施例的第二方面,提供一種寄存器訪問(wèn)裝置,包括:第一獲取模塊、第一確定模塊和第一訪問(wèn)模塊;
第一獲取模塊,被配置為獲取待訪問(wèn)位域的起始地址和終止地址;
第一確定模塊,被配置為根據(jù)待訪問(wèn)位域的起始地址和所述終止地址,確定所述待訪問(wèn)位域?qū)?yīng)一個(gè)第一變量;
第一訪問(wèn)模塊,被配置為通過(guò)訪問(wèn)對(duì)應(yīng)的一個(gè)第一變量訪問(wèn)所述待訪問(wèn)位域,其中,所述寄存器包括N個(gè)位域,所述N個(gè)位域中的每個(gè)位域?qū)?yīng)一個(gè)第一變量,N為大于或者等于2的正整數(shù)。
可選地,還包括:第二獲取模塊、第二確定模塊和第二訪問(wèn)模塊;
第二獲取模塊,被配置為獲取所述寄存器的起始地址和終止地址;
第二確定模塊,被配置為根據(jù)所述寄存器的起始地址和所述終止地址確定所述寄存器對(duì)應(yīng)的第二變量;
第二訪問(wèn)模塊,被配置為通過(guò)訪問(wèn)所述第二變量訪問(wèn)所述寄存器的所有位域,其中,所述第二變量對(duì)應(yīng)所述寄存器的所有位域。
可選地,第一變量和第二變量被定義在與寄存器對(duì)應(yīng)的聯(lián)合體中;
N個(gè)位域?qū)?yīng)的N個(gè)第一變量被定義在一個(gè)結(jié)構(gòu)體中;
相應(yīng)地,所述第一訪問(wèn)模塊被配置為通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合訪問(wèn)所述待訪問(wèn)位域;
所述第二訪問(wèn)模塊被配置為通過(guò)聯(lián)合體標(biāo)識(shí)與第二變量的標(biāo)識(shí)組合訪問(wèn)所述待訪問(wèn)位域。
可選地,所述第一訪問(wèn)模塊包括:讀取子模塊、寫(xiě)入子模塊和刪除子模塊;
所述讀取子模塊,被配置為通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合讀取所述待訪問(wèn)位域中的所述數(shù)據(jù);或者
在待訪問(wèn)位域?yàn)榭諘r(shí),則所述寫(xiě)入子模塊被配置為通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合向所述待訪問(wèn)位域?qū)懭霐?shù)據(jù),在待訪問(wèn)位域?yàn)榉强諘r(shí),則所述刪除子模塊被配置為通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合刪除所述待訪問(wèn)位域中的原始數(shù)據(jù),并且所述寫(xiě)入子模塊被配置為向所述待訪問(wèn)位域?qū)懭胄碌臄?shù)據(jù)。
可選地,還包括:調(diào)整模塊;
所述調(diào)整模塊,被配置為通過(guò)重新定義寄存器的N個(gè)位域中每個(gè)位域包含的位數(shù)及在寄存器中占用的位置,調(diào)整對(duì)應(yīng)的第一變量。
根據(jù)本公開(kāi)實(shí)施例的第三方面,提供一種寄存器訪問(wèn)系統(tǒng),包括:寄存器和如上述第二方面或者第二方面的可選方案的任一項(xiàng)所述的寄存器訪問(wèn)裝置;
其中,所述寄存器訪問(wèn)裝置用于訪問(wèn)所述寄存器中的待訪問(wèn)位域。
可選地,所述寄存器訪問(wèn)裝置為以下任一項(xiàng):中央處理器CPU、數(shù)字信號(hào)處理器DSP、微控制單元MCU和ARM處理器。
可選的,所述寄存器設(shè)置在現(xiàn)場(chǎng)可編程門(mén)陣列FPGA上。
本公開(kāi)的實(shí)施例提供的技術(shù)方案可以包括以下有益效果:一種寄存器訪問(wèn)方法、裝置及系統(tǒng)。該方法包括:獲取待訪問(wèn)位域的起始地址和終止地址;根據(jù)待訪問(wèn)位域的起始地址和所述終止地址確定所述待訪問(wèn)位域?qū)?yīng)的一個(gè)第一變量;通過(guò)訪問(wèn)所述對(duì)應(yīng)的一個(gè)第一變量訪問(wèn)所述待訪問(wèn)位域。由于每個(gè)位域?qū)?yīng)一個(gè)第一變量,因此寄存器訪問(wèn)裝置可以直接通過(guò)確定的第一變量訪問(wèn)待訪問(wèn)位域,無(wú)需通過(guò)寄存器對(duì)應(yīng)的固定的地址和偏移量訪問(wèn)對(duì)應(yīng)的位域,從而提高寄存器訪問(wèn)效率。
應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開(kāi)。
附圖說(shuō)明
此處的附圖被并入說(shuō)明書(shū)中并構(gòu)成本說(shuō)明書(shū)的一部分,示出了符合本公開(kāi)的實(shí)施例,并與說(shuō)明書(shū)一起用于解釋本公開(kāi)的原理。
圖1是根據(jù)一示例性實(shí)施例示出的一種寄存器訪問(wèn)方法的流程圖;
圖2是根據(jù)一示例性實(shí)施例示出的一種寄存器訪問(wèn)系統(tǒng)的框圖;
圖3是根據(jù)另一示例性實(shí)施例示出的一種寄存器訪問(wèn)方法的流程圖;
圖4是根據(jù)再一示例性實(shí)施例示出的一種寄存器訪問(wèn)方法的流程圖;
圖5是根據(jù)一示例性實(shí)施例示出的一種寄存器訪問(wèn)裝置的框圖;
圖6是根據(jù)另一示例性實(shí)施例示出的一種寄存器訪問(wèn)裝置的框圖;
圖7是根據(jù)再一示例性實(shí)施例示出的一種寄存器訪問(wèn)裝置的框圖;
圖8是根據(jù)一示例性實(shí)施例示出的一種寄存器訪問(wèn)系統(tǒng)800的框圖。
通過(guò)上述附圖,已示出本公開(kāi)明確的實(shí)施例,后文中將有更詳細(xì)的描述。這些附圖和文字描述并不是為了通過(guò)任何方式限制本公開(kāi)構(gòu)思的范圍,而是通過(guò)參考特定實(shí)施例為本領(lǐng)域技術(shù)人員說(shuō)明本公開(kāi)的概念。
具體實(shí)施方式
這里將詳細(xì)地對(duì)示例性實(shí)施例進(jìn)行說(shuō)明,其示例表示在附圖中。下面的描述涉及附圖時(shí),除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實(shí)施例中所描述的實(shí)施方式并不代表與本公開(kāi)相一致的所有實(shí)施方式。相反,它們僅是與如所附權(quán)利要求書(shū)中所詳述的、本公開(kāi)的一些方面相一致的裝置和方法的例子。
圖1是根據(jù)一示例性實(shí)施例示出的一種寄存器訪問(wèn)方法的流程圖,該方法的執(zhí)行主體為寄存器訪問(wèn)裝置,該裝置設(shè)置在寄存器訪問(wèn)系統(tǒng)中,圖2是根據(jù)一示例性實(shí)施例示出的一種寄存器訪問(wèn)系統(tǒng)的框圖,如圖2所示,該系統(tǒng)包括所述寄存器訪問(wèn)裝置21和寄存器22,所述寄存器訪問(wèn)裝置用于訪問(wèn)所述寄存器中的待訪問(wèn)位域,該寄存器訪問(wèn)裝置21可以是CPU、DSP、MCU或者ARM處理器等,該裝置可以是移動(dòng)電話,計(jì)算機(jī),數(shù)字廣播終端,消息收發(fā)設(shè)備,游戲控制臺(tái),平板設(shè)備,醫(yī)療設(shè)備,健身設(shè)備,個(gè)人數(shù)字助理等終端的一部分。具體地,如圖1所示,該寄存器訪問(wèn)方法可以包括如下幾個(gè)步驟:
在步驟S101中,獲取待訪問(wèn)位域的起始地址和終止地址;
在步驟S102中,根據(jù)待訪問(wèn)位域的起始地址和終止地址,確定待訪問(wèn)位域?qū)?yīng)一個(gè)第一變量;
在步驟S103中,通過(guò)訪問(wèn)對(duì)應(yīng)的一個(gè)第一變量訪問(wèn)待訪問(wèn)位域。
其中,寄存器包括N個(gè)位域,N個(gè)位域中的每個(gè)位域?qū)?yīng)一個(gè)第一變量,N為大于或者等于2的正整數(shù),也就是說(shuō),第一變量與位域一一對(duì)應(yīng),該第一變量用于表示位域。其中,該位域通常是按照功能劃分的,因此可以將位域稱為功能單元。假設(shè)第一個(gè)位域?qū)?yīng)的起始地址為A,終止地址為B,由于計(jì)算機(jī)技術(shù)中,每個(gè)變量也對(duì)應(yīng)有起始地址和終止地址,因此,CPU、DSP、MCU或者ARM處理器準(zhǔn)備訪問(wèn)第一個(gè)位域時(shí),首先可以獲取第一個(gè)位域的起始地址和終止地址;然后,根據(jù)起始地址和終止地址確定對(duì)應(yīng)的第一變量;最后,根據(jù)該第一變量直接訪問(wèn)待訪問(wèn)位域。
本公開(kāi)實(shí)施例中,由于每個(gè)位域?qū)?yīng)一個(gè)第一變量,因此寄存器訪問(wèn)裝置可以直接通過(guò)待訪問(wèn)位域?qū)?yīng)的第一變量訪問(wèn)待訪問(wèn)位域,無(wú)需通過(guò)寄存器對(duì)應(yīng)的固定的地址和偏移量訪問(wèn)對(duì)應(yīng)的位域,從而提高寄存器訪問(wèn)效率。
可選地,獲取寄存器的起始地址和終止地址;根據(jù)所述寄存器的起始地址和所述終止地址確定所述寄存器對(duì)應(yīng)的第二變量;通過(guò)訪問(wèn)所述第二變量訪問(wèn)所述寄存器的所有位域,其中,所述第二變量對(duì)應(yīng)所述寄存器的所有位域。
可選地,第一變量和第二變量被定義在與寄存器對(duì)應(yīng)的聯(lián)合體中;N個(gè)位域?qū)?yīng)的N個(gè)第一變量被定義在一個(gè)結(jié)構(gòu)體中;相應(yīng)的,所述通過(guò)訪問(wèn)所述對(duì)應(yīng)的一個(gè)第一變量訪問(wèn)所述待訪問(wèn)位域,包括:通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合訪問(wèn)所述待訪問(wèn)位域;所述通過(guò)訪問(wèn)所述第二變量訪問(wèn)所述寄存器的所有位域,包括:通過(guò)聯(lián)合體標(biāo)識(shí)與第二變量的標(biāo)識(shí)組合訪問(wèn)所述寄存器的所有位域。
其中,在處理器一側(cè),首先通過(guò)FPGA中的寄存器地址定義處理器側(cè)的寄存器名稱Register1。
/*********通過(guò)FPGA中的寄存器地址定義處理器側(cè)的寄存器名稱Register1********/
#define Register1(A+B)//其中A為基地址,B為偏移地址
假設(shè)需要定義的寄存器有16位,該寄存器定義4個(gè)位域,第一個(gè)位域占用寄存器的3個(gè)bit,第二個(gè)位域占用寄存器的7個(gè)bit,第三個(gè)位域占用寄存器的1個(gè)bit,第四個(gè)位域占用寄存器的5個(gè)bit。寄存器位數(shù)和位域的個(gè)數(shù)可以根據(jù)實(shí)際需求進(jìn)行調(diào)整,但所有位域所占用的位數(shù)之和要等于寄存器位數(shù)。
然后用結(jié)構(gòu)體定義處理器一側(cè)的寄存器位域,位域根據(jù)需要可以是某一位或者某幾位一起定義。
再定義寄存器聯(lián)合體,用于整體訪問(wèn)寄存器或者訪問(wèn)寄存器中的某一位或者某幾位。
當(dāng)需要訪問(wèn)寄存器的第12到第16位時(shí),則確定第一變量為bit_d,通過(guò)聯(lián)合體標(biāo)識(shí)REG1、結(jié)構(gòu)體標(biāo)識(shí)Register1與第一變量的標(biāo)識(shí)bit_d組合訪問(wèn)所述待訪問(wèn)位域,其中,聯(lián)合體標(biāo)識(shí)REG1、結(jié)構(gòu)體標(biāo)識(shí)Register1與第一變量的標(biāo)識(shí)bit_d的組合為REG1.bit.bit_d,同樣地,當(dāng)需要訪問(wèn)寄存器的第11位時(shí),則確定第一變量bit_c,通過(guò)聯(lián)合體標(biāo)識(shí)REG1、結(jié)構(gòu)體標(biāo)識(shí)Register1與第一變量的標(biāo)識(shí)bit_c組合訪問(wèn)所述待訪問(wèn)位域,其中,聯(lián)合體標(biāo)識(shí)REG1、結(jié)構(gòu)體標(biāo)識(shí)Register1與第一變量的標(biāo)識(shí)bit_d的組合為REG1.bit.bit_c;
當(dāng)需要訪問(wèn)寄存器的所有位域時(shí),則如寄存器的起始地址和終止地址確定第二變量,通過(guò)寄存器所對(duì)應(yīng)的第二變量從寄存器的初始地址開(kāi)始訪問(wèn)寄存器的所有位域。例如:REG1是聯(lián)合體標(biāo)識(shí),all是第二變量的標(biāo)識(shí),通過(guò)REG1.all可以從寄存器的初始地址開(kāi)始訪問(wèn)寄存器的所有位域。
本公開(kāi)實(shí)施例中,通過(guò)將寄存器定義為一個(gè)聯(lián)合體,該聯(lián)合體包括:所述N個(gè)第一變量和一個(gè)第二變量;所述N個(gè)第一變量組成一個(gè)結(jié)構(gòu)體,第二變量對(duì)應(yīng)所述寄存器的所有位域。當(dāng)通過(guò)第一變量訪問(wèn)待訪問(wèn)位域時(shí),則無(wú)需像現(xiàn)有技術(shù)中,僅僅定義寄存器為一個(gè)變量,只能通過(guò)寄存器對(duì)應(yīng)的固定的地址和偏移量訪問(wèn)對(duì)應(yīng)的位域,本公開(kāi)實(shí)施例中,寄存器對(duì)應(yīng)有第一變量,即每個(gè)位域?qū)?yīng)一個(gè)變量,因此寄存器訪問(wèn)裝置可以直接根據(jù)該第一變量訪問(wèn)待訪問(wèn)位域,從而提高寄存器訪問(wèn)效率;還可以通過(guò)第二變量訪問(wèn)寄存器的所有位域。從而提高寄存器訪問(wèn)的靈活性。
可選地,通過(guò)重新定義寄存器的N個(gè)位域中每個(gè)位域包含的位數(shù)及在寄存器中占用的位置,調(diào)整對(duì)應(yīng)的第一變量。第一變量所對(duì)應(yīng)的位域位數(shù)發(fā)生變化或者在寄存器中占用的位置發(fā)生變化,即待訪問(wèn)位域發(fā)生變化,從而提高寄存器訪問(wèn)的靈活性。
下面將詳細(xì)介紹通過(guò)第一變量讀取待訪問(wèn)位域中的數(shù)據(jù)以及向待訪問(wèn)位域?qū)懭霐?shù)據(jù)的過(guò)程。
圖3是根據(jù)另一示例性實(shí)施例示出的一種寄存器訪問(wèn)方法的流程圖,該方法的執(zhí)行主體為寄存器訪問(wèn)裝置,該寄存器訪問(wèn)裝置可以是CPU、DSP、MCU或者ARM處理器等,如圖3所示,該寄存器訪問(wèn)方法可以包括如下幾個(gè)步驟:
在步驟S301中,獲取待訪問(wèn)位域的起始地址和終止地址;
在步驟S302中,根據(jù)待訪問(wèn)位域的起始地址和終止地址,確定待訪問(wèn)位域?qū)?yīng)一個(gè)第一變量;
在步驟S303中,通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合讀取待訪問(wèn)位域中的所述數(shù)據(jù)。
其中,該過(guò)程為CPU、DSP、MCU或者ARM讀取待訪問(wèn)位域中的數(shù)據(jù)的過(guò)程,該過(guò)程關(guān)鍵在于通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合讀取待訪問(wèn)位域中的數(shù)據(jù)。由于寄存器對(duì)應(yīng)多個(gè)位域,第一變量與位域一一對(duì)應(yīng),第一變量用于表示位域。假設(shè)CPU、DSP、MCU或者ARM準(zhǔn)備從待訪問(wèn)位域中讀取數(shù)據(jù),則首先獲取待訪問(wèn)位域的起始地址和終止地址,然后根據(jù)這兩個(gè)地址確定對(duì)應(yīng)的第一變量,最后,通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合讀取待訪問(wèn)位域中的所述數(shù)據(jù)。
本公開(kāi)實(shí)施例中,提供了讀取寄存器位域中的數(shù)據(jù)的方法,獲取待訪問(wèn)位域的起始地址和終止地址,確定待訪問(wèn)位域?qū)?yīng)的一個(gè)第一變量時(shí),通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合讀取待訪問(wèn)位域中的所述數(shù)據(jù),由于可以直接根據(jù)第一變量讀取待訪問(wèn)位域中的數(shù)據(jù),從而提高寄存器讀取效率。
圖4是根據(jù)再一示例性實(shí)施例示出的一種寄存器訪問(wèn)方法的流程圖,本實(shí)施例以該寄存器訪問(wèn)方法應(yīng)用于終端中來(lái)舉例說(shuō)明,該寄存器訪問(wèn)裝置可以是CPU、DSP、MCU或者ARM處理器等,如圖4所示,該寄存器訪問(wèn)方法可以包括如下幾個(gè)步驟:
在步驟S401中,獲取待訪問(wèn)位域的起始地址和終止地址;
在步驟S402中,根據(jù)待訪問(wèn)位域的起始地址和終止地址,確定待訪問(wèn)位域?qū)?yīng)一個(gè)第一變量;
在步驟S403中,判斷待訪問(wèn)位域是否為空;若是,則執(zhí)行步驟S404,否則,則執(zhí)行步驟S405;
在步驟S404中,通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合向待訪問(wèn)位域?qū)懭霐?shù)據(jù);
在步驟S405中,通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合刪除待訪問(wèn)位域中的原始數(shù)據(jù),并向待訪問(wèn)位域?qū)懭胄碌臄?shù)據(jù)。
其中,該過(guò)程為CPU、DSP、MCU或者ARM在待訪問(wèn)位域中寫(xiě)入數(shù)據(jù)的過(guò)程,該過(guò)程關(guān)鍵在于通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合刪除在待訪問(wèn)位域?qū)懭霐?shù)據(jù),由于寄存器對(duì)應(yīng)多個(gè)位域,第一變量與位域一一對(duì)應(yīng),第一變量用于表示位域。假設(shè)CPU、DSP、MCU或者ARM準(zhǔn)備在第一個(gè)位域?qū)懭霐?shù)據(jù),則首先獲取第一個(gè)位域的起始地址A和終止地址B,根據(jù)該起始地址A和終止地址B確定對(duì)應(yīng)的第一變量,根據(jù)確定的第一變量確定第一個(gè)位域,然后判斷第一個(gè)位域是否為空,若為空則直接通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合向所述待訪問(wèn)位域?qū)懭霐?shù)據(jù),否則通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合刪除所述待訪問(wèn)位域中的原始數(shù)據(jù),并向所述待訪問(wèn)位域?qū)懭胄碌臄?shù)據(jù)。
本公開(kāi)實(shí)施例中,提供了在寄存器位域中寫(xiě)入數(shù)據(jù)的方法,根據(jù)待訪問(wèn)位域?qū)?yīng)的起始地址和終止地址確定第一變量,直接通過(guò)第一變量在待訪問(wèn)位域中寫(xiě)入數(shù)據(jù),從而提高寄存器寫(xiě)入效率。
通過(guò)聯(lián)合體標(biāo)識(shí)與第二變量的標(biāo)識(shí)組合訪問(wèn)所述寄存器的所有位域,包括:通過(guò)聯(lián)合體標(biāo)識(shí)與第二變量的標(biāo)識(shí)組合讀取所述寄存器中的所述數(shù)據(jù);或者,
在寄存器為空時(shí),則通過(guò)聯(lián)合體標(biāo)識(shí)與第二變量的標(biāo)識(shí)組合向所述寄存器寫(xiě)入數(shù)據(jù),在寄存器為非空時(shí),通過(guò)聯(lián)合體標(biāo)識(shí)與第二變量的標(biāo)識(shí)組合刪除所述寄存器中的原始數(shù)據(jù),并向所述寄存器寫(xiě)入新的數(shù)據(jù)。
下述為本公開(kāi)裝置實(shí)施例,可以用于執(zhí)行本公開(kāi)方法實(shí)施例。對(duì)于本公開(kāi)裝置實(shí)施例中未披露的細(xì)節(jié),請(qǐng)參照本公開(kāi)方法實(shí)施例。
圖5是根據(jù)一示例性實(shí)施例示出的一種寄存器訪問(wèn)裝置的框圖,該寄存器訪問(wèn)裝置可以通過(guò)軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為終端的部分。如圖5所示,該寄存器訪問(wèn)裝置可以包括:第一獲取模塊51、第一確定模塊52和第一訪問(wèn)模塊53;
所述第一獲取模塊51,被配置為獲取待訪問(wèn)位域的起始地址和終止地址;
所述第一確定模塊52,被配置為根據(jù)所述第一獲取模塊51所獲取的所述待訪問(wèn)位域的起始地址和所述終止地址,確定所述待訪問(wèn)位域?qū)?yīng)一個(gè)第一變量;
所述第一訪問(wèn)模塊53,被配置為通過(guò)訪問(wèn)所述第一確定模塊52所確定的第一變量訪問(wèn)所述待訪問(wèn)位域,其中,所述寄存器包括N個(gè)位域,所述N個(gè)位域中的每個(gè)位域?qū)?yīng)一個(gè)第一變量,N為大于或者等于2的正整數(shù)。
本公開(kāi)實(shí)施例所提供的寄存器訪問(wèn)裝置,該裝置部分與圖1所示技術(shù)方案對(duì)應(yīng),對(duì)應(yīng)內(nèi)容技術(shù)效果相同,在此不再贅述。
可選地,圖6是根據(jù)另一示例性實(shí)施例示出的一種寄存器訪問(wèn)裝置的框圖,該寄存器訪問(wèn)裝置可以通過(guò)軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為終端的部分。如圖6所示,所述裝置還包括:第二獲取模塊54、第二確定模塊55和第二訪問(wèn)模塊56;
所述第二獲取模塊54,被配置為獲取所述寄存器的起始地址和終止地址;
所述第二確定模塊55,被配置為根據(jù)所述第二獲取模塊54所獲取的所述寄存器的起始地址和所述終止地址確定所述寄存器對(duì)應(yīng)的第二變量;
所述第二訪問(wèn)模塊56,被配置為通過(guò)訪問(wèn)所述第二確定模塊55所確定的第二變量訪問(wèn)所述寄存器的所有位域,其中,所述第二變量對(duì)應(yīng)所述寄存器的所有位域。
可選地,所述第一變量和第二變量被定義在與所述寄存器對(duì)應(yīng)的聯(lián)合體中;
所述N個(gè)位域?qū)?yīng)的N個(gè)第一變量被定義在一個(gè)結(jié)構(gòu)體中;
相應(yīng)地,所述第一訪問(wèn)模塊53被配置為通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合訪問(wèn)所述待訪問(wèn)位域;
所述所述第二訪問(wèn)模塊56被配置為通過(guò)聯(lián)合體標(biāo)識(shí)與第二變量的標(biāo)識(shí)組合訪問(wèn)所述待訪問(wèn)位域。
可選地,所述裝置還包括:調(diào)整模塊57;所述調(diào)整模塊57被配置為通過(guò)重新定義寄存器的N個(gè)位域中每個(gè)位域包含的位數(shù)及在寄存器中占用的位置,調(diào)整對(duì)應(yīng)的第一變量。
圖7是根據(jù)再一示例性實(shí)施例示出的一種寄存器訪問(wèn)裝置的框圖,該寄存器訪問(wèn)裝置可以通過(guò)軟件、硬件或者兩者的結(jié)合實(shí)現(xiàn)成為終端的部分。如圖7所示,所述第一訪問(wèn)模塊53包括:讀取子模塊531、寫(xiě)入子模塊532和刪除子模塊533;
所述讀取子模塊531,被配置為通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合讀取所述待訪問(wèn)位域中的所述數(shù)據(jù);或者
在待訪問(wèn)位域?yàn)榭諘r(shí),則所述寫(xiě)入子模塊532被配置為通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合向所述待訪問(wèn)位域?qū)懭霐?shù)據(jù),在待訪問(wèn)位域?yàn)榉强諘r(shí),則所述刪除子模塊533被配置為通過(guò)聯(lián)合體標(biāo)識(shí)、結(jié)構(gòu)體標(biāo)識(shí)與第一變量的標(biāo)識(shí)組合刪除所述待訪問(wèn)位域中的原始數(shù)據(jù),并且所述寫(xiě)入子模塊532被配置為向所述待訪問(wèn)位域?qū)懭胄碌臄?shù)據(jù)。
本公開(kāi)實(shí)施例所提供的寄存器訪問(wèn)裝置,該裝置部分與圖4、圖5所示技術(shù)方案對(duì)應(yīng),對(duì)應(yīng)內(nèi)容技術(shù)效果相同,在此不再贅述。
圖8是根據(jù)一示例性實(shí)施例示出的一種寄存器訪問(wèn)系統(tǒng)800的框圖。例如,系統(tǒng)800可以是移動(dòng)電話,計(jì)算機(jī),數(shù)字廣播終端,消息收發(fā)設(shè)備,游戲控制臺(tái),平板設(shè)備,醫(yī)療設(shè)備,健身設(shè)備,個(gè)人數(shù)字助理等。
參照?qǐng)D8,系統(tǒng)800可以包括以下一個(gè)或多個(gè)組件:處理組件802(即上述的寄存器訪問(wèn)裝置),存儲(chǔ)器804,電源組件806,多媒體組件808,音頻組件810,輸入/輸出(I/O)的接口812,傳感器組件814、通信組件816以及寄存器818。
處理組件802通??刂葡到y(tǒng)800的整體操作,諸如與顯示,電話呼叫,數(shù)據(jù)通信,相機(jī)操作和記錄操作相關(guān)聯(lián)的操作。處理組件802可以包括一個(gè)或多個(gè)處理器820來(lái)執(zhí)行指令,以完成上述的方法的全部或部分步驟。此外,處理組件802可以包括一個(gè)或多個(gè)模塊,便于處理組件802和其他組件之間的交互。例如,處理組件802可以包括多媒體模塊,以方便多媒體組件808和處理組件802之間的交互。
存儲(chǔ)器804被配置為存儲(chǔ)各種類(lèi)型的數(shù)據(jù)以支持在系統(tǒng)800的操作。這些數(shù)據(jù)的示例包括用于在系統(tǒng)800上操作的任何應(yīng)用程序或方法的指令,聯(lián)系人數(shù)據(jù),電話簿數(shù)據(jù),消息,圖片,視頻等。存儲(chǔ)器804可以由任何類(lèi)型的易失性或非易失性存儲(chǔ)設(shè)備或者它們的組合實(shí)現(xiàn),如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM),電可擦除可編程只讀存儲(chǔ)器(EEPROM),可擦除可編程只讀存儲(chǔ)器(EPROM),可編程只讀存儲(chǔ)器(PROM),只讀存儲(chǔ)器(ROM),磁存儲(chǔ)器,快閃存儲(chǔ)器,磁盤(pán)或光盤(pán)。
電源組件806為系統(tǒng)800的各種組件提供電力。電源組件806可以包括電源管理系統(tǒng),一個(gè)或多個(gè)電源,及其他與為系統(tǒng)800生成、管理和分配電力相關(guān)聯(lián)的組件。
多媒體組件808包括在所述系統(tǒng)800和用戶之間的提供一個(gè)輸出接口的觸控顯示屏。在一些實(shí)施例中,觸控顯示屏可以包括液晶顯示器(LCD)和觸摸面板(TP)。觸摸面板包括一個(gè)或多個(gè)觸摸傳感器以感測(cè)觸摸、滑動(dòng)和觸摸面板上的手勢(shì)。所述觸摸傳感器可以不僅感測(cè)觸摸或滑動(dòng)動(dòng)作的邊界,而且還檢測(cè)與所述觸摸或滑動(dòng)操作相關(guān)的持續(xù)時(shí)間和壓力。在一些實(shí)施例中,多媒體組件808包括一個(gè)前置攝像頭和/或后置攝像頭。當(dāng)系統(tǒng)800處于操作模式,如拍攝模式或視頻模式時(shí),前置攝像頭和/或后置攝像頭可以接收外部的多媒體數(shù)據(jù)。每個(gè)前置攝像頭和后置攝像頭可以是一個(gè)固定的光學(xué)透鏡系統(tǒng)或具有焦距和光學(xué)變焦能力。
音頻組件810被配置為輸出和/或輸入音頻信號(hào)。例如,音頻組件810包括一個(gè)麥克風(fēng)(MIC),當(dāng)系統(tǒng)800處于操作模式,如呼叫模式、記錄模式和語(yǔ)音識(shí)別模式時(shí),麥克風(fēng)被配置為接收外部音頻信號(hào)。所接收的音頻信號(hào)可以被進(jìn)一步存儲(chǔ)在存儲(chǔ)器804或經(jīng)由通信組件816發(fā)送。在一些實(shí)施例中,音頻組件810還包括一個(gè)揚(yáng)聲器,用于輸出音頻信號(hào)。
I/O接口812為處理組件802和外圍接口模塊之間提供接口,上述外圍接口模塊可以是鍵盤(pán),點(diǎn)擊輪,按鈕等。這些按鈕可包括但不限于:主頁(yè)按鈕、音量按鈕、啟動(dòng)按鈕和鎖定按鈕。
傳感器組件814包括一個(gè)或多個(gè)傳感器,用于為系統(tǒng)800提供各個(gè)方面的狀態(tài)評(píng)估。例如,傳感器組件814可以檢測(cè)到系統(tǒng)800的打開(kāi)/關(guān)閉狀態(tài),組件的相對(duì)定位,例如所述組件為系統(tǒng)800的顯示器和小鍵盤(pán),傳感器組件814還可以檢測(cè)系統(tǒng)800或系統(tǒng)800一個(gè)組件的位置改變,用戶與系統(tǒng)800接觸的存在或不存在,系統(tǒng)800方位或加速/減速和系統(tǒng)800的溫度變化。傳感器組件814可以包括接近傳感器,被配置用來(lái)在沒(méi)有任何的物理接觸時(shí)檢測(cè)附近物體的存在。傳感器組件814還可以包括光傳感器,如CMOS或CCD圖像傳感器,用于在成像應(yīng)用中使用。在一些實(shí)施例中,該傳感器組件814還可以包括加速度傳感器,陀螺儀傳感器,磁傳感器,壓力傳感器或溫度傳感器。
通信組件816被配置為便于系統(tǒng)800和其他設(shè)備之間有線或無(wú)線方式的通信。系統(tǒng)800可以接入基于通信標(biāo)準(zhǔn)的無(wú)線網(wǎng)絡(luò),如WiFi,2G或3G,或它們的組合。在一個(gè)示例性實(shí)施例中,通信組件816經(jīng)由廣播信道接收來(lái)自外部廣播管理系統(tǒng)的廣播信號(hào)或廣播相關(guān)信息。在一個(gè)示例性實(shí)施例中,所述通信組件816還包括近場(chǎng)通信(NFC)模塊,以促進(jìn)短程通信。例如,在NFC模塊可基于射頻識(shí)別(RFID)技術(shù),紅外數(shù)據(jù)協(xié)會(huì)(IrDA)技術(shù),超寬帶(UWB)技術(shù),藍(lán)牙(BT)技術(shù)和其他技術(shù)來(lái)實(shí)現(xiàn)。
在示例性實(shí)施例中,寄存器818可以設(shè)置在現(xiàn)場(chǎng)可編程門(mén)陣列FPGA上,處理組件802用于訪問(wèn)該寄存器818,例如:讀取寄存器818上的數(shù)據(jù),或者將數(shù)據(jù)寫(xiě)入至寄存器818中,或者修改寄存器818上的數(shù)據(jù)等。
在示例性實(shí)施例中,還提供了一種包括指令的非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),例如包括指令的存儲(chǔ)器804,上述指令可由系統(tǒng)800的處理器820執(zhí)行以完成上述方法。例如,所述非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是ROM、隨機(jī)存取存儲(chǔ)器(RAM)、CD-ROM、磁帶、軟盤(pán)和光數(shù)據(jù)存儲(chǔ)設(shè)備等。
一種非臨時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),當(dāng)所述存儲(chǔ)介質(zhì)中的指令由系統(tǒng)800的處理器執(zhí)行時(shí),使得系統(tǒng)800能夠執(zhí)行一種寄存器訪問(wèn)方法。
該方法包括:獲取待訪問(wèn)位域的起始地址和終止地址;
根據(jù)所述待訪問(wèn)位域的起始地址和所述終止地址,確定所述待訪問(wèn)位域?qū)?yīng)一個(gè)第一變量;
通過(guò)訪問(wèn)所述對(duì)應(yīng)的一個(gè)第一變量訪問(wèn)所述待訪問(wèn)位域,其中,寄存器包括N個(gè)位域,所述N個(gè)位域中的每個(gè)位域?qū)?yīng)一個(gè)第一變量,N為大于或者等于2的正整數(shù)。
本領(lǐng)域技術(shù)人員在考慮說(shuō)明書(shū)及實(shí)踐這里公開(kāi)的發(fā)明后,將容易想到本公開(kāi)的其它實(shí)施方案。本申請(qǐng)旨在涵蓋本公開(kāi)的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開(kāi)的一般性原理并包括本公開(kāi)未公開(kāi)的本技術(shù)領(lǐng)域中的公知常識(shí)或慣用技術(shù)手段。說(shuō)明書(shū)和實(shí)施例僅被視為示例性的,本公開(kāi)的真正范圍和精神由下面的權(quán)利要求書(shū)指出。
應(yīng)當(dāng)理解的是,本公開(kāi)并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本公開(kāi)的范圍僅由所附的權(quán)利要求書(shū)來(lái)限制。