En informática , un prefijo de código de operación es un código numérico que modifica la función del siguiente código de operación . [ 1 ] En algunas arquitecturas de conjuntos de instrucciones, se permiten múltiples prefijos de código de operación de forma secuencial, y todos ellos, combinados, modifican el código de operación subsiguiente. El prefijo de código de operación es una parte de una instrucción de lenguaje máquina más extensa que especifica la operación a realizar. [ 2 ]
Además del código de operación, algunas instrucciones especifican los operandos sobre los que actuará la operación. Los prefijos del código de operación pueden modificar el número, el tamaño o el modo de direccionamiento de los operandos.
Los procesadores RISC no utilizan prefijos de código de operación.
Tipos de prefijos
Los prefijos de los códigos de operación generalmente se dividen en dos categorías:
- Prefijos de códigos de operación que modifican las funciones de los códigos de operación subsiguientes.
- Prefijos de código de operación que habilitan un conjunto alternativo de códigos de operación. Esto es análogo a la tecla Mayús en un teclado. De esta manera, los conjuntos de instrucciones se pueden extender agregando un subconjunto de nuevas instrucciones mediante la reutilización de códigos de operación reservados existentes.
Prefijos de código de operación de ejemplo
La siguiente lista no pretende ser exhaustiva, sino que muestra cómo se han utilizado los prefijos de código de operación en diversas arquitecturas de conjuntos de instrucciones de CPU.
Microcontrolador
El National Semiconductor COP400 es una familia de microcontroladores de 4 bits introducida en 1977. Tiene 255 códigos de operación de un solo byte. Utiliza un prefijo de código de operación 33H para habilitar un conjunto alternativo de 187 códigos de operación. [ 3 ]
El National Semiconductor COP8 es un microcontrolador de 8 bits presentado en 1988. El COP8 es una mejora del anterior COP400 de National. A diferencia del COP400, utiliza un prefijo de código de operación para modificar sus operandos. Normalmente, el direccionamiento absoluto de la RAM solo se codifica directamente para cuatro instrucciones: , , , y . Se puede añadir un prefijo de código de operación de dos bytes a cualquier otra instrucción que normalmente utilice el registro de índice B para acceder a la memoria, con el fin de convertir esa instrucción a direccionamiento absoluto de la RAM. El prefijo es 0xBD seguido de una dirección absoluta de 8 bits. Este prefijo es inusual porque ocupa dos bytes en lugar de uno. [ 4 ]LD addr8,#imm8LD A,addr8X A,addr8IFEQ addr8,#imm8DIR
microprocesador de 8 bits
El Zilog Z80 es un microprocesador de 8 bits que se lanzó en 1976. Fue diseñado para ser retrocompatible a nivel de software con el Intel 8080. Utiliza prefijos de código de operación para modificar sus operandos y ampliar su conjunto de instrucciones .
Para acceder a los operandos en sus nuevos registros IX e IY, se antepone 0xDD o 0xFD a las antiguas instrucciones del 8080, lo que permite que dichas instrucciones sustituyan IX o IY, respectivamente, por HL. En los casos en que se utiliza (HL), se sustituyen los modos de direccionamiento (IX+disp) e (IY+disp).
Los prefijos 0xCB y 0xED habilitan nuevas instrucciones que no se encuentran en el 8080. Los prefijos se pueden combinar: los prefijos IX/IY 0xDD o 0xFD pueden anteponer cualquier instrucción con prefijo 0xCB que utilice HL. [ 5 ]
microprocesador de 16 bits
Los procesadores Intel 8086 y 8088 tienen tres tipos de prefijos, todos los cuales pueden combinarse [ nota 1 ] para modificar algunas instrucciones subsiguientes. [ 6 ]
Anulación de segmento: Normalmente, el segmento de datos (DS) se utiliza para la mayoría de los accesos a datos y el segmento de pila (SS) para cualquier acceso que involucre BP o SP. Se proporcionan prefijos de anulación de segmento de un byte para sustituir ES, CS, SS o DS.
Repetición: Las instrucciones de cadena LODS, STOS, MOVS, CMPS, y SCASnormalmente se ejecutan una sola iteración. Si REPse agrega un prefijo a cualquier instrucción de cadena, se repetirá CX veces. Las instrucciones CMPSy SCASpueden terminar anticipadamente si se cumplen sus condiciones de igualdad o desigualdad. Estas instrucciones se pueden combinar con el prefijo de anulación de segmento para la cadena de origen.
Bloqueo: El LOCKprefijo se utiliza con instrucciones de lectura-modificación-escritura como INC, DEC, o XCHGpara asegurar que otro maestro de bus no pueda interferir con la operación de lectura o escritura. LOCKse puede combinar con el prefijo de anulación de segmento.
microprocesador de 64 bits
AMD64 o x86-64 es una extensión de 64 bits del conjunto de instrucciones x86 . Se anunció en 1999 y estuvo disponible por primera vez en la familia AMD Opteron en 2003. Introdujo un prefijo de código de operación REX que proporciona espacio adicional para codificar modos de direccionamiento de 64 bits y los ocho registros enteros adicionales presentes en la arquitectura x86-64. [ 7 ] [ 8 ]
Referencias
- ↑ Tanenbaum, Andrew S; Austin, Todd (2013). Organización estructurada de computadoras (Sexta ed.). Pearson Education, Inc. pág. 367. ISBN 0-13-291652-5.
- ↑ Bradley, David Allan; Dawson, D.; Burd, NC; Loader, AJ (2018). Mecatrónica: Electrónica en productos y procesos (2.ª ed.). Boca Raton: Routledge. pág. 174. ISBN 978-0-7487-5742-8. Consultado el 06-09-2025 .
- ↑ "Guía del usuario de la familia de microcontroladores COP400 COPS . National Semiconductor . Consultado el 23 de junio de 2025 .
- ↑ Manual del usuario de la familia básica COP8 (PDF) . Revisión 002. National Semiconductor . Junio de 1996. Número de documento 620895-002 . Consultado el 2 de enero de 2021 .
- ↑ Manual de usuario de la CPU de la familia Z80 (PDF) . Zilog . 2016. UM008011-0816. Archivado (PDF) del original el 26/12/2023 . Consultado el 05/01/2024 .
- ↑ Manual de usuario de la familia 8086 (PDF) . Intel. Octubre de 1979. Consultado el 16 de junio de 2025 .
- ↑ Intel Corporation (1 de septiembre de 2016). "Manual del desarrollador de las arquitecturas Intel® 64 e IA-32: Vol. 2A" . Consultado el 13 de septiembre de 2021 .
- ↑ Harris, David Money; Harris, Sarah L. (2007). Diseño digital y arquitectura informática (PDF) . Morgan Kaufmann Publishers. pág. 348. ISBN 978-0-12-370497-9. Consultado el 06-09-2025 .
Notas
- ↑ Existe un error en el 8086 que provoca que se olviden varios prefijos en las operaciones de cadena cuando se reconoce una interrupción.
- Código máquina
- Arquitecturas de conjuntos de instrucciones