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