欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

判斷存儲器區(qū)塊所對應函數(shù)式的查詢方法及計算機系統(tǒng)的制作方法

文檔序號:6641655閱讀:143來源:國知局
專利名稱:判斷存儲器區(qū)塊所對應函數(shù)式的查詢方法及計算機系統(tǒng)的制作方法
技術領域
本發(fā)明提供一種用以查詢一存儲器區(qū)塊所對應的函數(shù)式的方法及系統(tǒng),尤指一種將一返回地址紀錄于一存儲器區(qū)塊的首標以判斷一存儲器區(qū)塊所對應的函數(shù)式的查詢方法及計算機系統(tǒng)。
背景技術
在一計算機系統(tǒng)中,動態(tài)配置一存儲器區(qū)塊給一函數(shù)式(function)使用是一個基本的系統(tǒng)服務,各個函數(shù)式可在需要的時候去要求該計算機系統(tǒng)動態(tài)地配置一存儲器區(qū)塊給它,然后在確定不需要使用該存儲器區(qū)塊后,將該已配置的存儲器區(qū)塊歸還給該計算機系統(tǒng),以達到存儲器資源共享的目的;然而,若該已配置的存儲器區(qū)塊已確定不會再被使用,卻仍沒被正確地歸還給該計算機系統(tǒng)時,則該已配置但不再被使用的存儲器區(qū)塊便不會被該計算機系統(tǒng)重新配置給其他函數(shù)式,亦即造成可共享的存儲器資源減少,此現(xiàn)象一般稱之為存儲器遺失(memory leak)。存儲器遺失會造成該計算機系統(tǒng)的存儲器資源不足,輕者導致該計算機系統(tǒng)的執(zhí)行效能下降,重者導致該計算機系統(tǒng)崩潰(crash),因此,存儲器遺失是一個相當嚴重的問題。所以,如何在該計算機系統(tǒng)檢測到存儲器不足時,進一步去檢測是否為存儲器遺失的問題,并找出造成存儲器遺失的問題的根源所在,是一必需且重要的工作。接下來將提供一實施例,以描述現(xiàn)有技術如何解決上述問題。
請參閱圖1,圖1為現(xiàn)有計算機系統(tǒng)10的功能方塊圖。計算機系統(tǒng)10包含有一微處理器12、一閃速存儲器(flash memory)14、一隨機存儲存儲器(random access memory,RAM)16與一寄存器式存儲器18。于計算機系統(tǒng)10的工作為微處理器12存取閃速存儲器14、隨機存儲存儲器16或寄存器式存儲器18內(nèi)所存儲的數(shù)據(jù),并執(zhí)行必要的運算。閃速存儲器14為一非易失性(non-volatile)存儲器,存儲有一第一函數(shù)式F1的原始碼FS1、一第二函數(shù)式F2的原始碼FS2以及兩個對應第一函數(shù)式的假指令(pre-processdirective),分別為”__FILE__”以及”__LINE__”,這些假指令的功用會于之后的篇幅解釋。隨機存儲存儲器16為一易失性(volatile)存儲器,其包含有多個存儲器區(qū)塊(memory block)16a、16b、16c,存儲器區(qū)塊16a擁有一首標16ah,存儲器區(qū)塊16b擁有一首標16bh,而存儲器區(qū)塊16c擁有一首標16ch。此外,計算機系統(tǒng)10中,寄存器式存儲器18用來存儲微處理器12對一函數(shù)式進行編譯(compile)后所產(chǎn)生的執(zhí)行碼。
請同時參閱圖1與圖2,圖2為圖1所示的第一函數(shù)式F1調(diào)用第二函數(shù)式F2的示意圖。當微處理器12編譯一個包含有第一函數(shù)式F1與第二函數(shù)式F2的程序,于程序編譯(compile time)的過程中,可知第一函數(shù)式F1中的第L1行程序碼的內(nèi)容為調(diào)用第二函數(shù)式F2,此時,依據(jù)現(xiàn)有技術,微處理器12會將第一函數(shù)式F1的函數(shù)式名稱(例如F1)紀錄于假指令__FILE__內(nèi),而將行號L1紀錄于假指令__LINE__內(nèi)。在程序編譯完成之后,微處理器12便產(chǎn)生一對應第一函數(shù)式F1的第一函數(shù)式執(zhí)行碼FE1以及一對應第二函數(shù)式F2的第二函數(shù)式執(zhí)行碼FE2,請注意,第一函數(shù)式執(zhí)行碼FE1與第二函數(shù)式執(zhí)行碼FE2皆存儲于寄存器式存儲器18內(nèi)。
于本實施例中,第一函數(shù)式F1調(diào)用第二函數(shù)式F2的目的為要求計算機系統(tǒng)10將某一存儲器區(qū)塊配置給第一函數(shù)式F1,因此,在程序編譯完成后,接下來于程序執(zhí)行(run time)時,當計算機系統(tǒng)10執(zhí)行第一函數(shù)式執(zhí)行碼FE1的內(nèi)容到了對應行號L1的部分,程序執(zhí)行點會跳躍(branch)到第二函數(shù)式執(zhí)行碼FE2所在的地址,亦即從第二函數(shù)式F2的起點開始執(zhí)行第二函數(shù)式執(zhí)行碼FE2的內(nèi)容,假設目前計算機系統(tǒng)10應第二函數(shù)式F2的要求配置給第一函數(shù)式F1使用的存儲器區(qū)塊為存儲器區(qū)塊16b,此時,計算機系統(tǒng)10將存儲器配置信息記錄在存儲器區(qū)塊16b的首標(header),也就是將假指令__FILE__與__LINE__所紀錄的內(nèi)容,分別為第一函數(shù)式F1的函數(shù)式名稱(亦即F1)與行號L1,拷貝至存儲器區(qū)塊16b的首標。如本領域所現(xiàn)有,假指令__FILE__的數(shù)據(jù)存儲類型(data type)是字符(character),因此若需存儲的函數(shù)式名稱愈長,即代表假指令__FILE__需占用的存儲空間愈大,而假指令__LINE__內(nèi)所存儲的行號的數(shù)據(jù)存儲類型為一整數(shù)(integer),通常一整數(shù)所占用的空間為四個字節(jié)(4bytes)。在計算機系統(tǒng)10執(zhí)行完第二函數(shù)式執(zhí)行碼FE2之后,程序執(zhí)行點會跳躍回第一函數(shù)式F1,繼續(xù)執(zhí)行第一函數(shù)式F1的第L2行(第L1行的下一行),亦即執(zhí)行第一函數(shù)式執(zhí)行碼FE1中對應于行號L2的部分。
當一工程人員(例如程序設計師)查覺可能有存儲器遺失(memory leak)的現(xiàn)象時,工程人員可查看存儲器區(qū)塊16b的首標以得知存儲器區(qū)塊16b由第一函數(shù)式F1要求計算機系統(tǒng)10所配置給其使用的存儲器區(qū)塊。因此,利用現(xiàn)有方法可得知所有存儲器區(qū)塊的配置情形,檢視遺失的存儲器為哪一函數(shù)式要求計算機系統(tǒng)來配置使用,以找出存儲器遺失的問題根源。然而現(xiàn)有方法于程序編譯時需要占用非易失性存儲器的空間來紀錄存儲器配置信息,亦即假指令__FILE__與__LINE__的內(nèi)容,且于程序執(zhí)行時亦需要拷貝該存儲器配置信息至隨機存儲存儲器內(nèi),因此提高了計算機系統(tǒng)于時間與存儲器空間的成本而提高計算機系統(tǒng)的系統(tǒng)負擔(system overhand)。

