Spesso si confondono:
- ILAsm = IL assembly (IL source code)
- ilasm(.exe) = IL assembler
Questo è dovuto alla doppia rappresentazione di IL, sorgente e binaria, tra cui esiste una corrispondenza 1:1. A ogni istruzione di ILAsm corrisponde un opcode di IL che occupa 1 o al massimo 2 byte, direttamente parte dell'assembly. Quindi, quando parliamo di IL, sottintendiamo codice IL.
Questa doppia rappresentazione di IL è anche il motivo per cui ilasm non è un compilatore: solo sostituisce le mnemoniche di IL con i corrispondenti opcode.
Lo spiega bene Simon Robinson nel suo libro, "Expert .NET 1.1 Programming" (p. 2-3).