Incorporación de la forma SSA a la máquina virtual de CIRCOM
dc.contributor.advisor | Rubio Gimeno, Alberto | |
dc.contributor.advisor | Rodríguez Núñez, Clara (Col.) | |
dc.contributor.author | Calvarro Marines, Mario | |
dc.date.accessioned | 2025-10-09T11:15:20Z | |
dc.date.available | 2025-10-09T11:15:20Z | |
dc.date.issued | 2025 | |
dc.degree.title | Doble Grado en Ingeniería Informática y Matemáticas | |
dc.description | Trabajo de Fin de Doble Grado en Ingeniería Informática y Matemáticas, Facultad Informática UCM, Departamento de Sistemas Informáticos y Computación, Curso 2024/2025. | |
dc.description.abstract | Este proyecto expande el compilador de CIRCOM mediante la introducción de una Representación Intermedia (IR) de la Máquina Virtual de CIRCOM (CVM), basada en un Grafo de Control del Flujo (CFG) construido directamente en forma de Asignación Única Estática (SSA). CIRCOM es un lenguaje de dominio específico para la construcción de circuitos aritméticos en sistemas de pruebas de conocimiento cero, donde la eficiencia y la corrección del compilador son aspectos críticos. Para lograr este objetivo, se implementó para la CVM un parser, un Árbol de Sintaxis Abstracta (AST) y un verificador de tipos, todos ellos implementados en Rust. El nuevo flujo del compilador construye el CFG en forma SSA desde el inicio, evitando la necesidad de transformaciones posteriores. Sobre esta base, se implementó un algoritmo de análisis de vivacidad, lo que permite un análisis de programas más preciso y abre la puerta a optimizaciones avanzadas futuras. La IR resultante mejora la capacidad de análisis y la eficiencia de los programas de la CVM, a la vez que proporciona una base sólida para futuras mejoras del compilador, como nuevas pasadas de optimización y técnicas de verificación formal. | |
dc.description.abstract | This project enhances the CIRCOM compiler by introducing an Intermediate Representation of the CIRCOM Virtual Machine (CVM) based on a Control Flow Graph constructed in Static Single Assignment (SSA) form. CIRCOM is a domain-specific language for building arithmetic circuits in zero-knowledge proof systems, where compiler efficiency and correctness are critical. To achieve this, the CVM was extended with a parser, Abstract Syntax Tree (AST) and typechecker, all implemented in Rust. The new pipeline constructs the CFG in SSA form from the start, avoiding the need for later transformations. On top of this foundation, a liveness analysis algorithm was implemented, enabling more precise program analysis and opening the door to future advanced optimizations. The resulting IR improves the ease of analysis and efficiency of CVM programs, while providing a solid basis for future compiler enhancements such as optimization passes and formal verification techniques. | |
dc.description.department | Depto. de Sistemas Informáticos y Computación | |
dc.description.faculty | Fac. de Informática | |
dc.description.refereed | TRUE | |
dc.description.status | unpub | |
dc.identifier.uri | https://hdl.handle.net/20.500.14352/124722 | |
dc.language.iso | eng | |
dc.page.total | 96 | |
dc.rights | Attribution-NonCommercial-NoDerivatives 4.0 International | en |
dc.rights.accessRights | open access | |
dc.rights.uri | http://creativecommons.org/licenses/by-nc-nd/4.0/ | |
dc.subject.keyword | CIRCOM | |
dc.subject.keyword | Diseño de compiladores | |
dc.subject.keyword | Representación intermedia | |
dc.subject.keyword | Máquina virtual | |
dc.subject.keyword | Asignación única estática | |
dc.subject.keyword | Grafo de flujo de control | |
dc.subject.keyword | Análisis de vivacidad | |
dc.subject.keyword | Rust | |
dc.subject.keyword | Pruebas de conocimiento cero | |
dc.subject.keyword | Optimización de programas | |
dc.subject.keyword | Compiler Design | |
dc.subject.keyword | Intermediate Representation | |
dc.subject.keyword | Virtual Machine | |
dc.subject.keyword | Static Single Assignment | |
dc.subject.keyword | Control Flow Graph | |
dc.subject.keyword | Liveness Analysis | |
dc.subject.keyword | Rust | |
dc.subject.keyword | Zero-knowledge proofs | |
dc.subject.keyword | Program optimization | |
dc.subject.ucm | Informática (Informática) | |
dc.subject.unesco | 33 Ciencias Tecnológicas | |
dc.title | Incorporación de la forma SSA a la máquina virtual de CIRCOM | |
dc.title | Introducing the SSA form in the CIRCOM Virtual Machine | |
dc.type | bachelor thesis | |
dc.type.hasVersion | AM | |
dspace.entity.type | Publication | |
relation.isAdvisorOfPublication | fdfffd91-34f6-4e0a-9fce-0c38ab083383 | |
relation.isAdvisorOfPublication.latestForDiscovery | fdfffd91-34f6-4e0a-9fce-0c38ab083383 |
Download
Original bundle
1 - 1 of 1
Loading...
- Name:
- Incorporación _ SSA_circom.pdf
- Size:
- 1.09 MB
- Format:
- Adobe Portable Document Format