La cara visible del mismo interpretaba el código fuente y generaba código máquina para una máquina virtual; la otra cara del compilador tomaba dicho código máquina y lo traducía al código necesario para la arquitectura deseada.