once the program has been converted to the ir, the analysis and optimization tools can operate on that form. phoenix includes a selection of tools – including block counting, memory analysis, code coverage, code analysis and optimization. the phoenix sdk can be used to write and plug-in other tools as well. code generation is handled by providing architecture-specific (either physical architecture of the processor or a virtual machine architecture) "file writers". phoenix provides the codice_1 compiler backend, which it shares with visual c++, to handle analysis, optimization and code generation for the x86 architecture. writers for other architectures must be provided separately.