一種生成快速出棧的匯編代碼的編譯方法及編譯器的制造方法
【專利摘要】本發(fā)明提供一種生成快速出棧的匯編代碼的編譯器,包括生成中間代碼的前端處理模塊和最終生成匯編代碼的后端處理模塊;所述后端處理模塊增加:出棧檢測(cè)模塊,用來在前端處理模塊生成中間代碼后,判斷當(dāng)前程序是否有出棧操作;出棧地址處理單元,用來判斷當(dāng)前出棧地址是否符合C*core所規(guī)定的出棧地址要求;若符合,則以此地址作為最終的出棧地址直接輸出,否則將堆棧地址通過地址計(jì)算單元改寫成為符合Ocore對(duì)堆棧地址要求的堆棧地址。本發(fā)明的優(yōu)點(diǎn)和積極效果是:要比以前編譯器編譯出來的匯編指令中出棧指令要少,而在程序的運(yùn)行過程中,壓棧出棧是經(jīng)常使用的指令;因此處理器所要執(zhí)行的有效指令的條數(shù)要比以前少很多,從而提高了處理器的處理速度和性能。
【專利說明】一種生成快速出棧的匯編代碼的編譯方法及編譯器
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及處理器體系結(jié)構(gòu)和編譯器開發(fā)【技術(shù)領(lǐng)域】,尤其是涉及一種生成快速出 棧的匯編代碼的編譯方法及編譯器。
【背景技術(shù)】
[0002] 隨著處理器技術(shù)和現(xiàn)代工藝的進(jìn)步,處理器的運(yùn)算速度越來越快,性能越來越強(qiáng), 同時(shí)人們對(duì)處理器的要求也越來越高。但僅僅依靠工藝的發(fā)展來滿足人們?nèi)找嬖鲩L(zhǎng)對(duì)處理 器性能的要求是遠(yuǎn)遠(yuǎn)不夠的。因此,提高軟件編寫效率并最終減少有效代碼長(zhǎng)度變得越來 越重要。
[0003] 在軟件應(yīng)用中,對(duì)堆棧的使用是很頻繁的,比如函數(shù)中的參數(shù)值的保存,局部變量 的保存等?,F(xiàn)有技術(shù)中堆棧的出棧效率不高,極大的影響到了處理器的性能。
[0004] 例如,在含有堆棧指針的情況下,編譯器針對(duì)C*core架構(gòu)編譯出的出棧指令如 下:
[0005]
【權(quán)利要求】
1. 一種生成快速出棧的匯編代碼的編譯方法,其特征在于包含: 在對(duì)源程序進(jìn)行預(yù)處理生成中間代碼后,針對(duì)中間代碼的堆棧操作,判斷當(dāng)前程序是 否有出棧操作,并進(jìn)行分類標(biāo)記,同時(shí)提取出棧地址并進(jìn)行保存; 若無出棧操作,輸出匯編指令; 若有出棧操作,根據(jù)標(biāo)記對(duì)其出棧地址進(jìn)行分析,判斷當(dāng)前出棧地址是否符合c*c〇re 所規(guī)定的堆棧地址要求; 若符合,則以此出棧地址作為最終的出棧地址,輸出匯編指令; 否則將出棧地址改寫成為符合c*c〇re對(duì)堆棧地址要求的出棧地址,輸出匯編指令。
2. 根據(jù)權(quán)利要求1所述的生成快速出棧的匯編代碼的編譯方法,其特征在于:將出棧 地址改寫成為符合C*c〇re對(duì)堆棧地址要求的出棧地址的方法是針對(duì)出棧地址的屬性:字、 半字或者字節(jié)來計(jì)算出其真正所需要的堆棧地址的基地址,并將其值賦給原來的地址寄存 器。
3. -種生成快速出棧的匯編代碼的編譯器,包括用于對(duì)源程序進(jìn)行預(yù)處理并生成中間 代碼的前端處理模塊和最終生成匯編代碼的后端處理模塊;其特征在于:所述后端處理模 塊增加: 出棧檢測(cè)模塊,用來在前端處理模塊生成中間代碼后,判斷當(dāng)前程序是否有出棧操 作; 出棧地址處理單元,用來判斷當(dāng)前出棧地址是否符合C*c〇re所規(guī)定的出棧地址要求; 若符合,則以此地址作為最終的出棧地址直接輸出,否則將堆棧地址通過地址計(jì)算單元改 寫成為符合C*c〇re對(duì)堆棧地址要求的堆棧地址。
【文檔編號(hào)】G06F9/45GK104216754SQ201410490577
【公開日】2014年12月17日 申請(qǐng)日期:2014年9月23日 優(yōu)先權(quán)日:2014年9月23日
【發(fā)明者】蘭光洋, 王忠海, 肖佐楠, 鄭茳 申請(qǐng)人:天津國(guó)芯科技有限公司