1 votos

La forma más sencilla de utilizar una CPU (Cómo aprender)

Sé un poco de programación, pero soy nuevo en cosas de bajo nivel, así que por favor perdonen la ingenuidad de esta pregunta. ¿Cuál sería la forma más directa de ejecutar una serie de comandos en una CPU para hacer una suma básica de 1+2=3 ? Por ejemplo, a un nivel relativamente alto, podría comprar un microcontrolador como un Arduino y escribir código C y compilarlo/ejecutarlo en el dispositivo, por ejemplo:

int main() {
    int a = 1;
    int b = 2;
    return a + b;
}   

¿Sería posible comprar algo como un Intel i7 Y, ¿ejecutar el ensamblador (binario compilado) en el chip sin un montón de periféricos? Supongo que mi pregunta es, dada una CPU, ¿qué es lo mínimo que se necesitaría para ejecutar instrucciones en ella y devolver/recibir algún tipo de salida? Sé que en "construye tu propio ordenador" está la CPU, la placa base, la RAM, el monitor, la fuente de alimentación, etc., pero ¿cuál sería la forma más básica de hacer esto?

El punto de esto es que estoy aprendiendo de montaje / instrucciones y me gustaría ir tan bajo nivel como puedo ir a entender cómo funcionan los componentes, sin entrar en la fabricación de la electrónica real (aparte de la configuración de las cosas / conectarlos).

0voto

Ozzyprv Puntos 1

Si quieres saberlo todo sobre el lenguaje ensamblador para los procesadores Intel, te recomiendo que le eches un vistazo al libro de Randall Hyde "The Art of Assembly Language Programming". Se puede descargar gratuitamente en PDF en su sitio web.

https://www.plantation-productions.com/Webster/

Repasa desde la optimización lógica básica hasta los detalles de cómo programar para procesadores Intel de 16 y 32 bits, así como la programación en ensamblador en un entorno Linux o Windows.

0voto

Saban Puntos 21

Antes, cuando "CPU" significaba una caja con interruptores y luz en el panel frontal, la configuración mínima era la propia CPU, un sistema de memoria, el bus que los conectaba y las fuentes de alimentación.

enter image description here

Entonces, podrías usar esos interruptores y luces para examinar y modificar las posiciones de memoria y el registro PC, y al menos uno de esos interruptores te permitiría "ejecutar" o "detener" o "paso a paso" el programa.

Si usted no tiene un panel frontal, entonces usted va a necesitar algún tipo de periféricos conectados al sistema para que la información entre y salga.

Un moderno microcontrolador es un chip que contiene una CPU, RAM, ROM programable y varios periféricos diferentes en el mismo chip. Los microcontroladores necesitan muy poco apoyo externo. A cristal un par de condensadores, alimentación de 3,3 V y, por supuesto, algo de medios para programarlo .

Una forma de empezar con los microcontroladores es comprar una placa de evaluación (por ejemplo, https://www.digikey.com/product-detail/en/nxp-usa-inc/FRDM-KL25Z/FRDM-KL25Z-ND/3529594 ).

enter image description here

El de arriba tiene un microcontrolador con algunos de los pines conectados a cosas útiles (un pulsador, un LED, un adaptador de USB a puerto serie) y otros pines conectados a un cabezal. También (y esta es la parte buena) tiene un programador de a bordo, por lo que no es necesario comprar uno de estos . La alimentación proviene de tu ordenador o de un cable de pared USB a través del mismo conector USB que utilizas para programarlo.

También debería incluir un enlace a todos los manuales y descargas gratuitas de todas las herramientas de programación que necesites.


* Hacia el final de la era de los paneles frontales, todo ese material se hizo lo suficientemente pequeño como para caber en la misma caja que la propia CPU.

0voto

jasimmk Puntos 208

Si tienes un viejo reproductor MP3 soportado por Rockbox, puede que encuentres muy interesante mirar el código fuente utilizado para arrancar el reproductor. Por ejemplo, en un Sandisk Clip, puedes ver el gestor de arranque que se ramifica inmediatamente después de que el dispositivo termina de ejecutar su ROM de máscara integrada:

https://git.rockbox.org/cgit/rockbox.git/tree/bootloader/sansa_as3525.c

La función principal llama secuencialmente:

system_init();
kernel_init();
enable_irq();
lcd_init();
backlight_init();
button_init_device();
storage_init()
usb_int()

A partir de ahí, puedes ver cómo el sistema configura los relojes de la CPU, la memoria y el hardware periférico y, finalmente, se convierte en un reproductor de MP3 en funcionamiento. Aparte de un poco de ensamblador que se ejecuta antes del main() para configurar el c runtime:

https://git.rockbox.org/cgit/rockbox.git/tree/firmware/target/arm/crt0.S

Es casi todo en c. Hay bootloaders similares para ipods, y muchos otros dispositivos.

0voto

shash Puntos 668

En la universidad, programé en ensamblador una placa de firmware Motorola 68000. Tuve que buscar los opcodes y teclearlos. Parece que todavía existen placas similares. http://www.easy68k.com/paulrsm/mecb/mecb.htm

0voto

GEOCHET Puntos 13787

¿Qué tal una versión divertida que sea CASI metálica?

El silicio real del antiguo chip 6502 (la cpu del Apple-II original) ha sido completamente desmontado por aficionados y ahora puedes jugar con él en Internet. Teclea algunos opcodes. Hazlo paso a paso y observa cómo cambian los voltajes en las trazas de aluminio del interior del chip. Haz zoom para examinar los puntos interesantes.

http://www.visual6502.org/

Aquí está su presentación del proyecto, con diapositivas de Siggraph-2010:
https://www.youtube.com/watch?v=pi7Sy7SYlSo&t=80

.


Vaya, también alguien construyó realmente uno de estos chips en hardware. ¡En pcb usando transistores! Además de algunos componentes extra (no canon), LEDs de colores.

https://monster6502.com

.


PS

El proyecto Visual-6502 está trabajando en muchos otros antiguos chips de CPU primitivos, y parece que también tienen en marcha el Moto 6800...

http://www.visual6502.org/JSSim/expert-6800.html

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X