Abstract | ||
---|---|---|
We describe the current status of and provide performance results for a prototype compiler of Prolog to C, ciaocc. ciaocc is novel in that it is designed to accept different kinds of high-level information, typically obtained via an automatic analysis of the initial Prolog program and expressed in a standardized language of assertions. This information is used to optimize the resulting C code, which is then processed by an off-the-shelf C compiler. The basic translation process essentially mimics the unfolding of a bytecode emulator with respect to the particular bytecode corresponding to the Prolog program. This is facilitated by a flexible design of the instructions and their lower-level components. This approach allows reusing a sizable amount of the machinery of the bytecode emulator: predicates already written in C, data definitions, memory management routines and areas, etc., as well as mixing emulated bytecode with native code in a relatively straightforward way. We report on the performance of programs compiled by the current version of the system, both with and without analysis information. |
Year | DOI | Venue |
---|---|---|
2004 | 10.1007/978-3-540-24836-1_7 | Lecture Notes in Computer Science |
Keywords | Field | DocType |
Prolog,C,optimizing compilation,global analysis | Programming language,Determinism,Computer science,Reuse,Theoretical computer science,Compiler,Prolog,Machine code,Memory management,Predicate (grammar),Bytecode,Distributed computing | Conference |
Volume | ISSN | Citations |
3057 | 0302-9743 | 15 |
PageRank | References | Authors |
0.65 | 20 | 3 |
Name | Order | Citations | PageRank |
---|---|---|---|
José F. Morales | 1 | 88 | 11.95 |
Manuel Carro | 2 | 174 | 10.38 |
Manuel V. Hermenegildo | 3 | 2692 | 182.60 |