Me gustaría preguntarle al maestro, dado que el código del programa almacenado en el disco duro ya es binario, ¿por qué no se puede ejecutar directamente y es necesario compilarlo nuevamente?
Mi entendimiento es: lo que la computadora puede ejecutar son instrucciones de máquina. Aunque el programa en sí se almacena en el disco en forma de archivo binario, lo que se almacena aquí es solo la conversión de los literales del programa a formato binario. Por lo tanto, debe compilarse en el archivo de instrucciones de la máquina correspondiente a través del compilador correspondiente al programa. La ejecución consiste en ejecutar el archivo de instrucciones de la máquina.
#Tome el lenguaje Java como ejemplo:
El archivo fuente se almacena en el disco en forma de archivo **.java. Pero un archivo de este tipo equivale simplemente a convertir el texto que contiene a binario. La computadora simplemente no sabe cómo hacerlo.
Después de convertirlo en un archivo **.class a través del compilador Java, aunque el archivo de clase también se almacena en binario, tiene su propia estructura: número mágico, número de versión menor, número de versión mayor, constante contador de grupo, grupo constante, indicador de acceso, índice de clase, índice de clase principal, etc. Pero esto no puede ser ejecutado directamente por la computadora y debe ejecutarse a través de la máquina virtual Java. La máquina virtual Java es equivalente a una computadora simulada y también tiene un contador de programas, etc. Personalmente, creo que el código de bytes en el archivo .class debería convertirse en las instrucciones correspondientes de la máquina virtual a través del motor de ejecución en jvm. Entonces se puede ejecutar. Cuando se ejecuta realmente, las instrucciones de la máquina virtual correspondientes en la máquina virtual deben convertirse en instrucciones de la máquina correspondientes antes de que puedan ejecutarse