Fundamentos de Programación de Microprocesadores
Fundamentos de Programación de Microprocesadores
El conjunto de instrucciones de un microprocesador es único para cada chip. Por ejemplo, el Intel 80386 usa codificación binaria diferente que el Motorola 68020, significando que operaciones idénticas requieren códigos de máquina distintos.
Como no hay estándar universal para conjuntos de instrucciones, la programación de bajo nivel demanda conocimiento profundo y específico del chip.
Cuando un desarrollador escribe código que controla directamente una CPU —como ajustar inyección de combustible de un motor— está programando en el lenguaje de máquina nativo del procesador, una serie de bits binarios que la unidad de control de la CPU decodifica.
Aunque el lenguaje de máquina es técnicamente binario, los programadores casi siempre lo escriben en hexadecimal para legibilidad. A continuación hay algunas instrucciones comunes para el Intel 8080:
Hexadecimal Binario Descripción instrucción ----------- -------- ----------------------------------------- 7B 01111011 Mueve contenido de registro A a registro E 87 10000111 Suma contenido de registro A a registro D 1C 00011100 Incrementa contenido de registro E en 1 D3 11010011 Emite byte de datos a bus de datos
Incluso con notación hexadecimal, estos códigos pueden ser confusos. El lenguaje ensamblador ofrece abreviatura mnemónica —p. ej., 7B se vuelve MOV A,E— que aún se traduce a binario por un ensamblador antes de ejecución.
Tras escribir un programa, debe cargarse en memoria. Para almacenamiento no volátil, un programador de ROM escribe la imagen binaria en un chip ROM; para memoria volátil, un cargador de arranque o rutina de sistema operativo puede aceptar pulsaciones de tecla o archivos de disco y colocar el código en RAM.
En un PC completo, un compilador escribe el código ensamblado a archivo de disco. En tiempo de ejecución, invocar el nombre del archivo hace que el contador de programa de la CPU apunte a la primera instrucción y el programa corre.
Aunque programación en máquina o ensamblador produce código altamente eficiente, es laboriosa y propensa a errores. Lenguajes de alto nivel (p. ej., C, C++, Java) permiten a desarrolladores expresar intención —como print "¡Hola, mundo!"— sin detallar pasos individuales de máquina.
Programas de alto nivel se convierten en código de máquina por compiladores (traducción estática) o intérpretes (traducción en tiempo de ejecución). Código compilado corre más rápido porque no ocurre traducción durante ejecución, mientras que código interpretado incurre sobrecarga por cada instrucción.
Lenguajes compilados comunes incluyen C, C++, FORTRAN y Pascal, mientras que BASIC y FORTH son típicamente interpretados. Como conjuntos de instrucciones difieren entre CPUs, compiladores e intérpretes deben apuntar a una arquitectura de procesador específica.
Fabricantes como Intel y Motorola mitigan problemas de compatibilidad diseñando nuevas CPUs retrocompatibles. Por ejemplo, un procesador Pentium IV soporta el conjunto completo de instrucciones 80386 más instrucciones adicionales. Código compilado para 80386 correrá en Pentium, pero código usando instrucciones solo-Pentium no correrá en 80386.
Compiladores usualmente dejan a desarrolladores seleccionar CPU objetivo; compilar para 80386 garantiza compatibilidad con hardware antiguo, mientras que compilar para Pentium puede explotar características nuevas cuando disponibles.
Hoja de Trabajo Relacionada
- Hoja de Trabajo de Programación de Microprocesadores
Tecnología Industrial
- Bosque: El Nuevo Lenguaje Libre de Bucles de Microsoft para Mejorar la Calidad del Código
- Descubre los 9 Lenguajes de Programación Imprescindibles de 2021
- Domina el Fresado CNC: Reto Interactivo de Programación Rellenar Espacios
- Heidenhain lanza HIT 3.0: Formación CNC online avanzada para usuarios TNC
- Top 10 lenguajes de programación cloud que todo desarrollador debe dominar
- Dominando los operadores en programación C: guía completa
- Domina la programación en C: Tutorial completo en PDF para principiantes
- Dominar la programación en C: Tutorial completo para principiantes
- Lenguaje de programación C: Visión general completa
- Entendiendo la estructura de un programa C: Guía para principiantes
- C#: Visión General del Lenguaje de Programación Moderno de Microsoft