stringtranslate.com

Código de operación

En informática , un código de operación [1] [2] (abreviado de código de operación , [1] también conocido como código de máquina de instrucciones , [3] código de instrucción , [4] sílaba de instrucción , [5] [6] [7] [8 ] paquete de instrucción o cadena de operación [9] [2] ) es la parte de una instrucción en lenguaje de máquina que especifica la operación que se realizará. Además del código de operación en sí, la mayoría de las instrucciones también especifican los datos que procesarán, en forma de operandos . Además de los códigos de operación utilizados en las arquitecturas de conjuntos de instrucciones de varias CPU , que son dispositivos de hardware, también se pueden utilizar en máquinas informáticas abstractas como parte de sus especificaciones de código de bytes .

Descripción general

Las especificaciones y el formato de los códigos de operación se establecen en la arquitectura del conjunto de instrucciones ( ISA ) del procesador en cuestión, que puede ser una CPU general o una unidad de procesamiento más especializada. [10] Los códigos de operación para un conjunto de instrucciones determinado se pueden describir mediante el uso de una tabla de códigos de operación que detalla todos los códigos de operación posibles. Además del código de operación en sí, una instrucción normalmente también tiene uno o más especificadores de operandos (es decir, datos) sobre los cuales debe actuar la operación, aunque algunas operaciones pueden tener operandos implícitos o ninguno. [10] Hay conjuntos de instrucciones con campos casi uniformes para códigos de operación y especificadores de operandos, así como otros (la arquitectura x86 , por ejemplo) con una estructura más complicada y de longitud variable. [10] [11] Los conjuntos de instrucciones se pueden ampliar mediante el uso de prefijos de códigos de operación que agregan un subconjunto de nuevas instrucciones compuestas por códigos de operación existentes siguiendo secuencias de bytes reservadas. [ cita necesaria ]

Operandos

Dependiendo de la arquitectura, los operandos pueden ser valores de registro , valores en la pila , otros valores de memoria , puertos de E/S (que también pueden estar mapeados en memoria ), etc., especificados y accedidos usando modos de direccionamiento más o menos complejos . [ cita necesaria ] Los tipos de operaciones incluyen aritmética , copia de datos, operaciones lógicas y control de programas, así como instrucciones especiales (como CPUID y otras). [10]

El lenguaje ensamblador , o simplemente ensamblador , es un lenguaje de programación de bajo nivel , que utiliza instrucciones mnemotécnicas y operandos para representar código de máquina . [10] Esto mejora la legibilidad y al mismo tiempo brinda un control preciso sobre las instrucciones de la máquina. Actualmente, la mayor parte de la programación se realiza utilizando lenguajes de programación de alto nivel , [12] que suelen ser más fáciles de entender y escribir para los humanos. [10] Estos lenguajes deben ser compilados (traducidos al lenguaje ensamblador) por un compilador específico del sistema , o ejecutarse a través de otros programas compilados. [13]

Conjuntos de instrucciones de software

Los códigos de operación también se pueden encontrar en los llamados códigos de bytes y otras representaciones destinadas a un intérprete de software en lugar de a un dispositivo de hardware. Estos conjuntos de instrucciones basados ​​en software a menudo emplean tipos de datos y operaciones de nivel ligeramente superior que la mayoría de sus homólogos de hardware, pero, sin embargo, se construyen siguiendo líneas similares. Los ejemplos incluyen el código de bytes que se encuentra en los archivos de clase Java que luego son interpretados por la máquina virtual Java (JVM), el código de bytes utilizado en GNU Emacs para el código Lisp compilado , .NET Common Intermediate Language (CIL) y muchos otros. [14]

Ver también

