I was taking this course - CMU 18-447, Computer Architecture at Carnegie Mellon to brush my knowledge and concepts.
They say that most of the machine level details and implementations isare taken care of at the Instruction Set Architecture(ISA) level and is abstracted at that level.
Some Intel processors even have hardware level translation layers that take the front level ISA that is exposed to the programmer and translate them further closer to the machine.
Given such power is provided by the ISA/Processor itself, why do compilers generate direct machine code, or is it just a black box and internally it uses assemblers to convert them into direct machine code?
I hear that JVM takes byte code and translate them directly to machine code(exe).Is this true or is my understanding wrong here?