Terminología: & # 8220; registros & # 8221; en programación en lenguaje ensamblador

StackOverflow https://stackoverflow.com/questions/814448

  •  03-07-2019
  •  | 
  •  

Pregunta

He escuchado las terminologías: registro, registro de hardware, registro de programa, archivo de registro.

¿Cuál es la diferencia entre todos estos? Y, además, ¿cuál es el tipo de registro de EAX? Registro del programa?

¿Fue útil?

Solución

Un registro es un área de almacenamiento dentro de la CPU. Aquí hay algunas definiciones:

  • Un archivo de registro es una matriz de registros; consulte http://en.wikipedia.org/wiki / Register_file para una descripción completa.
  • El registro eax es el registro de acumuladores de la familia de CPU Intel x86, es el lugar donde se realizan las matemáticas de enteros.
  • El registro de programa (creo que te refieres a contador de programa) es un registro de propósito especial que contiene la dirección de la próxima instrucción de código de máquina que se ejecutará

Otros consejos

Un registro es el dispositivo de almacenamiento de datos más básico. Ahora estas son las principales diferencias.

Un archivo de registro es generalmente una gran colección de registros organizados de tal manera que se utilizan para cálculos. En un procesador moderno, todos los cálculos se realizan entre valores almacenados en varios registros en un archivo de registro.

Un registro de hardware generalmente se refiere a registros que almacenan información de configuración y estado. Esto podría ser para el procesador o algún dispositivo de E / S de hardware externo.

Un registro de programa puede referirse al contador del programa, un registro especial que almacena la ubicación de memoria de la instrucción actual que está ejecutando el procesador.

un registro es una pequeña porción de memoria que se encuentra dentro de la CPU. y es utilizado por el lenguaje ensamblador para realizar diversas tareas.

¿Podría ser que por registro de programa te refieres a contador de programa?

Bueno, tiene registros de propósito general, luego tiene registros que tienen un uso especial (por ejemplo, los registros de contadores del programa) y tiene varios otros (registros de memoria / segmento, SSE).

EAX, EBX, etc. son los registros estándar de propósito general. Puedes usarlos para lo que quieras. Por lo general, el valor de retorno se debe colocar en EAX, pero eso es básicamente. Luego tienes el puntero de pila EBP, que apunta al comienzo de tu pila. Finalmente, debe programar el contador, que apunta a la instrucción actual, EIP. En x86, hay algunos casos especiales, donde dos registros se fusionan cuando se realizan cálculos de enteros de 64 bits. Existen más casos especiales para las instrucciones de cadena. Si está a punto de aprender a ensamblar, lo más fácil sería comenzar con un PowerPC, que tiene más registros, y puede usarlos todos sin restricciones.

Todos estos registros son, por supuesto, registros de hardware, es decir, están integrados físicamente en su CPU;) El lugar donde se encuentran se denomina archivo de registro.

El otro tipo de registros que puede ver es si tiene una máquina virtual que utiliza registros ( Parrot ), obtiene " registros virtuales " ;, que luego se asignan a registros reales. Esto es similar a lo que puede hacer cuando escribe un compilador, básicamente asume una cantidad ilimitada de registros (es decir, genera uno nuevo en cada uso) y realiza la transformación a registros reales en una fase diferente (asignación de registros ).

Un " registro de hardware " También podría referirse a una ubicación dentro de algún dispositivo de hardware. Por ejemplo, un UART (puerto COM) se ve como un conector en forma de D con 9 o 25 pines desde fuera del gabinete, pero para el controlador del dispositivo se parece a varios registros de configuración, un registro de estado y registros de datos que contienen el siguiente carácter para Enviar y el último carácter recibido. (He omitido un lote de detalles allí).

En la arquitectura x86, esos registros suelen estar ubicados en un espacio de direcciones físicas especiales al que se accede con instrucciones de E / S. En otras plataformas, es común que los registros de hardware se asignen a algún rincón del espacio de memoria normal. En cualquier caso, uno de los roles importantes de un sistema operativo y sus controladores de dispositivo es evitar que el código de la aplicación necesite conocer los detalles de dónde se encuentran los registros de hardware y qué significan.

En algunos tipos de dispositivos de hardware, la distinción entre memoria y registros de hardware es menos clara. Por ejemplo, su adaptador de video contiene un bloque de memoria conocido como el buffer de cuadros que contiene los valores de color y brillo para cada píxel individual. ¿Es esa memoria un gran registro de hardware o es solo un búfer que tiene un efecto secundario interesante?

En relación con la pregunta, hay dos tipos generales de registros que debe considerar:

  • registros de programas
  • registros de hardware

Los registros de hardware están sincronizados (actualizados en tic tac de reloj) y se usan en el diseño físico de los circuitos del procesador.

Los registros del programa son de memoria de acceso aleatorio y se guardan en un archivo de registro ubicado en la CPU. Las instrucciones de ensamblaje / código de máquina acceden a estos registros a través de nombres como% eax,% esp,% rdi,% edi, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top