significado pelicula language drama asl app assembly

pelicula - assembly significado



Diferencia entre: Opcode, byte code, mnemónicos, código de máquina y ensamblaje (6)

Soy bastante nuevo en esto. Traté de entender la diferencia entre los términos mencionados de una manera clara, sin embargo, todavía estoy confundido. Esto es lo que he encontrado:

  • En lenguaje de ensamblador (o ensamblaje) de computadora, una mnemotécnica es una abreviatura para una operación. Se ingresa en el campo del código de operación de cada instrucción del programa del ensamblador. por ejemplo, AND AC,37 que significa AND el registro de AC con 37 . entonces AND , SUB y MUL son mnemotécnicos. Ellos son traducidos por el ensamblador.

  • Las instrucciones (declaraciones) en lenguaje ensamblador son generalmente muy simples, a diferencia de las de los lenguajes de programación de alto nivel. En general, un mnemónico es un nombre simbólico para una única instrucción de lenguaje de máquina ejecutable (un código de operación), y hay al menos un mnemónico de código de operación definido para cada instrucción de lenguaje de máquina. Cada instrucción generalmente consiste en una operación u código de operación, más cero o más operandos.


Aniket hizo un buen trabajo, pero también voy a intentarlo.

Primero, comprenda que en el nivel más bajo, los programas de computadora y todos los datos son solo números (a veces llamados palabras ), en algún tipo de memoria. En general, estas palabras son múltiplos de 8 bits (1 y 0) (como 32 y 64) pero no necesariamente, y en algunos procesadores cada palabra es considerablemente más grande. Sin embargo, sin embargo, solo los números se representan como una serie de 1 y 0, o de encendido y apagado, si lo desea. Lo que significan los números depende de qué / quién los está leyendo, y en el caso del procesador, lee la memoria una palabra a la vez y, según el número (instrucción) que ve, toma alguna acción. Tales acciones pueden incluir leer un valor de la memoria, escribir un valor en la memoria, modificar un valor que haya leído, saltar a algún otro lugar de la memoria para leer las instrucciones.

En los primeros días, un programador activaba y desactivaba literalmente los interruptores para realizar cambios en la memoria, con luces encendidas o apagadas para leer los 1 y 0, ya que no había teclados, pantallas, etc. A medida que el tiempo avanzaba, la memoria se hacía más grande, los procesadores se hacían más complejos, se concebían los dispositivos de visualización y los teclados para la entrada, y con eso, formas más fáciles de programar.

Parafraseando a Aniket:

El OPCODE es parte de una palabra de instrucción que es interpretada por el procesador como una representación de la operación a realizar, como leer, escribir, saltar, agregar. Muchas instrucciones también tendrán OPERANDOS que afectan el rendimiento de la instrucción, como decir desde dónde en la memoria leer o escribir, o dónde saltar. Entonces, si las instrucciones tienen un tamaño de 32 bits, por ejemplo, un procesador puede usar 8 bits para el código de operación y 12 bits para cada uno de los dos operandos.

A un paso de cambiar los interruptores, el código puede ingresarse en una máquina usando un programa llamado "monitor". El programador usaría comandos simples para decir qué memoria desea modificar e ingresa el CÓDIGO DE LA MÁQUINA numéricamente, por ejemplo, en la base 16 (hex) usando 0 a 9 y A a F para los dígitos.

Aunque es mejor que alternar los interruptores, ingresar el código de la máquina sigue siendo lento y propenso a errores. Un paso adelante es el CÓDIGO DE MONTAJE, que utiliza MNEMONICS más fácilmente recordados en lugar del número real que representa una instrucción. El trabajo del ensamblador consiste principalmente en transformar la forma mnemónica del programa al código de máquina correspondiente. Esto facilita la programación, especialmente para las instrucciones de salto, donde parte de la instrucción es una dirección de memoria para saltar o una cantidad de palabras para omitir. La programación en código de máquina requiere cálculos minuciosos para formular la instrucción correcta, y si se agrega o elimina algún código, es posible que las instrucciones de salto deban recalcularse. El ensamblador maneja esto para el programador.

Esto deja a BYTECODE, que es básicamente lo mismo que el código de máquina, ya que describe operaciones de bajo nivel como la memoria de lectura y escritura, y cálculos básicos. El código de bytes se concibe típicamente para producirse cuando COMPILACIÓN de un lenguaje de nivel superior, por ejemplo PHP o Java, y a diferencia del código de máquina para muchos procesadores basados ​​en hardware, puede tener operaciones para soportar características específicas del lenguaje de nivel superior. Una diferencia clave es que el procesador de bytecode suele ser un programa, aunque se han creado procesadores para interpretar algunas especificaciones de bytecode, por ejemplo, un procesador llamado SOAR (Smalltalk On A RISC) para el bytecode Smalltalk. Si bien no suele llamar el código de código de código de máquina nativo, para algunos tipos de procesadores como CISC y EISC (por ejemplo, Linn Rekursiv, de las personas que crearon reproductores de discos), el procesador en sí contiene un programa que interpreta las instrucciones de la máquina, por lo que hay paralelos


