Pregunta simple sobre registros

Iniciado por zonahurbana, 19 Abril 2014, 17:55 PM

0 Miembros y 3 Visitantes están viendo este tema.

zonahurbana

Acerca de los registros de 16 bits de "uso general": AX, BX, CX, DX
Y también los demás, como: CS, DS, SS, ES...

¿Existen en general y son usados por cada programa que se ejecuta? ¿O cada programa tiene una sección de memoria reservada sólo para sí mismo y se le asignan sus correspondientes registros?

Uso Windows 7 y usando DosBox puedo acceder a la aplicación debug.exe pero no entiendo qué es lo que sucede cuando modifico los valores de estos registros... quiere decir que si estoy usando un programa el programa modificará los valores de los punteros para ejecutar su código correspondiente? y por tanto habría error si ejecuto un programa y simultáneamente cambio los valores de los segmentos...

Y si cada programa tiene su respectiva segmentación, entonces qué es lo que modifico con el debug? los registros asignados para el programa "debug"?

La verdad me resulta muy confuso. Por favor espero que puedan ayudarme a entender mejor este tema.
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...

Eternal Idol

Cada procesador fisicamente tiene unos registros y nada mas pero estos se pueden guardar en memoria y restaurar posteriorment, asi se logra multitasking con un solo procesador por ejemplo.

Modificas los registros del programa que el depurador DEBUG este depurando (si ejecutas debug app125.exe seran los de app125.exe, en el caso de que no selecciones ningun programa en particular hay solo memoria sin inicializar para que vos pongas lo que quieras) y no al propio DEBUG. Y si, si en BX habia un puntero, lo modificas y el programa despues intenta acceder a una direccion invalida habra una excepcion no controlada ...
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

zonahurbana

Gracias por responder.
Ahora voy a escribir en modo afirmativo y usted me dice si entendí bien, por favor  :rolleyes:

Físicamente existen estos registros y son únicos:
- AX, BX, CX, DX
- CS, DS, ES, SS
- SI, DI

En la actualidad, dado que se ejecutan muchas tareas simultáneamente es necesario simular que existen estos registros para cada programa, pero realmente es memoria asignada.

Así cometa errores en mis prácticas básicas sobre los comandos U, R, D, E que escribo en el debug jamás se verán afectados los programas que tengo en ejecución ya que nunca especifico un programa al que aplicar el debug, simplemente uso esos valores. Por esa razón siempre aparecen inicializados con ceros cuando ejecuto el debug (la gran mayoría pero no todos).

MOV, INC son mnemotécnicos que pasan a ser lenguaje máquina a través del Assembler, pero el Assembler no es propiamente un lenguaje de programación.

¿U, R, D, E son instrucciones de procesador?
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...

Eternal Idol

Si, los registros son unicos en cada procesador (aunque hay mas que esos que enumeraste).

Si, no podes interferir en otros procesos tan facilmente.

Assembly es un lenguaje de programacion de bajo nivel, assembler es el programa que ensambla el codigo de assembly y lo transforma en codigo maquina.

Esos son comandos del depurador DEBUG.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

zonahurbana

Cita de: zonahurbana en 20 Abril 2014, 02:09 AMEn la actualidad, dado que se ejecutan muchas tareas simultáneamente es necesario simular que existen estos registros para cada programa, pero realmente es memoria asignada.

Los registros son memorias de poca capacidad a los que se puede acceder mucho más rápido que a la memoria misma, ¿verdad?
¿Si es cierto que son simulados por memoria quiere decir que hay una zona "especial" de la memoria a la que se puede acceder más rápido? ¿Y los registros únicos (no simulados) para qué sería usado entonces, para el SO?

Gracias por responder nuevamente.
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...

Eternal Idol

http://en.wikipedia.org/wiki/Processor_register

Si.

No, se trabaja siempre con los registros, solo que para poder ir cambiando de tarea se guarda en memoria y despues se restaura el estado de los mismo (los valores que contenian antes de cambiar de tarea).
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Vaagish

Citar¿Y los registros únicos (no simulados) para qué sería usado entonces, para el SO?

En realidad, no hay "no simulados", se guarda el estado de los registros, se cargan los registros de otra tarea, el procesador hace la tarea por el tiempo que el SO considere necesario, se guardan los registros y se cambia de tarea.. lo demas es repetir el proceso hasta apagar la computadora...  ;D

Saludos!

PD: Espero no estar equivocado..

Eternal Idol

Si, fue lo que intente decir, tal vez sin exito  ;D
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

zonahurbana

En cuanto a conocimiento de hardware estoy bastante mal... estuve leyendo acerca de esto, y con lo que comentan, a ver si entendí:

A los registro se accede más rápidamente ya que no es necesario hacer uso del bus de datos para acceder a la memoria, sino que se accede a ellos directamente (no estoy muy seguro cómo exactamente, además en otra parte del texto decía que es una zona especial de memoria, con lo que parece contradecirse).

Los registros de segmentos permiten seleccionar un segmento en particular (como el de datos, el de código, etc). No es que esos registros guarden información, sólo guardan la dirección de la base del segmento. Luego a estos valores se les multiplicará por 10h y sumará un desplazamiento.

Los procesadores no se centran en un único proceso, sino que posponen las instrucciones momentáneamente para ir por otros, en eso deben guardan los valores actuales de los registros en pila para usar los nuevos valores del nuevo programa que se ejecuta. Cuando se deba volver al que se estaba antes se carga de la pila y se avanzan algunas instrucciones más. Aparentemente se ejecutan varios procesos simultáneamente, pero lo que ocurre es que se dan pasadas de a pocos en cada uno de ellos. De no ser así, el ordenador estaría pendiente de recibir lo que actualmente estoy escribiendo y no podría continuar ejecutando dota2 y otras aplicaciones que tengo abiertas.
Nunca dejar de aprender es importante, más allá del ritmo que se siga ...

Vaagish

CitarA los registro se accede más rápidamente ya que no es necesario hacer uso del bus de datos para acceder a la memoria, sino que se accede a ellos directamente (no estoy muy seguro cómo exactamente, además en otra parte del texto decía que es una zona especial de memoria, con lo que parece contradecirse).

No entiendo bien a que hará referencia que es una "zona especial de memoria", sera porque son como pequeñas memorias  :huh:
Lo demás esta todo correcto, aunque aclaro que el procesador tiene unos buses dentro, bus de datos y bus de control (quizás algún otro que no recuerdo), busca alguna imagen en google de como esta diseñado un procesador..

CitarLos registros de segmentos permiten seleccionar un segmento en particular (como el de datos, el de código, etc). No es que esos registros guarden información, sólo guardan la dirección de la base del segmento. Luego a estos valores se les multiplicará por 10h y sumará un desplazamiento.
Los procesadores no se centran en un único proceso, sino que posponen las instrucciones momentáneamente para ir por otros, en eso deben guardan los valores actuales de los registros en pila para usar los nuevos valores del nuevo programa que se ejecuta. Cuando se deba volver al que se estaba antes se carga de la pila y se avanzan algunas instrucciones más. Aparentemente se ejecutan varios procesos simultáneamente, pero lo que ocurre es que se dan pasadas de a pocos en cada uno de ellos. De no ser así, el ordenador estaría pendiente de recibir lo que actualmente estoy escribiendo y no podría continuar ejecutando dota2 y otras aplicaciones que tengo abiertas.

Creo que si, todo así.

PD: Yo tampoco la tengo re clara, puede que pifee

Saludos!!