= Machine

<<Machine#>> is an <<IntermediateLanguage#>>, translated from <<RSSA#>>
by <<ToMachine#>> and used as input by the <<Codegen#>>.

== Description

<<Machine#>> is an <<Untyped#>> <<IntermediateLanguage#>>, corresponding
to an abstract machine with an infinite number of temporaries.

== Implementation

* https://github.com/MLton/mlton/blob/master/mlton/backend/machine.sig[`machine.sig`]
* https://github.com/MLton/mlton/blob/master/mlton/backend/machine.fun[`machine.fun`]

== Type Checking

The <<Machine#>> <<IntermediateLanguage#>> has a primitive type checker
(https://github.com/MLton/mlton/blob/master/mlton/backend/machine.sig[`machine.sig`],
https://github.com/MLton/mlton/blob/master/mlton/backend/machine.fun[`machine.fun`]), which only checks
some liveness properties.

== Details and Notes

The runtime structure sets some constants according to the
configuration files on the target architecture and OS.
