Documentation/TCG: Difference between revisions

From QEMU
m (Fix TCG readme link)
 
(6 intermediate revisions by 3 users not shown)
Line 3: Line 3:
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.
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. Although this whole exercise might be obsoleted by the [[Features/TCI|TCI (TCG Interpreter)]] effort.
People who wish to port QEMU to run on a new processor need to be concerned with the backend. There also exists the [[Features/TCI|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.
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 {{src|path=tcg/README|description=intro README}}
* Details about {{src|path=docs/devel/tcg.rst|translator internals}}
* Notes on {{src|path=docs/devel/decodetree.rst|description=decodetree}} (used by newer frontends to reduce boilerplate)
* How we approach {{src|path=docs/devel/multi-thread-tcg.txt|description=multithreaded TCG}}
== Other pages on the wiki ==


* [[Documentation/TCG/backend-ops|Backend Ops]]
* [[Documentation/TCG/backend-ops|Backend Ops]]
* [[Documentation/TCG/frontend-ops|Frontend Ops]]
* [[Documentation/TCG/frontend-ops|Frontend Ops]]
* [http://git.qemu.org/?p=qemu.git;a=blob_plain;f=tcg/README;hb=HEAD TCG README]
 
== Presentations and Other External Sources ==
 
* [https://dl.dropboxusercontent.com/u/8976842/TCG.pdf Slides] and [http://chemnitzer.linux-tage.de/2012/vortraege/1062 recording] of a talk on TCG mechanics
* [http://stackoverflow.com/questions/20675226/qemu-code-flow-instruction-cache-and-tcg StackOverflow answer] showing code flow of a TCG translation
 
[[Category:Developer documentation]]

Latest revision as of 09:42, 5 November 2019

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:

Other pages on the wiki

Presentations and Other External Sources