Modern compiler implementation in Java
Modern compiler implementation in Java
Computer organization and design (2nd ed.): the hardware/software interface
Computer organization and design (2nd ed.): the hardware/software interface
Automatic Derivation of Code Generators from Machine Descriptions
ACM Transactions on Programming Languages and Systems (TOPLAS)
LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
The compiler course in today's curriculum: three strategies
Proceedings of the 37th SIGCSE technical symposium on Computer science education
Design and implementation of a modern compiler course
Proceedings of the 11th annual SIGCSE conference on Innovation and technology in computer science education
Formal compiler construction in a logical framework
Higher-Order and Symbolic Computation
Compiler research: the next 50 years
Communications of the ACM - Inspiring Women in Computing
Integrating digital logic design and assembly programming using FPGAs in the classroom
Proceedings of the 49th Annual Southeast Regional Conference
Using FPGAs as a reconfigurable teaching tool throughout CS systems curriculum
Proceeding of the 44th ACM technical symposium on Computer science education
Hi-index | 0.00 |
This paper describes the adaptation of a modern compiler construction course to target an FPGA-based hardware platform used throughout our computer science curriculum. One of the significant challenges in teaching using modern hardware platforms is the inordinate complexity of commonly used systems. To avoid this, many compiler courses target a less complex platform implemented via a simulator or a higher-level virtual or abstract hardware platform. To avoid the complexity of a modern superscalar multicore architecture and to improve the kinesthetic experience of students implementing the course compiler, we have provided a framework and runtime support for using an FPGA-based RISC CPU as the target for the compiler backend. Using this system allows students to leverage knowledge gained in earlier organization and architecture classes using the same system, while also providing a hands-on active learning component at the completion of the compiler implementation.