A Model Compiler is just one of the myriad applications that can be modelled and is built in exactly the same way as any other application.
Typically, the core subject matters for a Model Compiler concern the Object Oriented Analysis (OOA) formalism, Software Architecture and Language Templates. Each subject matter is modelled as a separate domain within the Analysis of Application realm. It is the purpose of a Model Compiler to generate source code from these populated domains.
These subject matter domains are clearly analysis models because we have just analysed them to create a new Model Compiler, but they can also be called an application design model because they define the target architecture and target language of any application that will be compiled with the Model Compiler.
Any Model Compiler under construction can be compiled by any working Model Compiler including itself. This step produces 3GL source code which is then compiled and run in order for the new Model Compiler to execute.
In Matrix terms, the new Model Compiler is said to have "evolved" from the old Model Compiler (which is located one step to the left of the new Model Compiler on the Analysis Design Matrix Diagram). Of course, the new Model Compiler may have a totally different target architecture and language to that of the Model Compiler that compiled it.
While under development the new Model Compiler (along with other applications) is at M1. When we come to use the Model Compiler to create applications it moves one step to the left into M2 and similarly all the other Model Compilers on the diagram also move to the left. The result is that all the domains, such as the OOA formalism, Software Architecture and Language Templates in the new Model Compiler become metamodels.
As a Matrix application model is processed, the Model Compiler's OOA domain at M2 is populated. If we imagine the entities in the OOA domain as tables, the rows represent the information contained in Analysis of Application realm at M1.
As the Model Compiler continues to execute it populates the target Software Architecture domain from the OOA domain and then populates the target Language Templates from the target Software Architecture domain (these are of course, all at M2). Except for the OOA domain, these domains are not usually displayed as a model but they can be. For example, the Design of Application realm is drawn from the Software Architecture domain which would show a Domain Specific Language (DSL) diagram for the application using the Model Compiler's design for the application.
The Model Compiler's final stage is to generate source code. Typically, the Language Templates domain drives this process and transfers control to the other domains as necessary to retrieve data to fill the templates.