Se me ocurren varias formas de trabajar en la interfaz de hardware y software:
1.) Escriba su propio compilador o ensamblador para una arquitectura de conjunto de instrucciones (ISA)
Apuesto a que probablemente sepa qué es el ISA, pero en caso de que no lo sepa, es, simplemente, un acuerdo entre el hardware y el software sobre lo que cada uno espera del otro.
- Cómo decidir entre informática e ingeniería informática
- ¿Qué problemas / proyectos puedo hacer que me obliguen a aprender estadísticas y probabilidades de hacerlos / resolverlos?
- Elegí PICT CS sobre COEP IT. ¿Fue una mala decisión?
- ¿Qué computadoras portátiles deberían usarse en ingeniería si la transmisión es CSE?
- Como estudiante de pregrado, ¿cómo aprendiste c?
Escribir un compilador o ensamblador requeriría que comprenda un determinado ISA: necesitaría aprender sobre qué recursos de hardware e instrucciones de máquina están disponibles, cómo se manejan las interrupciones y las llamadas a funciones, cómo se almacenan los datos y mucho más (como se describe en el ES UN). Luego, aprovechará la información acumulada para tomar el código escrito y traducirlo a un código de máquina ejecutable equivalente.
2.) Emular una computadora vieja
Esto en realidad es un proyecto en el que estoy trabajando. Este proyecto requeriría que haga un estudio en profundidad de la computadora: qué procesador y periféricos tenía, cómo funcionaba ese procesador y cómo funcionaban esos periféricos. Luego, utilizando esa comprensión, escribiría un programa que podría cargar con éxito las aplicaciones escritas para la máquina original y ejecutarlas de la misma manera que la máquina original.
Sugeriría escribir un emulador para una consola de videojuegos antigua porque hay una gran cantidad de documentación para esas máquinas, y una vez que lo haya construido, tendría una razón para usar el emulador (si es que disfruta de video antiguo juegos).
3.) Hackear un Kernel
Tengo una comprensión muy vaga de lo que es esto, pero creo que es principalmente escribir código que modifica el núcleo de un sistema operativo como Linux. Este núcleo, el núcleo, es lo que gestiona la ejecución de programas y la interacción del software con E / S y memoria. Entonces, al igual que escribir un compilador o ensamblador, la piratería / desarrollo del kernel le permitiría trabajar muy de cerca con el hardware de una computadora de uso general desde el lado del software y de una manera muy práctica.
4.) Construye tu propia computadora
Si tiene los medios, podría construir su propia computadora. Y no me refiero a comprar un procesador, memoria, estuche y demás, y ensamblarlo. No, me refiero a volverse loco y diseñar su propio ISA, construir un procesador basado en él desde cero (usando microchips) e interconectarlo con memoria y E / S (también potencialmente construido desde cero).