Frances: A tool for learning code generation and execution

Home | Frances | Users Guide | Lessons | Publications


December 2010: Paper on Frances-A tool accepted for CCSC 2011.

September 2010: Initial release of Frances-A tool.

March 2010: Support added for MIPS assembly and x86 intel syntax.

January 2010: Tutorial on Frances tool accepted for CCSC 2010.

October 2009: Paper on Frances tool accepted for SIGCSE 2010.

August 2009: Technical Report: Frances: A Tool For Understanding Code Generation , ISU, 2009.

Frances: A Tool For Understanding Code Generation

Compiler and programming language implementation courses are integral parts of many computer science curricula. However, the range of topics necessary to teach in such a course are difficult for students to understand and time consuming to cover. In particular, code generation is a confusing topic for students unfamiliar with low level target languages. We present Frances, a tool for helping students understand code generation and low level languages. The key idea is to graphically illustrate the relationships between high level language constructs and low level (assembly) language code. By illustrating these relationships, we take advantage of the students existing understanding of some high level language. We have used Frances in a compiler design course and received highly positive feedback. Students conveyed to us that Frances significantly helped them to understand the concepts necessary to implement code generation in a compiler project.

Example of Frances tool
Figure 1: Example usage of Frances tool. Left side shows user input code and legend. Right side shows example output.

Lessons using the Frances tool are available: Code generation lessons.

If you have any comments, find any problems, or would like to see any features added, please give us feedback through one of the following forms: student, teacher, other. Alternatively, feel free to email us at Also, we are very interested to hear who is using our tool and in what ways. This will help us develop future versions of this tool.

Why did we develop Frances?

Frances was developed originally for debugging as part of a larger framework. After using this tool, it was clear that it was extremely helpful with understand assembly language and control flow. With this is mind, we aimed to develop this tool further with these ideas in mind. Furthermore, a major goal was to make the user interface as simple as possible. The main features of Frances are:

  • Coloring based on control structures
  • Edges drawn to denote types of control paths
  • Layout of blocks same as assembly (list of instructions)
  • Very simple web based interface
To the best of our knowledge, similar-tools do not combine all of these.

Frances Uses

Frances is currently being used for both research and in the classroom. In the classroom, these uses include learning and understanding the following concepts:

  • Code generation
  • Control flow
  • Assembly language
  • Code optimization

Tool Name

We named the tool Frances in honor of Frances E. Allen . She received the Turning award for pioneering contributions to the theory and practice of optimizing compiler techniques that laid the foundation for modern optimizing compilers and automatic parallel execution.

  1. A large part of this text is taken from our latest technical report and our SIGCSE '10 paper.