Referencias

  1. ^ ab Barron, David William (1978) [1971, 1969]. "2.1. Instrucciones simbólicas". Escrito en la Universidad de Southampton , Southampton, Reino Unido. En Floretin, J. John (ed.). Ensambladores y Cargadores . Monografías informáticas (3 ed.). Nueva York, Estados Unidos: Elsevier North-Holland Inc. p. 7.ISBN _ 0-444-19462-2. LCCN  78-19961.(xii+100 páginas)
  2. ^ ab Chiba, Shigeru (2007) [1999]. "Javassist, un conjunto de herramientas de traducción de código de bytes de Java". Archivado desde el original el 2020-03-02 . Consultado el 27 de mayo de 2016 .
  3. ^ "Apéndice B: Códigos de máquina de instrucciones" (PDF) . Manual de programación en lenguaje ensamblador MCS-4: manual de programación del sistema de microcomputadora INTELLEC 4 (edición preliminar). Santa Clara, California, Estados Unidos: Intel Corporation . Diciembre de 1973. págs. B-1 – B-8. MCS-030-1273-1. Archivado (PDF) desde el original el 1 de marzo de 2020 . Consultado el 2 de marzo de 2020 .
  4. ^ Rafael, Howard A., ed. (noviembre de 1974). "Las funciones de una computadora: registro de instrucciones y decodificador" (PDF) . Manual del usuario del MCS-40 para diseñadores lógicos . Santa Clara, California, Estados Unidos: Intel Corporation . pag. viii. Archivado (PDF) desde el original el 3 de marzo de 2020 . Consultado el 3 de marzo de 2020 . […] Cada operación que el procesador puede realizar se identifica mediante un número binario único conocido como código de instrucción. […]
  5. ^ Jones, Douglas W. (junio de 1988). "Un CISC mínimo". Noticias de arquitectura informática de ACM SIGARCH . Nueva York, Estados Unidos: Asociación de Maquinaria de Computación (ACM). 16 (3): 56–63. doi : 10.1145/48675.48684 . S2CID  17280173.
  6. ^ Domagała, Łukasz (2012). "7.1.4. Conjunto de pruebas comparativas". Aplicación de CLP a la programación de módulos de instrucciones para procesadores VLIW. Gliwice, Polonia: Jacek Skalmierski Computer Studio. págs. 80–83 [83]. ISBN 978-83-62652-42-6. Archivado desde el original el 2020-03-02 . Consultado el 28 de mayo de 2016 .
  7. ^ Smotherman, Mark (2016) [2013]. "Problema de instrucciones múltiples". Escuela de Computación, Universidad de Clemson. Archivado desde el original el 28 de mayo de 2016 . Consultado el 28 de mayo de 2016 .
  8. ^ Jones, Douglas W. (2016) [2012]. "Un CISC mínimo". Colección en línea de arquitectura informática . Iowa City, EE.UU.: Universidad de Iowa , Departamento de Ciencias de la Computación. Archivado desde el original el 2020-03-02 . Consultado el 28 de mayo de 2016 .
  9. ^ Schulman, Andrew (1 de julio de 2005). "Encontrar clones binarios con cadenas de operaciones y resúmenes de funciones". Diario del Dr. Dobb . Parte I. Vol. 30, núm. 7. CMP Media LLC . págs. 69–73. ISSN  1044-789X. #374. Archivado desde el original el 2020-03-02 . Consultado el 2 de marzo de 2020.; Schulman, Andrés (1 de agosto de 2005). "Encontrar clones binarios con cadenas de operaciones y resúmenes de funciones". Diario del Dr. Dobb . Parte II. vol. 30, núm. 8. CMP Media LLC . págs. 56–61. ISSN  1044-789X. #375. Archivado desde el original el 2020-03-02 . Consultado el 28 de mayo de 2016.; Schulman, Andrés (1 de septiembre de 2005). "Encontrar clones binarios con cadenas de operaciones y resúmenes de funciones". CMP Media LLC . Parte III. vol. 30, núm. 9. Medios de comunicación empresariales unidos . págs. 64–70. ISSN  1044-789X. #376. Archivado desde el original el 2020-03-02 . Consultado el 28 de mayo de 2016 .
  10. ^ abcdef Hennessy, John L.; Patterson, David A.; Asanović, Krste; Bakos, Jason D.; Colwell, Robert P.; Bhattacharjee, Abhishek; Conte, Thomas M.; Duato, José; Franklin, Diana; Goldberg, David; Jouppi, Norman P.; Li, Sheng; Muralimanohar, Naveen; Peterson, Gregorio D.; Pinkston, Timothy M.; Ranganathan, Parthasarathy; Madera, David A.; Joven, acantilado; Zaky, Amr (23 de noviembre de 2017). Arquitectura informática: un enfoque cuantitativo (6 ed.). Cambridge, Massachusetts, Estados Unidos: Morgan Kaufmann Publishers . ISBN 978-0-12811905-1. OCLC  983459758.
  11. ^ Mansfield, Richard (1983). "Introducción: ¿Por qué lenguaje de máquina?". Lenguaje de máquina para principiantes. ¡Calcular! Libros (1 ed.). Greensboro, Carolina del Norte, EE.UU.: ¡ COMPUTAR! Publicaciones, Inc. , American Broadcasting Companies, Inc .; Servicios de sistemas pequeños, Inc. ISBN  0-942386-11-6. Archivado desde el original el 13 de febrero de 2008 . Consultado el 28 de mayo de 2016 .
  12. ^ "Popularidad del lenguaje de programación". langpop.com . 2013-10-25. Archivado desde el original el 11 de abril de 2015 . Consultado el 10 de octubre de 2015 .
  13. ^ Swanson, William (2001). "Introducción al lenguaje ensamblador". Tecnologías Swanson . Archivado desde el original el 2020-03-02 . Consultado el 10 de octubre de 2015 .
  14. ^ "Definición de código de bytes". Revista PC . Enciclopedia de la revista PC. Archivado desde el original el 6 de octubre de 2012 . Consultado el 10 de octubre de 2015 .

Otras lecturas