發(fā)明內(nèi)容
因此,本發(fā)明的主要目的的一在于提供一種將一返回地址(returnaddress)紀錄于一存儲器區(qū)塊的首標以查詢一存儲器區(qū)塊所對應的函數(shù)式的查詢方法及計算機系統(tǒng),以解決上述問題。
依據(jù)本發(fā)明的申請專利范圍,其提供一種查詢方法。該查詢方法用來查詢一計算機系統(tǒng)的一存儲器中的一存儲器區(qū)塊(memory block)所對應的一函數(shù)式(function),該存儲器包含有多個存儲器區(qū)塊,且存儲一第一函數(shù)式執(zhí)行碼、一第二函數(shù)式執(zhí)行碼與一符號配置表(linker map),該計算機系統(tǒng)所執(zhí)行的該第一函數(shù)式執(zhí)行碼調(diào)用該第二函數(shù)式執(zhí)行碼以要求該計算機系統(tǒng)將一第一存儲器區(qū)塊配置給該第一函數(shù)式執(zhí)行碼,該符號配置表紀錄該第一函數(shù)式執(zhí)行碼所對應的一符號地址,該查詢方法包含有紀錄該第二函數(shù)式執(zhí)行碼的一返回地址于該存儲器中一預定存儲器區(qū)塊中;以及自該預定存儲器區(qū)塊讀取該返回地址,并依據(jù)該返回地址與該符號配置表中的該符號地址,判斷出該第一存儲器區(qū)塊配置給該第一函數(shù)式執(zhí)行碼。
此外,依據(jù)本發(fā)明,其還提供一種計算機系統(tǒng)。該計算機系統(tǒng)包含有一存儲器,用來存儲一第一函數(shù)式執(zhí)行碼、一第二函數(shù)式執(zhí)行碼與一符號配置表(linker map),該符號配置表紀錄該第一函數(shù)式執(zhí)行碼所對應的一符號地址,該存儲器包含有多個存儲器區(qū)塊(memory block);以及一運算單元,耦接于該存儲器,用來執(zhí)行該第一函數(shù)式執(zhí)行碼與該第二函數(shù)式執(zhí)行碼,該第一函數(shù)式執(zhí)行碼調(diào)用該第二函數(shù)式執(zhí)行碼以要求將一第一存儲器區(qū)塊配置給該第一函數(shù)式執(zhí)行碼,并將該第二函數(shù)式執(zhí)行碼的一返回地址存儲于該存儲器中一預定存儲器區(qū)塊中,其中該運算單元自該預定存儲器區(qū)塊讀取該返回地址,并依據(jù)該返回地址與該符號配置表中的該符號地址來判斷該第一存儲器區(qū)塊配置給該第一函數(shù)式執(zhí)行碼。
本發(fā)明的優(yōu)點的一在于完全不需要占用任何額外的非易失存儲器空間,且相較于現(xiàn)有方法的存儲器配置信息,本發(fā)明紀錄于已配置存儲器區(qū)塊的首標內(nèi)的存儲器配置信息僅為一個返回地址,因此僅需占用存儲器區(qū)塊的首標內(nèi)四個字節(jié)(4bytes)的空間,即能達到準確且快速的找到該已配置的存儲器區(qū)塊由哪一函數(shù)式要求計算機系統(tǒng)所配置,因此,本發(fā)明方法對于計算機系統(tǒng)造成的系統(tǒng)負擔較低,且能降低時間與存儲器空間的成本以進一步地提高計算機系統(tǒng)的執(zhí)行效能與執(zhí)行速度。


