Niveles de maquina tm1

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 9,53 KB

 
Niveles de la maquina
Nivel2-Nivel de maquina.La CPU interacciona con la memoria del sistema y atraves de los buses de carga en la memoria una secuencia binaria que es una instruccion.
El conjunto de instrucciones es el nive maquina, asi la cpu intercambia informacion con los dispositivos perifericos.
En la zona de memoria donde estan las isntrucciones tenemos que poner la secuencia de bits que tiene nuestro programa (muy costoso no se hace)
Nivel3-Nivel de sistema operativo.Constituido por conjuntos de instrucciones del nivel anterior habra una serie de funcionalidades ofrecidas por el ssoo.
Nos facilitara la realizacion de operaciones basicas.
Contiene instrucciones de nivel de maquina del sistema que nos permite sacar por ej un caracter por pantalla.
Estas instrucciones son uns rutinas que ofrece el ssoo para hacer funciones mas complejas.El programa llamara a una de estas y la cpu se encargara de lo demas.
Nivel4-Nivel de lenguaje ensamblador.Se realiza una correspondencia ente una cadena de texto y una secuencia binaria.Las cadenas de texto se corresponden con una unica instruccion de nivel de maquina o bien con una de las operaciones que nos ofrece el nivel de ssoo.
Nivel5-Nivel de lenguaje orientado a problemas.Aqui estan los lenguajes de medio y alto nivel.No son instrucciones entendibles por la CPU, hay que traducirlas a instrucciones de nivel de maquina.
-Ejecucion del codigo en los distintos niveles:
1)Interpretacion
:Traducimos la instruccion de un nivel superior a una secuencia binaria correspondiente al nivel maquina del sist.convencional.
Nos permitira realizar un seguimiento de efecto de las instrucciones sobre la cpu. Se suele usar en operaciones de Depurado
Inconveniente.Cada vez que ejecute un codigo habra que hacer la conversion.Al tipo de ejecucion habra que añadir el de conversion.
Juego de instrucciones:1Busqueda de instruccion.Secuencia binaria que la cpu entienede para realizar una operacion.Para esto se dispone de un registro(contador de programa) IP, va a contener la direcion de memoria que apunta a una posicion donde tenemos la secuencia binaria que contenga la instruccion.La cpu lo que hace es leer dicha secuencia y lo lleva a un registro(registro de instrucciones).despues comienza la siguiente fase.
2Decodificacion de la instruccion.Tenemos una unidas que a partir del cocdigo de operacion obtiene la actualizacion de las lineas de control necesarias para la ejecucion.Mediante el decodificador de instricciones, es la parte critica del diseño de una Cpu.Se asocian las lineas de control a traves de la Unidad de Control.
Existen 2 tecnicas: 1Optimizacion del diseño de Unidad de Control: eligiendo las lineas adecuadas asociadas al codigo de operacion, menos circuiteria y cpu mas rapida.Diseño muy complejo de los compiladores y ensambladores.2Optimizar el codigo de operacion: Lo que hacemos es asociar conjuntos de combinaciones de birs de codigos de operacion a instrucciones similares.Facilita el diseño de compiladores y ensambladores.Requieren de una Unidad de control con mayor circuiteria y son mas lentas.
3Busqueda de los operandos.Localizamos donde esta la informacion con la que quermeos realizar la operacion. Aqui entran las distintas maneras de direccionamiento.
4Ejecucion de la instruccion y 5Almacenamiento del resultado.Para esto se utilizan alguno de los mecanismos de direcionamiento.Una vez almacenado el resultado,continua en la primera parte del ciclo con la siguiente instruccion.
2)Traduccion.Tendremos instrucciones de n4n5, las convertiremos en instrucciones de n2 y esta informacion(binario)se almacenara.Cuando las quiera ejecutar cargare las sec.binaria y se transfiere el control de la 1ª instruccion.Si lo queiro volver a ejecutar, simprlemente con cargarlo sobra, por lo que es mas rapido(solo hay que convertirlo una vez).Inconveniente: Todas las instrucciones de n2 se ejecutan de forma seguida y es dificil seguir el comportamiento de la cpu.
Direccionamientos:
-
Direccionamiento Implicito.El operandi va asociado con la instruccion.No usare espacio de una memoria para localizar el operando ej.INC
-Direccionamiento Inmediato.Se unsa para hacer referencia a valores constantes.El dato va a continuacion del codigo de operacion de la instruccion.En memoria, dodne esta el codigo tendremos Codigo de operacion y Dato inmediato.Se usa para constantes pq en la cpu los segmentos de codigo no pueden ser modificados.
-Direccionamiento Directo.es una direccion a un bloque de memoria destinado a datos.Cada posicion de moetia se corresponde con una direccion.Lo que hace es localizar donde esta el dato.Tendriamos Codigo operacion y ADR.
Este es el mecanismo para direccionar variables de memoria.Para hacer referencia a un direccionamiento directo [Valos direccion].
Para programar se sustuituyen ls valores de las direcciones por una etiqueta.
-Direccionaniento a Registro o Directo a Registro.Hacemos tmb referencia en el codigo de la operacion a la localizacion del dato.En este caso la localizacion no esta en memoria sino dentro de la CPU, en los Registros.Haremos referencia al nombre del registro donde esta el operando.Resta AX,7
Direccionamiento Indirecto.Haremos referencia a donde esta localizada la @ del dato, junto con el codigo de operacion, no indico la @si no la localizacion de la @.Codigo de operacion y Localizacion direccion.Utilidad: manejo de punteros(apuntan a la @ de un dato), tendremos una ubicacion dentro de la ADR a partir de la cual accedo al dato.
En intel, solo se puede hacer este direccionamiento por medio de registros,la sintaxis en intel -> [Localizacion] ej. Multiplica [SI],AX
Direccionamiento Relativo.Indicamos como localizacion de dato el valor de un registro y al contenido de este le sumamos un desplazamiento. ej. [SI+7]
Utilidad: para los casos en que manejo estructuras alamacenadas en memoria en posiciones consecutivas como por ej.Vectores.
Con un direccionamiento indirecto necesitaria 2 registros REG1 y REG2 e ir incrementandolos para pasar a los demas elementos.Con el relativo si conzoco la diferencia dentre las posiciones de mometia, el 1ºlo direcciono indirecto y el otro a relativo, asi para acceder a los elementos solo tengo que incrementar un registro.
-Direccionamiento Indexado.Similar al relativo, la @ dato sera la suma del contenido de 2 registros.En intel es conocido cono direccionamiento BASE+INDICE.
Hay un tipo que es Base+Indice+Desplzmiento que es una mezcla de indexado y relativo.
Utilidad: Casos que tengamos que manejar estructuras de vectores, pero repetidas en distintas direcciones de memoria, usare un registro para el comiendo de datos y otro para desplazarme por los elementos ej.suma de elementos de un vector.
-Direccionamiento mediante Pila.Usaremos una estructura de memoria especial que es la pila.Es un bloque de memoria controlado por un registro especial que es el puntero de pila SP para 16b y ESP para 32b.Este nos contiene la @del ultimo dato introdicido en la pila. El comportamiento es una estructura donde esta la informacion almacenada y el 1er dato en entrar es el ultimo en salir (FILO)
Dispondre de instrucciones para introducir/retirar informacion.Para acceder a un dato hayq eu retirar la informacion introdicidad con posterioridad.Evoluciona de posiciones mas altas a mas bajas.Cuando meto informacion el Puntero pila Decrementa
Este direccionamiento consiste en tomar/recuperar datos mediante Pila.ej Calculadora.
Usaremos el direccionamiento a pila para el paso de parametros entre los procedimientos.
Organizacion de la informacion dentro de la memoria:
Podemos manejar datos de 8,16,32bits, cada posicion de memoria ocupa 8b. Si quiero escribir en memoria datos de 8b no hay problemas, para datos mayores hay 2 formas de organizar la memoria:
BigEndian:Los Bytes de mayr peso ocupan posiciones de memoria mas bajos, los de menor peso ocupan posiciones de memoria mas altas.
Ventaja: Cuando programamos el codigo esta en posiciones de memoria consecutivas, el contador de programa se incrementa, leemos de posiciones mas bajas a mas altas, con este esquema la posicion es la misma q en la lectura
LittleEndian:Los Bytes de mayor peso ocupan posiciones de memoria mas altas y los de menos peso posiciones mas bajas.
Para direccionar un dato siempre se hace referencia como @ del dato a la del byte menor.He de conocer el tamaño del dato y lo leere al reves.
En memoria los valores estan en Hexadecimal: 8bits = 2 cifras hex , 16b=4cifras Hex,32b= 8 cifras Hex.Si el valor Hex comienza por una letra, tiene que venir precedido por un 0que no se almacena en memmoria.
Tipos de Instruccion:

Entradas relacionadas: