Компиляторы высших языков программирования не могут переводить код сразу в ассемблер, потому что это сложно и невозможно. 1
Компиляторы, как правило, генерируют или ассемблер, или машинный код. 1 Например, компиляторы языков C++ и Rust генерируют машинный код процессоров, а Java и C# — код виртуальной машины. 1
Исключить неиспользуемый код невозможно, поскольку определение недостижимости — алгоритмически неразрешимая задача. 1 То есть невозможно написать анализатор кода, который для произвольной программы и произвольной строки кода в ней даст однозначный ответ. 1
Однако некоторые компиляторы высокоуровневых языков, например C/C++, имеют возможность трансляции программы с языка высокого уровня на язык ассемблера. 5