提高Prolog到C的編譯(No.5-1)—未完成

來源:互聯網
上載者:User

http://clip.dia.fi.upm.es/papers/morales03:p-to-c-ciclops.pdf

提高Prolog到C的編譯——使用類型和確定性詳細資料:初步結果

J. Moralesy *
jfran@clip.dia.fi.upm.es

M. Carroy *
mcarro@fi.upm.es

M. Hermenegildoy * #
herme@fi.upm.es

摘要

我們描述了目前的狀況和提供的Prolog到C的編譯器初步效能測試結果。編譯器是新穎的,當它被設計為接受不同種類高層次資訊(通常通過最初的Prolog程式分析,並用標準化的確定語言表達),並使用此資訊來最佳化產生的C代碼,然後進一步加工的現成的C編譯器。基本翻譯過程中使用基本上是關於Prolog程式相應特定位元組碼,模仿展開一個C編碼的位元組碼模擬器。然後最佳化應用此展開程式。這是促使更放逐化設計的位元組碼指令和他們的較低級組件。這種方法可以重複使用的相當數量的機械位元組碼模擬器:套件的C代碼,資料定義,記憶體管理常式和地區等,以及混合位元組碼類比與相對簡單方式的原生編譯代碼。我們報告由當前系統的版本編譯的程式效能,附帶或不附帶分析資訊。

1.引言
自從Colmerauer和Roussel[Col93]開發的原始的解譯器,已設計了許多技術以實施Prolog,其中許多旨在實現更高的速度。一在[Van94]可以找到有關此項工作重要部分的優秀調查。以下是粗略分類的Prolog(事實上,同樣適用於其他很多語言):

× 翻譯器(如C-Prolog[Per87]和其他),輕型預先處理或翻譯可能在程式執行前完成,但大量的工作是運行時由翻譯完成。

× 位元組碼的編譯器和他們的翻譯器(通常被稱為模擬器)。編譯器用一個特殊用途的語言產生相對較低水平的代碼。這種低級代碼的翻譯器仍然是需要的。目前大多數模擬器是基於Warren抽象機(WAM)[War83, AK91],但存在其他建議[Tay91,KB95]。

× 一個低級語言的編譯器,通常是(本地)機器代碼。這種情況下輸出執行需要很少或根本沒有額外的支援。一種解決方案是為編譯器直接產生機器代碼。這方面的例子是Aquarius系統[VD92],SICSus Prolog的版本[Swe99]一些體系,BIM-Prolog編譯器[Mar93]和Gnu Prolog編譯器[DC01]。另一種方法是產生一個(低級)的語言,例如,C-[JRR99]或C,其中一台機器代碼編譯器是現成的,後者是由wamcc所採取的方法[CD95]。

每種方法都有優點和不足:

可執行效能與可執行檔的大小和編譯速度:編譯下級代碼可以實現更快的程式,消除瞭解釋的開銷和執行低級最佳化。在一般情況下,儘可能多地在編譯時間工作,以避免運行時的開銷,在編譯階段使用更多資源的花費帶來的更快執行速度,並可能產生更大的可執行檔。在一般情況下,編譯器更複雜,比翻譯器需要更長的時間來預先處理程式。作為編譯過程的一部分,程式碼分析的複雜形式差異越來越大。這可能會影響開發時間,雖然複雜的分析可以在開發過程中關閉,並只在產生代碼時提供。反之,翻譯器可能有更小的負載/編譯時間,當速度不是個優先事項時,由於其簡單往往是一個很好的解決方案。模擬器在複雜度和花費方面處於中間點。高度最佳化的模擬器
[Qui86, SCDRA00, DN00, Swe99, BCC+02] 提供了非常好的效能和減少程式的大小(因為單位元組指令對應多個機器代碼指令)這可能是一個非常大程式和符號資料集的關鍵問題。

--------------------------------------------------------------------------------

註:這項工作由西班牙MCYT項目TIC 2002-0055 CUBICO部分支援,歐盟IST項目2001-34717Amos和IST-2001-38059 ASAP,新墨西哥州大學資訊科技學院主席Asturias王子的支援。歐洲社會基金的共同資助MCYT基金也支援J.Morales。

* 西班牙馬德裡技術大學,Boadilla del Monte,E-28660
# 新墨西哥大學電腦科學系、電子系、電腦工程系

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.