.. MiniC documentation master file, created by sphinx-quickstart on Thu Feb 3 16:47:38 2022. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Welcome to MiniC's documentation! ================================= .. toctree:: :maxdepth: 4 :caption: Contents: Base library - Errors Base library - Statement Base library - RISC-V instructions Base library - Operands Base library - Function data Base library - Graphs Linear intermediate representation Temporary allocation Control Flow Graph - CFG and Basic blocks Control Flow Graph - Terminators SSA form - Dominance frontier SSA form - Phi Nodes These pages document the various Python sources in the Lib/ folder of MiniC. You should not have to edit them *at all*. Base library ------------ The :doc:`api/Lib.Statement` defines various classes that represent RISC-V assembly statements, such as labels or 3-address instructions. We won't create objects of these classes directly very often. Instead, to easily create such statements for standard RISC-V assembly instructions and pseudo-instructions, we give you the :doc:`api/Lib.RiscV`. RISC-V instructions take arguments of various kinds, as defined in the :doc:`api/Lib.Operands`. At some point, we will need some basic functions about oriented and non oriented graphs, those are present in :doc:`api/Lib.Graphes`. Linear Intermediate representation ---------------------------------- The :doc:`api/Lib.LinearCode` allows to work with assembly source code modeled as a list of statements. Temporary allocation -------------------- Before implementing the all-in-memory allocator of lab 4a, you should understand the naive allocator in the :doc:`api/Lib.Allocator`. Control Flow Graph Intermediate representation ---------------------------------------------- The classes for the CFG and its basic blocks are in the :doc:`api/Lib.CFG`. Each block ends with a terminator, as documented in the :doc:`api/Lib.Terminator`. SSA form -------- The translation of the CFG into SSA form makes use of dominance frontiers. Functions to work with dominance are defined in the :doc:`api/Lib.Dominators`. Phi nodes, a special kind of statement that appears in CFGs in SSA form, are defined in the :doc:`api/Lib.PhiNode`. Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search`