Descripción: Automatas y lenguajes formales Momento 4
Libro para matemáticas discreta, combinatoria o finita.Descripción completa
GUÍA DE ESTUDIOIDescripción completa
Descripción: Una breve descripcion de como funciona el proceso de optimizacion junto con ejemplos practicos para su mejor entendimiento.
CIRCUITOS ELECTRICOS Y APLICACIONES DIGITALES
un mas
Descripción completa
unidad 1 del la materia Automatas 2, de la carrera ing. en sistemas computacionales.
Colaborativo 1 Automatas y Lenguajes FormalesDescripción completa
Descripción completa
Descripción: Modulo completo de autómatas y lenguajes formales, para estudiar.
trabajo colaborativo 2 automatas y lenguajes formalesDescripción completa
Descripción: Se explica la teoria de automatas y los lenguajes formales . Valido para seguir la signatura a nivel universitario.
Automatas II, Optimización de CodigoDescripción completa
Trabajo Colaborativo Automatas de lenguajes Fase2
Lenguajes y Autómatas II - Unidad IV
Lenguajes y Autómatas II Unidad IV - Generación de código objeto. Competencia específica a desarrollar : Utilizar un lenguaje de bajo nivel para traducir el código construido a lenguaje máquina para su ejecución
4.1 - Registros. Los registros del procesador se emplean para controlar instrucciones en ejecución! manejar direccionamiento de memoria y proporcionar capacidad aritm"tica Los registros son espacios #$sicos dentro del microprocesador con capacidad de % bits &asta '% bits dependiendo del microprocesador que se emplee Los registros son direccionables por medio de una vi(eta! que es una dirección de memoria Los bits! por conveniencia! se numeran de derec&a a izquierda )*+! *%! *, ,! .! *! /0! los registros están divididos en seis grupos los cuales tienen un #in espec$#ico Los registros se dividen en: • • • • •
1egistros de propósitos generales 1egistros de segmento 1egistros de apuntadores de instrucciones 1egistro $ndice 1egistro de bandera
Registros de uso general AX 2 2 1egistro acumulador! dividido en A3 y AL )4 bits cada uno0- Interviene en las operaciones aritm"ticas y lógicas! despu"s de que la operación arroja un resultado BX 2 2 1egistro base! dividido en 53 y 5L- 6e utiliza en trans#erencias de datos entre la memoria y el procesador CX 2 2 1egistro contador! dividido en 73 y 7L- 6e utiliza como contador en bucles )L8890! en operaciones con cadenas )190! y en desplazamientos )7L0 DX 2 2 1egistro de datos! dividido en ;3 y ;L- 6e utiliza en operaciones de multiplicación y división junto con A< y en operaciones de entrada y salida de puertos! su mitad in#erior ;L contiene el n=mero de puertos Registros de segmento. Un registro de segmento se utiliza para alinear en un l$mite de párra#o o dic&o de otra #orma codi#ica la dirección de inicio de cada segmento y su dirección en un registro de segmento supone cuatro bits / a su derec&a Un registro de segmento tiene *' bits de longitud y #acilita un área de memoria para direccionamientos conocidos como el segmento actual Los registros de segmento son: 76 )código0! ;6 )datos0! 66 )pila0! 6 ! >6 y ?6 Registro Apuntador de instrucciones. l registro apuntador de instrucciones )I90 de *' bits contiene el desplazamiento de dirección de la siguiente instrucción que se ejecuta Registro índice.
*
Lenguajes y Autómatas II - Unidad IV
Los registros 6I y ;I están disponibles para direccionamientos inde@ados y para sumas y restas ue son las operaciones de punta Registro de bandera. Los registros de banderas sirven parar indicar el estado actual de la máquina y el resultado del procesamiento! 7uando algunas instrucciones piden comparaciones o cálculos aritm"ticos cambian el estado de las banderas
4. - Lenguaje ensamb!ador. l lenguaje ensamblador o assembler )assembly language en ingl"s0 es un lenguaje de programación de bajo nivel para las computadoras! microprocesadores! microcontroladores! y otros circuitos integrados programables Implementa una representación simbólica de los códigos de máquina binarios y otras constantes necesarias para programar una arquitectura dada de 79U y constituye la representación más directa del código máquina espec$#ico para cada arquitectura legible por un programador sta representación es usualmente de#inida por el #abricante de &ardBare! y está basada en los mnemónicos que simbolizan los pasos de procesamiento )las instrucciones0! los registros del procesador! las posiciones de memoria! y otras caracter$sticas del lenguaje Un lenguaje ensamblador es por lo tanto espec$#ico a cierta arquitectura de computador #$sica )o virtual0 sto está en contraste con la mayor$a de los lenguajes de programación de alto nivel! que! idealmente son portables Un programa utilitario llamado ensamblador es usado para traducir sentencias del lenguaje ensamblador al código de máquina de la computadora objetivo l ensamblador realiza una traducción más o menos isomor#a )un mapeo de uno a uno0 desde las sentencias mnemónicas a las instrucciones y datos de máquina sto está en contraste con los lenguajes de alto nivel! en los cuales una sola declaración generalmente da lugar a muc&as instrucciones de máquina Cuc&os so#isticados ensambladores o#recen mecanismos adicionales para #acilitar el desarrollo del programa! controlar el proceso de ensamblaje! y la ayuda de depuración 9articularmente! la mayor$a de los ensambladores modernos incluyen una #acilidad de macro! y son llamados macro ensambladores l lenguaje ensamblador #ue usado principalmente en los inicios del desarrollo de so#tBare! cuando a=n no se contaba con potentes lenguajes de alto nivel y los recursos eran limitados Actualmente se utiliza con #recuencia en ambientes acad"micos y de investigación! especialmente cuando se requiere la manipulación directa de &ardBare! altos rendimientos! o un uso de recursos controlado y reducido Cuc&os dispositivos programables )como los microcontroladores0 a=n cuentan con el ensamblador como la =nica manera de ser manipulados l 9rograma nsamblador- Draduce el lenguaje ensamblador al lenguaje máquina de la computadora
4..1 - "aracterísticas. * l código escrito en lenguaje ensamblador posee una cierta di#icultad de ser entendido ya que su estructura se acerca al lenguaje máquina! es decir! es un lenguaje de bajo nivel .
Lenguajes y Autómatas II - Unidad IV
. l lenguaje ensamblador es di#$cilmente portable! es decir! un código escrito para un microprocesador! puede necesitar ser modi#icado! para poder ser usado en otra máquina distinta Al cambiar a una máquina con arquitectura di#erente! generalmente es necesario reescribirlo completamente , Los programas &ec&os por un programador e@perto en lenguaje ensamblador son generalmente muc&o más rápidos y consumen menos recursos del sistema )memoria 1AC y 18C0 que el programa equivalente compilado desde un lenguaje de alto nivel Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel % 7on el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de código di#$ciles yEo muy ine#icientes de programar en un lenguaje de alto nivel! ya que! entre otras cosas! en el lenguaje ensamblador se dispone de instrucciones del 79U que generalmente no están disponibles en los lenguajes de alto nivel + Dambi"n se puede controlar el tiempo en que tarda una rutina en ejecutarse! e impedir que se interrumpa durante su ejecución Una de las principales ventajas del lenguaje ensamblador es que se encarga de administrar de manera transparente para el usuario la creación de memoria! las bi#urcaciones y el paso de parámetros Además nos permite acceder directamente a los recursos de la máquina para un mejor desempe(o 4.. - A!macenamiento. ;entro del almacenamiento que maneja el lenguaje ensamblador se tiene que este tiene una relación con los componentes internos del procesador: •
En la memoria: n donde se almacena la in#ormación en celdas especiales llamados registros los cuales tienen un nivel alto y un nivel bajo
•
Unidad aritmética y lógica: s la responsable de realizar como su nombre lo indica operaciones aritm"ticas y lógicas
•
Unidad de control : 6e encarga de coordinar que los otros componentes ejecuten las operaciones correctamente
•
Bus interno: 6on los canales por donde pasa la in#ormación que la máquina va a procesar )bus de entrada0 o procesada )bus de salida0
#anejo de !a #emoria$ %ireccionamiento &Interno y '(terno) l manejo de la memoria depende de que procesador tenga la máquina! entre los cuales a continuación se mencionan los siguientes: • • • • •
Cemoria de 9rograma Cemoria @terna de ;atos Cemoria Interna de ;atos 1egistros de >unciones speciales Cemoria de 5it
l espacio de la Memoria de Programa contiene todas las instrucciones! datos! tablas y cadenas de caracteres )strings0 usadas en los programas sta memoria se direcciona principalmente usando el registro de *' bits llamado ;ata 9ointer l tama(o má@imo de la Cemoria de 9rograma es de '% Fbytes La Memoria Externa de Datos contiene todas las variables y estructuras de datos que no caben en la memoria interna del Cicroprocesador sta memoria se direcciona principalmente por el registro de *' ,
Lenguajes y Autómatas II - Unidad IV
bits ;ata 9ointer ! aunque tambi"n se puede direccionar un banco de Cemoria @terna de ;atos de .+' bytes usando los dos primeros registros de propósito general l espacio de Memoria Interna de Datos #uncionalmente es la memoria de datos más importante! ya que a&$ es donde residen cuatro bancos de registros de propósito generalG la pila o stacH del programaG *.4 bits de los .+' bits de un área de memoria direccionable por bit y todas las variables y estructuras de datos operadas directamente por el programa l tama(o má@imo de la Cemoria Interna de ;atos es de .+' bytes 7ontiene un espacio para los denominados Registros de Funciones Especiales destinado para los puertos de entradaEsalida! temporizadores y puerto serie del circuito integrado stos registros incluyen al 6tacH 9ointerG al registro de la palabra de estado del programa y al Acumulador La cantidad má@ima de 1egistros de >unciones speciales es *.4 Dodos los 1egistros de >unciones speciales tienen direcciones mayores a *. y se ubican en los *.4 bytes superiores de la Cemoria Interna de ;atos stas dos áreas de la Cemoria Interna de ;atos se di#erencian por el modo de direccionamiento usado para accesarlas Los 1egistros de >unciones speciales solo se pueden accesar usando el modo de direccionamiento ;irecto! mientras que los *.4 bytes superiores solo se pueden accesar con el modo de direccionamiento Indirecto 9or otra parte! el espacio de Memoria de Bit se usa para almacenar variables y banderas de un bit l tama(o má@imo de la Cemoria de 5it es de .+' bits! *.4 de los bits comparten su espacio con *' bytes del espacio de la Cemoria Interna de ;atos y los otros *.4 bits lo &acen con los 1egistros de >unciones speciales
4.* - Lenguaje ma+uina. l lenguaje maquina es un conjunto de instrucciones restringido y sencillo! que puede ser interpretado y ejecutado directamente por la computadora Las instrucciones se almacenan y tratan en la computadora como cadenas de unos y ceros! aunque se representen en &e@adecimal o mediante nemot"cnicos 7uenta con unos niveles que lo caracterizan de instrucciones de máquina! donde incluye los modos de direccionamiento! #ormato de instrucciones! codi#icación del código de operación y la clasi#icación de las arquitecturas a nivel del lenguaje maquina ;entro de estos niveles entran los registros programables que &ay que &ay en el 79U donde los caracteriza por n=mero de registro! tama(o y utilidad de cada uno Una de sus ventajas es que 9ermite 1L87ALIJA7I8K 8 1U5I7A5ILI;A; de segmentos de código o datos: 7apacidad para localizar un programa en di#erentes zonas de memoria )requisito para la multiprogramación0 7uando un programa es ensamblado o compilado no se sabe dónde residirá en memoria Las re#erencias a instrucciones y datos se almacenan como desplazamientos relativos a los contenidos de algunos registros base 7uando los segmentos son cargados en memoria! la dirección de comienzo es puesta en el registro base 4.*.1 - "aracterísticas. Las instrucciones se almacenan y tratan en la computadora como cadenas de unos y ceros! aunque se representen en &e@adecimal o mediante nemot"cnicos Las instrucciones maquinan suelen! en general! cumplir las siguientes propiedades: * 1ealizan una =nica y sencilla #unción: 6u interpretación es sencilla . mplean un n=mero #ijo de operandos! que podrán ser impl$citos o estar representados e@pl$citamente en la instrucción , La codi#icación de las instrucciones es bastante sistemática! para que su codi#icación sea sencilla % Las instrucciones son autocontenidas e independientes: %
Lenguajes y Autómatas II - Unidad IV • •
Autocontenidas- 7ontiene toda la in#ormación necesaria para ejecutarse Independientes- Ko requieren in#ormación de otras instrucciones 6u interpretación es independiente de la posición que ocupan en el programa o en la memoria
4.*. - #odos de %ireccionamiento. Las instrucciones de maquina nos permiten identi#icar los tipos de instrucciones de máquina! repertorio o conjunto de instrucciones y los modos de direccionamiento permiten llevar a cabo la #unción del lenguaje maquina La denominación de modos de direccionamiento proviene que normalmente se especi#ica la dirección donde se encuentra el dato o la instrucción 9or lo tanto! los modos de direccionamiento son las diversas #ormas de determinar el valor de un operando o la posición de un operando o una instrucción
OBJETO
Instrucción, operando o resultado que se desea direccionar.
La propia instrucción Puede residir en Un registro En la memoria principal 7uando se utiliza una posición de memoria! la dirección real de memoria especi#icada por el modo de direccionamiento se denomina DIRECCI! E"EC#I$A )A! ##ective Addres0 l modo de direccionamiento esta codi#icado en alg=nEalgunos campos de la instrucción 4.*.* - ,ipos de %ireccionamiento. Dodo modo de direccionamiento cuenta con el direccionamiento impl$cito! direccionamiento inmediato! direccionamiento directo! direccionamiento indirecto y el direccionamiento relativo donde cada uno tiene una #unción a registros o pilas l propio código de operación indica la dirección del operando
Direccionamiento Implícito Direccionamiento Inmediato registro !Direccionamiento "egistro# Direccionamiento Directo memoria !Direccionamiento Directo o $soluto tra%&s de registro Direccionamiento Indirecto tra%&s memoria
Direccionamiento "elati%o Inde(ado "especto a Base l contador del Programa Pila
+
Lenguajes y Autómatas II - Unidad IV
4.4 - Administración de memoria. La correspondencia entre los nombres del programa #uente con direcciones de objetos de datos en la memoria durante la ejecución la realiza la etapa inicial en cooperación con el generador de código Las entradas en la tabla de s$mbolos se van creando con#orme se e@amina las declaraciones de un procedimiento l tipo de una declaración determina la cantidad de memoria necesaria para el nombre declarado 6eg=n la in#ormación de la tabla de s$mbolos se pueden determinar una dirección relativa para el nombre de un área de datos para el procedimiento La administración de memoria consiste en determinar la posición de memoria en la que los di#erentes s$mbolos del programa almacenan la in#ormación ;epende de la estrategia utilizada para la gestión de memoria! el mecanismo puede variar La administración de memoria se re#iere a los distintos m"todos y operaciones que se encargan de obtener la má@ima utilidad de la memoria! organizando los procesos y programas que se ejecutan de manera tal que se aprovec&e de la mejor manera posible el espacio disponible 9ara poder lograrlo! la operación principal que realiza es la de trasladar la in#ormación que deberá ser ejecutada por el procesador! a la memoria principal Actualmente esta administración se conoce como Cemoria Virtual ya que no es la memoria #$sica del procesador sino una memoria virtual que la representa ntre algunas ventajas! esta memoria permite que el sistema cuente con una memoria más e@tensa teniendo la misma memoria real! con lo que esta se puede utilizar de manera más e#iciente por supuesto! que los programas que son utilizados no ocupen lugar innecesario Las t"cnicas que e@isten para la carga de programas en la memoria son: partición #ija! que es la división de la memoria libre en varias partes )de igual o distinto tama(o0 y la partición dinámica! que son las particiones de la memoria en tama(os que pueden ser variables! seg=n la cantidad de memoria que necesita cada proceso ntre las principales operaciones que desarrolla la administración de memoria se encuentran la reubicación! que consiste en trasladar procesos activos dentro y #uera e la memoria principal para ma@imizar la utilización del procesadorG la protección! mecanismos que protegen los procesos que se ejecutan de inter#erencias de otros procesosG uso compartido de códigos y datos! con lo que el mecanismo de protección permite que ciertos procesos de un mismo programa que comparten una tarea tengan memoria en com=n l administrador de memoria tiene como objetivos: • • •
Ubicar! reemplazar! cargar y descargar procesos en la memoria principal 9roteger la memoria de acceso indeseados )accidentales o intencionados0 9ermitir la compartición de zonas de memoria )indispensable para lograr la cooperación de procesos0
1equisitos del administrador de memoria: * Reu%icación- 9ermitir el recalculo de direcciones de memoria de un proceso reubicado . &rotección- vitar el acceso a posiciones de memoria sin el permiso e@preso )Ko direcciones absolutas0 , Compartición- 9ermitir a procesos di#erentes acceder a la misma porción de memoria % rgani'ación (ógica- 9ermitir que los programas se escriban como módulos compilables y ejecutables por separado + rgani'ación "ísica- 9ermitir el intercambio de datos en la memoria primaria y secundaria n la administración de memoria las t"cnicas usadas son las siguientes: •
&artición fi)a: La memoria principal se divide en un conjunto de particiones de tama(o #ijo durante el inicio del sistema Un proceso se puede cargar completamente en una partición de tama(o menor o igual Ventajas 6encilla de implementar 9oca sobrecarga al 68 Desventajas >ragmentación interna K=mero #ijo de procesos activos
6i un programa no cabe en una partición! el programador debe dise(arlo en módulos cargables l uso de la memoria es muy ine#iciente! no importa el tama(o del proceso! ocupara toda la partición! se genera #ragmentación interna
&artición din*mica: Las particiones se crean dinámicamente por demanda 6on variables en tama(o y n=mero 7ada proceso se carga completamente en una =nica partición del tama(o del proceso Ventajas Ko e@iste #ragmentación interna Desventajas >ragmentación e@terna 6e debe compactar la memoria! el compactado toma tiempo
l uso de la memoria es muy ine#iciente! se generan muc&os &uecos entre las particiones! cada vez más peque(as! se genera la #ragmentación e@terna 7ada cierto tiempo se debe compactar los segmentos libres! para que est"n contiguos
&aginación simple: La memoria principal se divide en un conjunto de marcos de igual tama(o 7ada proceso se divide en una serie de páginas del tama(o de los marcos Un proceso se carga en los marcos que requiera )todas las páginas0! no necesariamente contiguos Ventajas Ko &ay #ragmentación e@terna Desventajas >ragmentación interna peque(a
l 68 mantiene una tabla de páginas para cada proceso! que contiene la lista de marcos para cada página Una dirección de memoria es un n=mero de página )90 y un desplazamiento dentro de la página )M0
Lenguajes y Autómatas II - Unidad IV
+egmentación simple: 7ada proceso y sus datos se dividen en segmentos de longitud variable Un proceso carga sus segmentos en particiones dinámicas no necesariamente contiguas Dodos los segmentos de un proceso se deben de cargar en memoria 6e di#erencia de la partición dinámica en que un proceso puede ocupar más de un segmento Ventajas Ko &ay #ragmentación interna Desventajas >ragmentación e@terna! pero menor )compactación0
l 68 mantiene una tabla de segmentos para cada proceso y la lista de bloques libres Una dirección de memoria es un n=mero de segmento )60 y un desplazamiento dentro de segmento )M0