Estimados miembros de la comunidad: Estoy tomando un curso de arquitectura de computadoras en Coursera.org. El curso presenta la idea de que una aplicación se traduce en la ejecución de instrucciones en el microprocesador. Ampliando esta idea, quiero saber cómo se ejecuta una aplicación como un procesador de textos o tan simple como emacs.
Me refiero a lo que sucede cuando inicias la aplicación, comienzas a escribir, borras una palabra o una línea, guardas y sales de la aplicación.
¿Es posible ver qué instrucciones se ejecutan cuando se inicia el programa, en el modo de escritura, etc. ¿Cómo ver la ejecución de cada instrucción, sus operandos, la memoria y el acceso a la memoria caché?
Si la pregunta parece incompleta, agregue las piezas que faltan para que sea más interesante.
Gracias
No sé si el curso específico de Coursera es suficiente para lo que quieres. Pero un archivo ejecutable, para simplificar, es un conjunto de instrucciones para su procesador físico en su PC, por ejemplo. Se define el código de máquina (ensamblado) para cada función en el programa, y puede verlo junto con la memoria a la que accede en varios depuradores mientras se ejecuta. Es muy interesante y debo sugerirle que, si ya está familiarizado con al menos un lenguaje de programación, continúe con "Compiladores" antes de intentar estudiar ensamblador de inmediato. Coursera tiene una lección relativa https://www.coursera.org/course/compilers que parece interesante.
Pensamos en operaciones como "mover el cursor una letra", "desplazarse a la siguiente línea" o "ingresar la letra 'a'". La computadora es MUCHO más simple. Funciona en matemáticas puras y pide cargar y almacenar datos en registros o memoria. Así que "mover el cursor" es realmente una larga, larga cadena de:
Una cosa simple es ver lo que se necesita para convertir el código de lenguaje C en ASM y luego en lenguaje de máquina. Recuerde, incluso el ensamblaje es un nivel más alto que los 0 y 1 que realmente impulsan la máquina.
Traduzca lo siguiente a cualquier ASM que estén usando para la clase:
int result = 1; int i; for (i = 100; i > 0; i++) { result *= i; } printf("%d\n", result);Sí, este es un código tonto. Pero mire la cantidad de código necesario solo para recrear eso en ASM. Ahora, rastree las definiciones de código de máquina para ese ASM y traduzca el ASM al binario. Esto se vuelve monótono muy rápido. Pero, una vez que comprenda cómo funciona, comprenderá cómo funciona VMWare y cómo funciona cada dispositivo informático.