Dlaczego kompilatory produkują kod asemblera?

Język asemblera jest konwertowany na język maszynowy przez asembler. Dlaczego kompilator miałby konwertować język wysokiego poziomu na asembler? Czy nie można go bezpośrednio przekonwertować z języka wysokiego poziomu na kod