Features/TCG
The Tiny Code Generator (TCG) is the core binary translation engine that is responsible for QEMU ability to emulate foreign processors on any given supported host.
Tiny Code Generator (TCG)
The Tiny Code Generator (TCG) exists to transform target insns (the processor being emulated) via the TCG frontend to TCG ops which are then transformed into host insns (the processor executing QEMU itself) via the TCG backend.
People who wish to port QEMU to run on a new processor need to be concerned with the backend. There also exists the TCI (TCG Interpreter) effort which provides a backend agnostic interpreter for TCGops.
People who wish to port QEMU to emulate a new processor need to be concerned with the frontend.
Source Tree Documentation
A number of documents in the source tree should be helpful to understanding how things go together:
- The intro README
- Details about docs/devel/tcg.rst
- Notes on decodetree (used by newer frontends to reduce boilerplate)
- How we approach multithreaded TCG
Other pages on the wiki
Presentations and Other External Sources
- Slides and recording of a talk on TCG mechanics
- StackOverflow answer showing code flow of a TCG translation