Código de operación


De Wikipedia, la enciclopedia libre
  (Redirigido desde el código de operación )
Saltar a navegación Saltar a búsqueda

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 instrucción , [3] código de instrucción , [4] sílaba de instrucción , [5] [6] [7] [8 ] paquete de instrucciones u opstring [9] [2] ) es la parte de una instrucción en lenguaje de máquina que especifica la operación a 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ódigos de bytes .

Visió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 dado 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. Aparte del código de operación en sí, una instrucción normalmente también tiene uno o más especificadores para operandos (es decir, datos) sobre los que debe actuar la operación, aunque algunas operaciones pueden tener operandos implícitos , o ninguno en absoluto. [10] Hay conjuntos de instrucciones con campos casi uniformes para el código de operación y los especificadores de operando, así como otros (el x86arquitectura, por ejemplo) con una estructura de longitud variable más complicada. [10] [11] Los conjuntos de instrucciones se pueden ampliar mediante el uso de prefijos de código de operación que agregan un subconjunto de nuevas instrucciones compuestas por códigos de operación existentes siguiendo secuencias de bytes reservadas.

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 requerida ] 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 usa instrucciones mnemotécnicas y operandos para representar código de máquina . [10] Esto mejora la legibilidad al mismo tiempo que brinda un control preciso sobre las instrucciones de la máquina. La mayor parte de la programación se realiza actualmente utilizando lenguajes de programación de alto nivel , [12] que suelen ser más fáciles de leer y escribir. [10] Estos lenguajes necesitan ser compilados (traducidos al lenguaje ensamblador) por un compilador específico del sistema , o ejecutados 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 un dispositivo de hardware. Estos conjuntos de instrucciones basados ​​en software a menudo emplean tipos de datos y operaciones de nivel ligeramente más alto que la mayoría de sus homólogos de hardware, pero, no obstante, se construyen en 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

  • Gadget (secuencia de instrucciones de la máquina)
  • Código de operación ilegal
  • Base de datos de código de operación
  • Sílaba (informática)

Referencias

  1. ↑ a b 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 de computadora (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. ↑ a b Chiba, Shigeru (2007) [1999]. "Javassist, un juego de herramientas de traducción de código de bytes de Java" . Archivado desde el original el 2 de marzo de 2020 . Consultado el 27 de mayo de 2016 .
  3. ^ "Apéndice B - Códigos de la máquina de instrucciones" (PDF) . Manual de programación en lenguaje ensamblador MCS-4: Manual de programación del sistema de microcomputadoras 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 puede realizar el procesador 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". ACM SIGARCH Computer Architecture News . Nueva York, Estados Unidos: Association for Computing Machinery (ACM). 16 (3): 56–63. doi : 10.1145 / 48675.48684 . S2CID 17280173 . 
  6. ^ Domagała, Łukasz (2012). "7.1.4. Paquete de referencia" . 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 2 de marzo de 2020 . Consultado el 28 de mayo de 2016 .
  7. ^ Smotherman, Mark (2016) [2013]. "Problema de instrucción múltiple" . 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 On-Line de Arquitectura de Computadores . Iowa City, Estados Unidos: Universidad de Iowa , Departamento de Ciencias de la Computación. Archivado desde el original el 2 de marzo de 2020 . Consultado el 28 de mayo de 2016 .
  9. Schulman, Andrew (1 de julio de 2005). "Encontrar clones binarios con cadenas de operaciones y compendios de funciones" . Diario del Dr. Dobb . Parte I. Vol. 30 no. 7. CMP Media LLC . págs. 69–73. ISSN 1044-789X . # 374. Archivado desde el original el 2 de marzo de 2020 . Consultado el 2 de marzo de 2020. ; Schulman, Andrew (1 de agosto de 2005). "Encontrar clones binarios con cadenas de operaciones y compendios de funciones" . Diario del Dr. Dobb . Parte II. Vol. 30 no. 8. CMP Media LLC . págs. 56–61. ISSN 1044-789X . # 375. Archivado desde el original el 2 de marzo de 2020 . Consultado el 28 de mayo de 2016. ; Schulman, Andrew (1 de septiembre de 2005). "Encontrar clones binarios con cadenas de operaciones y compendios de funciones" . CMP Media LLC . Parte III. Vol. 30 no. 9. United Business Media . págs. 64–70. ISSN 1044-789X . # 376. Archivado desde el original el 2 de marzo de 2020 . Consultado el 28 de mayo de 2016 . 
  10. ^ a b c d e f 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, Gregory D .; Pinkston, Timothy M .; Ranganathan, Parthasarathy; Wood, David A .; Joven, Cliff; Zaky, Amr (23 de noviembre de 2017). Arquitectura de computadora: un enfoque cuantitativo (6 ed.). Cambridge, Massachusetts, EE.UU .: Morgan Kaufmann Publishers . ISBN 978-0-12811905-1. OCLC  983459758 .
  11. ^ Mansfield, Richard (1983). "Introducción: ¿Por qué el lenguaje de máquina?" . Lenguaje de máquina para principiantes . ¡Calcular! Libros (1 ed.). Greensboro, Carolina del Norte, EE. UU .: COMPUTE! Publicaciones, Inc. , American Broadcasting Companies, Inc .; Small System Services, 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" . Swanson Technologies . Archivado desde el original el 2 de marzo de 2020 . Consultado el 10 de octubre de 2015 .
  14. ^ "Definición de código de bytes" . Revista de PC . Enciclopedia de PC Magazine. Archivado desde el original el 6 de octubre de 2012 . Consultado el 10 de octubre de 2015 .

Otras lecturas

  • Hyde, Randall (2004). Escribe un gran código: pensamiento de bajo nivel, redacción de alto nivel . Comprensión de la máquina . 1 . San Francisco, California, EE.UU .: No Starch Press . pag. pássim. ISBN 1-59327003-8. Consultado el 10 de octubre de 2015 .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Opcode&oldid=1032396342 "