En kompilator brukar omvandla ett språk med en högre abstraktionsnivå till ett med lägre. En cpuexekverbar binärfil bör man kunna säga att den har den lägsta abstraktionsnivån - även om man skulle kunna tänka sig en kompilator som genererar 'MOPar' som laddars direkt i CPU'n exekveringsenhet (vilket i praktiken skulle förändra CPU'n så att den inte kan köra vanlig i86-kod längre).
Dom flesta kompilatorer som används för vanliga datorer genererar inte hex-kod utan dom gör binärkod som antingen är körbar direkt eller körbar när den har passerat en länkare och fått något library och/eller annan 'dll'-info integrerad i filen.
En kompilator för ett "embedded system" typ en PIC/AVR eller liknande där koden skall flashas in i CPU'n eller brännas i ett EPROM genererar (oftast) binärfilen i ett hex-format, (antingen Intel eller Motorola-format) eftersombrännarutrutningen enligt gammal standard vill ha datat i hexformat.
Jag har hittat ett mycket bra program, där jag både ka skriva i Basic, Assambler samt simulera. Idetta program får jag sedan ut en hexkod som jag kan bränna in i chipet.