El "ensamblaje" se origina a partir de los primeros "ensambladores" de código que "ensamblaban" programas de múltiples archivos (lo que ahora llamaríamos "incluir" archivos). (Aunque tenga en cuenta que los "archivos" solían ser mazos de cartas). El uso del término "lenguaje ensamblador" para referirse a una representación mnemotécnica del código es una formación de fondo del "ensamblador", y algo impreciso, ya que hay varios " los ensambladores "no admiten archivos de inclusión y, por lo tanto, no" ensamblan ".

Es interesante notar que los "ensambladores" fueron inventados para soportar "subrutinas". Originalmente había subrutinas "internas" y "externas". Las subrutinas "internas" eran lo que ahora llamaríamos "en línea", mientras que las "externas" se alcanzaban a través de un mecanismo primitivo de "llamada". Hubo mucha controversia en el momento sobre si las subrutinas "externas" eran una buena idea o no.

"Mnemónico" viene del nombre del dios griego Mnemosyne, la diosa de la memoria. Cualquier cosa que te ayude a recordar cosas es un "dispositivo mnemotécnico".


La siguiente línea es un código x86 desensamblado.

68 73 9D 00 01 PUSH 0x01009D73

68 es el código de operación . Con lo siguiente para bytes representa la instrucción PUSH del lenguaje ensamblador x86. La instrucción PUSH inserta datos de 4 bytes (32 bits) de longitud para apilar. La palabra PUSH es solo un mnemotécnico que representa el código de operación 68. Cada uno de los bytes 68 , 73 , 9D , 00 , 01 es código de máquina .

Los códigos de máquina son para máquinas reales (CPU), pero los códigos de bytes son pseudo códigos de máquina para máquinas virtuales.

Cuando escribes un código java. El compilador java compila tu código y genera códigos de bytes. (Un archivo .class) y puede ejecutar el mismo código en cualquier plataforma sin cambiar.

JAVA CODE | | BYTE CODE ________________|_______________ | | | x86 JVM SPARC JVM ARM JVM | | | | | | x86 SPARC ARM MACHINE CODE MACHINE CODE MACHINE CODE


Recientemente leí un buen artículo sobre esto, Diferencia entre Opcode y Bytecode , por lo que me gustaría compartir con quienquiera que esté después de una buena explicación sobre este tema. Todo el crédito va al autor original .

  • Código de operación :

    Opcode es la abreviatura de código de operación. Como su nombre lo indica, el código de operación es un tipo de código que le dice a la máquina qué hacer, es decir, qué operación realizar. Opcode es un tipo de instrucción en lenguaje de máquina.

  • Bytecode :

    Bytecode es similar al opcode de opcode en la naturaleza, ya que también le dice a la máquina qué hacer. Sin embargo, bytecode no está diseñado para ser ejecutado por el procesador directamente , sino por otro programa .
    Es más comúnmente utilizado por un intérprete basado en software como Java o CLR . Convierten cada instrucción de máquina generalizada en una instrucción de máquina específica o instrucciones para que el procesador de la computadora entienda.
    De hecho, el nombre del bytecode proviene de conjuntos de instrucciones que tienen códigos de operación de un byte seguidos de parámetros opcionales .


OPCODE : es un número interpretado por su máquina (virtual o silicon) que representa la operación a realizar.

BYTECODE : Igual que el código de máquina, excepto que se usa principalmente por un intérprete basado en software (como Java o CLR)

MNEMONIC : la palabra en inglés MNEMONIC significa "Un dispositivo como un patrón de letras, ideas o asociaciones que ayuda a recordar algo". Por lo tanto, los programadores de ensamblajes suelen utilizarlo para recordar las "OPERACIONES" que puede hacer una máquina, como "AGREGAR" y "MUL" y "MOV", etc. Esto es específico del ensamblador.

CÓDIGO DE LA MÁQUINA : es la secuencia de números que activa y desactiva los interruptores de la computadora para realizar un determinado trabajo, como la suma de números, la ramificación, la multiplicación, etc. Esto es puramente específico de la máquina y está bien documentado por el Implementadores del procesador.

Ensamblaje : hay dos "ensamblajes"; un programa de ensamblaje es una secuencia de mnemónicos y operandos que se envían a un "ensamblador" que "ensambla" los mnemónicos y operandos en un código de máquina ejecutable. Opcionalmente, un "enlazador" vincula los ensamblajes y produce un archivo ejecutable.

el segundo "ensamblaje" en lenguajes basados ​​en "CLR" (lenguajes .NET) es una secuencia de código CLR infundido con información de metadatos, una especie de biblioteca de código ejecutable, pero no directamente ejecutable.


  • El código de la máquina está en binario pero la mnemónica está en ideas, letras (MOV, ADD, etc.)
  • El código de máquina es el lenguaje pero el código mnemónico es una parte del lenguaje ensamblador