圖1為現(xiàn)有計算機系統(tǒng)的功能方塊圖。
圖2為圖1所示的第一函數(shù)式調(diào)用第二函數(shù)式的示意圖。
圖3為本發(fā)明計算機系統(tǒng)的功能方塊圖。
圖4為本發(fā)明查詢一存儲器區(qū)塊所對應的函數(shù)式的查詢方法于一第一階段的流程圖。
圖5為本發(fā)明查詢一存儲器區(qū)塊所對應的函數(shù)式的查詢方法于一第二階段的流程圖。
主要元件符號說明10、20 計算機系統(tǒng) 12、22 微處理器14、24 閃速存儲器 16、26 隨機存取存儲器16a、16b、16c、26a、26b、26c存儲器區(qū)塊16ah、16bh、16ch、26ah、26bh、26ch 首標18、28 寄存器式存儲器具體實施方式
請參閱圖3,圖3為本發(fā)明計算機系統(tǒng)20的功能方塊圖。計算機系統(tǒng)20包含有一微處理器22、一閃速存儲器24、一隨機存儲存儲器26與一寄存器式存儲器28。本實施例中,閃速存儲器24存儲有一第一函數(shù)式F1的原始碼FS1以及一第二函數(shù)式F2的原始碼FS2。隨機存儲存儲器26包含有多個存儲器區(qū)塊(memory block)26a、26b、26c,其中存儲器區(qū)塊26a、26b、26c分別具有一相對應的首標26ah、26bh、26ch。請注意,圖3所示的計算機系統(tǒng)20與圖1所示的計算機系統(tǒng)10中的同名元件具有相同的功能,因此其功能與操作不再重復贅述。本實施例中,寄存器式存儲器28內(nèi)除了紀錄微處理器22編譯第一函數(shù)式F1與第二函數(shù)式F2所產(chǎn)生的第一函數(shù)式執(zhí)行碼FE1及第二函數(shù)式執(zhí)行碼FE2外,其另存儲有一符號配置表ST,符號配置表ST紀錄有第一函數(shù)式F1的函數(shù)式名稱(例如F1),以及第一函數(shù)式執(zhí)行碼FE1所對應的一符號地址F1A(也就是第一函數(shù)式執(zhí)行碼FE1位于寄存器式存儲器28內(nèi)的存儲地址F1A),同樣地,符號配置表ST亦會紀錄有第二函數(shù)式F2的函數(shù)式名稱(例如F2),以及第二函數(shù)式執(zhí)行碼FE2所對應的一符號地址F2A(也就是第二函數(shù)式執(zhí)行碼FE2位于寄存器式存儲器28內(nèi)的存儲地址F2A),符號配置表ST于本實施例中的用途會于之后的篇幅中詳述。請注意,符號配置表ST為現(xiàn)有程序編譯操作時必有的元件,因此在不影響本發(fā)明技術公開的情況下,符號配置表ST的詳細建置過程不再贅述。
請同時參閱圖3、圖4以及圖5,圖4為本發(fā)明查詢存儲器區(qū)塊16b所對應的函數(shù)式的查詢方法于一第一階段的流程圖,而圖5為本發(fā)明查詢存儲器區(qū)塊16b所對應的函數(shù)式的查詢方法于一第二階段的流程圖。本發(fā)明查詢方法的工作包含有兩個階段第一階段與第二階段,其各自包含的步驟如下第一階段步驟200第一階段開始;步驟202將返回地址RA存儲于存儲器區(qū)塊26b的首標26bh中;以及步驟204第一階段結束。
當一工程人員(例如程序設計師)查覺到可能有存儲器遺失的現(xiàn)象時,則開始控制計算機系統(tǒng)20執(zhí)行下列步驟第二階段步驟206第二階段開始;步驟208讀取存儲器區(qū)塊26b的首標內(nèi)26bh所紀錄的返回地址RA;步驟210依據(jù)返回地址RA與符號配置表ST中的符號地址F1A,判斷出存儲器區(qū)塊16b于第一函數(shù)式執(zhí)行碼FE1執(zhí)行時配置給第一函數(shù)式F1;以及步驟212第二階段結束。
上述第一階段的工作(如圖4所示)詳細說明如下。舉例來說,寄存器式存儲器28中一部份的空間用來存放對應第一函數(shù)式F1的第一函數(shù)式執(zhí)行碼FE1,行號L1部分的執(zhí)行碼即是存放于寄存器式存儲器28的地址A1處,行號L2部分的執(zhí)行碼即是存放于寄存器式存儲器28的地址A2處,而寄存器式存儲器28的地址B1處所存放的是對應第二函數(shù)式F2的第二函數(shù)式執(zhí)行碼FE2。
本實施例中,當一程序執(zhí)行時,若計算機系統(tǒng)20執(zhí)行第一函數(shù)式執(zhí)行碼FE1的內(nèi)容到了對應行號L1的部分,亦即寄存器式存儲器28的地址A1中所存儲的內(nèi)容時,則第一函數(shù)式F1需調(diào)用第二函數(shù)式F2,此時計算機系統(tǒng)20會同時做兩個動作控制程序的執(zhí)行點跳躍(branch)到地址B1,以及將地址A2視為第二函數(shù)式F2(第二函數(shù)式執(zhí)行碼FE2)的返回地址RA,并紀錄地址A2在一返回地址寄存器(LR Register)內(nèi)。因此,計算機系統(tǒng)20將該返回地址寄存器內(nèi)所紀錄的第二函數(shù)式F2(第二函數(shù)式執(zhí)行碼FE2)的返回地址RA(其值為地址A2)存儲于存儲器區(qū)塊26b中的首標26bh(步驟202),請注意,于其他實施例中,本發(fā)明亦可將該返回地址RA紀錄于一堆棧(stack)而非一返回地址寄存器內(nèi),以及該堆迭可存儲于寄存器式存儲器28或于微處理器22可存取到的任何存儲裝置中。之后,計算機系統(tǒng)20開始執(zhí)行寄存器式存儲器28中地址B1的內(nèi)容,也就是開始執(zhí)行第二函數(shù)式執(zhí)行碼FE2。當?shù)诙瘮?shù)式執(zhí)行碼FE2執(zhí)行完畢后,執(zhí)行點會跳回該返回地址寄存器內(nèi)所記錄的地址A2,繼續(xù)執(zhí)行第一函數(shù)式F1的第L2行(第L1行的下一行),亦即執(zhí)行第一函數(shù)式執(zhí)行碼FE1中對應于行號L2的部分。請注意,因為返回地址RA是在程序執(zhí)行中動態(tài)地取得,因此不會像現(xiàn)有技術一般地需要占用寄存器式存儲器28的空間做額外的記錄,亦即記錄如圖1所示的假指令__FILE__與__LINE__,所以本發(fā)明所提出的方法可避免造成計算機系統(tǒng)20的負擔。
當工程人員(例如程序設計師)查覺到可能有存儲器遺失的現(xiàn)象時,工程人員必須查看每一個存儲器區(qū)塊的首標,以找出出現(xiàn)不正常工作的已配置存儲器區(qū)塊,也就是有應該歸還給計算機系統(tǒng)20卻尚未歸還的存儲器區(qū)塊,于此一實施例中,假設存儲器區(qū)塊26b為上述不正常工作的存儲器區(qū)塊,因此,工程人員可從存儲器區(qū)塊26b的首標26bh讀取出其所記錄的返回地址RA(步驟208),然而,此時尚無法得知存儲器區(qū)塊26b是由哪個函數(shù)式要求計算機系統(tǒng)20所配置,因此工程人員便依據(jù)返回地址RA,從符號配置表ST中所有小于返回地址RA的數(shù)值中選取出一最大數(shù)值,該最大數(shù)值對應符號地址F1A,因此可知記錄有返回地址RA的存儲器區(qū)塊26b被計算機系統(tǒng)20配置給符號地址F1A所對應的第一函數(shù)式F1(步驟210)。
上述實施例中,本發(fā)明所提出的方法應用于處理存儲器遺失的問題,然而,本發(fā)明所提出的方法亦可用于紀錄調(diào)用堆棧(call stack)或是系統(tǒng)安全方面功能的設計,例如設定某些開放函數(shù)式僅允許特定模組調(diào)用等等方面的應用,均屬本發(fā)明的范疇。
相較于現(xiàn)有技術,本發(fā)明查詢方法完全不需要占用任何額外的非易失存儲器空間,且相較于現(xiàn)有方法的存儲器配置信息,本發(fā)明查詢方法紀錄于存儲器區(qū)塊的首標內(nèi)的存儲器配置信息僅為一個返回地址,因此僅需占用存儲器區(qū)塊的首標內(nèi)四個字節(jié)(4bytes)的空間,即能達到準確且快速的找到該已配置的存儲器區(qū)塊由哪一函數(shù)式要求計算機系統(tǒng)所配置,因此,應用本發(fā)明查詢方法的計算機系統(tǒng)具有較低的系統(tǒng)負擔,此外,本發(fā)明查詢方法能降低時間與存儲器空間的成本以進一步地提高計算機系統(tǒng)的執(zhí)行效能與執(zhí)行速度。
以上所述僅為本發(fā)明的優(yōu)選實施例,凡依本發(fā)明權利要求所進行的等效變化與修改,皆應屬本發(fā)明的涵蓋范圍。
權利要求
1.一種查詢方法,用來查詢一計算機系統(tǒng)的一存儲器中的一存儲器區(qū)塊所對應的一函數(shù)式,該存儲器包含有多個存儲器區(qū)塊,且存儲一第一函數(shù)式執(zhí)行碼、一第二函數(shù)式執(zhí)行碼與一符號配置表,該計算機系統(tǒng)所執(zhí)行的該第一函數(shù)式執(zhí)行碼調(diào)用該第二函數(shù)式執(zhí)行碼以要求該計算機系統(tǒng)將一第一存儲器區(qū)塊配置給該第一函數(shù)式執(zhí)行碼,該符號配置表紀錄該第一函數(shù)式執(zhí)行碼所對應的一符號地址,該查詢方法包含有(a)紀錄該第二函數(shù)式執(zhí)行碼的一返回地址于該存儲器中一預定存儲器區(qū)塊中;以及(b)自該預定存儲器區(qū)塊讀取該返回地址,并依據(jù)該返回地址與該符號配置表中的該符號地址,判斷出該第一存儲器區(qū)塊配置給該第一函數(shù)式執(zhí)行碼。
2.如權利要求1所述的查詢方法,其中該預定存儲器區(qū)塊為該第一存儲器區(qū)塊。
3.如權利要求2所述的查詢方法,其中步驟(a)將該返回地址記錄于該第一存儲器區(qū)塊的一首標中。
4.如權利要求1所述的查詢方法,其中該符號配置表紀錄該第一函數(shù)式執(zhí)行碼的函數(shù)式名稱與該符號地址,以及該符號地址為該函數(shù)式名稱于該存儲器中的存儲地址。
5.一種計算機系統(tǒng),其包含有一存儲器,用來存儲一第一函數(shù)式執(zhí)行碼、一第二函數(shù)式執(zhí)行碼與一符號配置表,該符號配置表紀錄該第一函數(shù)式執(zhí)行碼所對應的一符號地址,該存儲器包含有多個存儲器區(qū)塊;以及一運算單元,耦接于該存儲器,用來執(zhí)行該第一函數(shù)式執(zhí)行碼與該第二函數(shù)式執(zhí)行碼,該第一函數(shù)式執(zhí)行碼調(diào)用該第二函數(shù)式執(zhí)行碼以要求將一第一存儲器區(qū)塊配置給該第一函數(shù)式執(zhí)行碼,并將該第二函數(shù)式執(zhí)行碼的一返回地址存儲于該存儲器中一預定存儲器區(qū)塊中,其中該運算單元自該預定存儲器區(qū)塊讀取該返回地址,并依據(jù)該返回地址與該符號配置表中的該符號地址來判斷該第一存儲器區(qū)塊配置給該第一函數(shù)式執(zhí)行碼。
6.如權利要求5所述的計算機系統(tǒng),其中該預定存儲器區(qū)塊為該第一存儲器區(qū)塊。
7.如權利要求6所述的計算機系統(tǒng),其中該運算單元將該返回地址記錄于該第一存儲器區(qū)塊的一首標中。
8.如權利要求5所述的計算機系統(tǒng),其中該符號配置表紀錄該第一函數(shù)式執(zhí)行碼的函數(shù)式名稱與該符號地址,以及該符號地址為該函數(shù)式名稱于該存儲器中的存儲地址。
全文摘要
本發(fā)明提供一種用以查詢一計算機系統(tǒng)的一存儲器中的一存儲器區(qū)塊所對應的一函數(shù)式的查詢方法及其計算機系統(tǒng)。該計算機系統(tǒng)所執(zhí)行的一第一函數(shù)式執(zhí)行碼調(diào)用一第二函數(shù)式執(zhí)行碼以要求該計算機系統(tǒng)將一第一存儲器區(qū)塊配置給該第一函數(shù)式執(zhí)行碼,一符號配置表紀錄該第一函數(shù)式執(zhí)行碼所對應的一符號地址,該查詢方法包含有紀錄該第二函數(shù)式執(zhí)行碼的一返回地址于該存儲器中一預定存儲器區(qū)塊中,之后自該預定存儲器區(qū)塊讀取該返回地址,以及依據(jù)該返回地址與該符號配置表中的該符號地址,判斷出該第一存儲器區(qū)塊配置給該第一函數(shù)式執(zhí)行碼。
文檔編號G06F12/02GK1924828SQ20051009767
公開日2007年3月7日 申請日期2005年8月31日 優(yōu)先權日2005年8月31日
發(fā)明者林昂賢 申請人:明基電通股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
临夏县| 辽宁省| 丁青县| 黔西| 浙江省| 八宿县| 同心县| 金堂县| 株洲市| 东丰县| 会昌县| 南昌市| 天等县| 阳春市| 正阳县| 如皋市| 屏东县| 贺州市| 蕲春县| 连南| 新郑市| 安徽省| 陆川县| 陆良县| 凤山市| 比如县| 清远市| 扬州市| 绵竹市| 文登市| 三门县| 平昌县| 邛崃市| 濮阳市| 锦屏县| 乡宁县| 浙江省| 渭南市| 荣昌县| 措美县| 平潭县|