Professional Documents
Culture Documents
Software de base
Introduccin
Al conjunto de componentes tangibles
como teclado, CPU, impresora,
dispositivos de memoria se les clasifica
como hardware. Un hardware sin
programas que permitan controlarlo no
sirve de mucho, as los componentes
intangibles denominados software son
tan importantes como el hardware en
un sistema de cmputo.
Programa
Un programa es una secuencia lgica
de instrucciones que permiten a travs
del control que una mquina realice una
tarea, aunque en realidad sea el
hardware el que ejecuta las acciones
Sistema de
de
Sistema
Computacin
Computacin
Hardware
Hardware
Software
Software
Sistema
Sistema
operativo
operativo
Programas de
de
Programas
aplicacin
aplicacin
enciende
entradas
S.O.
Compara con
comandos
Inicia
Inicia
Sistema operativo
operativo
Sistema
Realiza acciones
Mensaje de error
Funcin central de un SO
Manejo de informacin
Manejo de Entrada/Salida
Manejo del procesador
Manejo de memoria
Kernel
C aractersticas virtuales
Datos almac enados en bloques lgic os
Presenc ia
slo
de
los
datos
p ertenec ientes a un usuario individual
Capac idad de entender mandatos
en
forma
c ompatible
c on
el
p ensamiento humano
Mismas c arac terstic as internas que
otras mquinas
Caractersticas reales
Datos almac enados en bloques fsic os
Presenc ia de datos que pertenec en a
todos los usuarios
Capac idad
de
entender
slo
lenguaje de mquina
Carac terstic as
internas
signific ativamente diferentes de las de
otras mquinas
Etapas
Inicio
Proceso por lotes
Proceso interactivo
Sistemas de tiempo compartido
Inicio
En los aos 40 y 50 del siglo pasado las
mquinas requeran para ejecutar un
programa de la preparacin del equipo
(montar cintas, colocar tarjetas perforadas,
ajustar interruptores, etc.) y por esta razn se
manejaba como una entidad aislada. La
mquina estaba por completo bajo el dominio
de un solo programador en un momento
dado.
Proceso interactivo
El concepto de proceso interactivo est
ntimamente relacionado con el de
proceso en tiempo real, que se refiere
al requisito de que el software coordine
sus actividades con las del entorno.
Ejemplos: vuelo de un avin,
predicciones, etc.
Sistemas de tiempo
compartido
El tiempo compartido se refiere a la tcnica
de alternar la atencin de una CPU entre
varios procesos de modo que parezca como
si se ejecutaran al mismo tiempo. Se suele
utilizar el trmino tiempo compartido cuando
los procesos que comparten el tiempo
pertenecen a distintos usuarios. El trmino
multitarea se usa normalmente para
referirse a tcnicas similares aplicadas a
procesos que pertenecen a un solo usuario.
Manejo de informacin
Manejo de Entrada/Salida
Abismo
Abismo entre
entre
capacidades
capacidades de
de
comunicacin
comunicacin
entre
entre la
la
mquina
mquina yy el
el ser
ser
humano
humano
Llamadas
al sistema
Kernel
Software
Software de
de base
base
Programa objeto
(esttico)
Proceso en
ejecucin
(dinmico)
Arranque de una
computadora
Memorias:
voltiles,
tiles retienen la informacin
almacenada despus de la prdida de
energa
no voltiles,
tiles ni la computadora puede
alterar su contenido, se conocen como
memoria de slo lectura (ROM: read-only
memory)
ROM
SO + autoarranque (bootstrap)
Este programa que no es el SO, realiza la
siguiente secuencia de instrucciones:
1. Lee un rea previamente determinada del
almacenamiento masivo (normalmente en
disco, que contiene el principio del SO) y
coloca su contenido en un rea de la
memoria voltil
2. Ejecuta un salto a la primera celda de esa
rea de memoria
4.2.1 Evolucin
Antes de que una computadora pueda
ejecutar una tarea, debe programrsele
para que lo haga colocando en la
memoria principal un algoritmo
apropiado, expresado en lenguaje de
mquina.
Lenguaje de mquina
Originalmente se utiliz el lenguaje de
mquina, pero pueden existir muchos
errores:
1er. paso: asignar nombres mnemnicos a
los diversos cdigos de operacin
2do. paso: asignar nombres a las direcciones
de las celdas de memoria en una instruccin,
con lo que se logra una mayor
comprensibilidad
Ejemplo
156C
166D
5056
306E
C000
Lenguaje
Ensamblador
Traduccin
Lenguaje de
mquina
Programa
Ensamblador
Modos de direccionamiento
Directo
OP <direccin>
DIV <direccin> Divide lo que contenga el
acumulador entre el contenido de la celda de
memoria descrita por la direccin
Inmediato
OP <dato>
DIV i <dato> Divide lo que contenga el
acumulador entre el nmero que viene a
continuacin
Nueva mquina
Contiene un acumulador donde se
realizan las operaciones solicitadas y se
deja el resultado nuevamente en el
acumulador
Maneja 2 modos de direccionamiento
Las instrucciones son de longitud
variable
Memoria de 0000-FFFF
Inmediato:
CARGA i 18
SUMA i 200
GUARDA 30
Suma 18 con 200 y
deja el resultado en la
celda 30. Las
instrucciones estn
comprometidas
Nuevo cdigo
Nombre de la instruccin Cdigo interno
ALTO
70
CARGA
20
CARGA i
21
DIV
38
DIV i
39
GUARDA
02
MULT
36
MULT I
37
RESTA
33
RESTA I
34
SUMA
30
SUMA I
31
Longitud de la instruccin
1
2
2
2
2
2
2
2
2
2
2
2
Entrada y Salida
IN Toma el valor individual que est en
el puerto de entrada y lo deposita en el
acumulador
OUT Toma el valor del acumulador y lo
deja (una copia en realidad) en el
puerto de salida
Comparaciones
bandera,
bandera para indicar el resultado de la
ltima comparacin entre dos valores
IGUAL
DIFERENTE
MAYOR QUE
MENOR QUE
MAYOR O IGUAL QUE
MENOR O IGUAL QUE
Saltar
Salto condicional
Salto incondicional
BR <direccin>
Ejemplo
Supongamos que la secuencia A
abarca de las celdas 25 a 30 y que la
secuencia B va de la 31 a la 40. La
decisin de si se ejecuta una u otra
depender de una comparacin
anterior, por lo que en la celda 23 habr
que colocar una de las instrucciones de
bifurcacin (o salto) condicional
Instruccin
CARGA 650
COMP i 10
BR= 31
1ra. instruc c in de la sec uenc ia A
...
ltima instruc c in de la sec uenc ia A
1ra. instruc c in de la sec uenc ia B
....
ltima instruc c in de la sec uenc ia B
4.
5.
6.
Direccin
00
01
02
03
04
05
07
08
10
11
13
Instruccin
Espac io para los 4 datos
IN
GUARDA 00
IN
GUARDA 01
IN
GUARDA 02
CARGA 00
15
17
19
21
23
25
27
29
31
33
34
GUARDA 03
COMP 01
BR > 25
CARGA 01
GUARDA 03
COMP 02
BR > 33
CARGA 02
GUARDA 03
0UT
ALTO
Ms sobre modos de
direccionamiento
Programa objeto: programa escrito en
lenguaje de mquina est escrito con ceros y
unos, hace referencia a celdas absolutas de
memoria y es inflexible, en el sentido de que
no admite cambios para adaptarlo a nuevos
requerimientos.
Inmediato
Directo
Indirecto
Inmediato
Donde la operacin se aplica al dato
numrico escrito inmediatamente a la
derecha de una instruccin.
Directo
Se escribe la direccin del valor al que
se aplica la operacin
OP direccin (valor)
Indirecto
Interpreta el valor como direccin de
una celda a la que habr de ir para
extraer de all otra direccin que lleve al
valor deseado
Ejemplo
23
11
21
...
1001
1001
1002
1003
.....
2998
Programa fuente
con mnemnicos
Traductor
ENSAMBLADOR
Programa objeto en
lenguaje de mquina
Ejercicio
Traducir el siguiente programa fuente:
CARGA 20
SUMA 21
GUARDA 22
ALTO
A cdigo objeto:
20 20 30 21 02 22 70
si por error el tercer rengln estuviera como GOARDA
22 el traductor se quejara ya que no es traducible.
CARGA alfa
SUMA beta
GUARDA alfa
ALTO
Ejemplo
c a + b y luego d e c
CARGA a
SUMA b
GUARDA c
CARGA e
RESTA c
GUARDA d
Ejercicio
CARGA a
SUMA b
GUARDA c
CARGA e
RESTA c
GUARDA d
Variable
a
b
c
d
e
Direccin
Asignada
70
71
72
73
74
La traduccin sera:
Programa fuente
Programa objeto
obtenido
Programa fuente
1
3
5
7
9
11
13
CARGA a
SUMA b
GUARDA c
CARGA e
RESTA c
GUARDA d
ALTO
Programa objeto
obtenido
20 70
30 71
02 72
20 73
33 72
02 74
70
Observaciones
Como c aparece dos veces, su
direccin absoluta (72) tambin aparece
dos veces
Las apariciones de 70 son diferentes, la
1ra. es la direccin de memoria de la
a y la segunda la codificacin de la
instruccin ALTO
Pseudoinstruccin
una instruccin que el programador
escribe para el traductor, no para la
mquina
Las pseudoinstrucciones PROGRAMA
y FIN,
FIN indican dnde comienzan y
terminan las verdaderas instrucciones
DATO
ORIGEN
Programa fuente
1
3
5
7
9
11
13
CARGA a
SUMA b
GUARDA c
CARGA e
RESTA c
GUARDA d
ALTO
Programa objeto
obtenido
20 70
30 71
02 72
20 73
33 72
02 74
70
ORIGEN 70
a: DATO 1
b: DATO 1
c : DATO 1
d: DATO 1
e: DATO 1
PROGRAMA
CARGA a
SUMA b
GUARDA c
CARGA e
RESTA c
GUARDA d
ALTO
FIN
Programa objeto
obtenido
20 70
30 71
02 72
20 73
33 72
02 74
70
Etiquetas
Referencias simblicas a direcciones
del programa, empleadas para dirigir
los altos condicionales y modificar el
flujo de ejecucin. Antes esto se haca
de forma absoluta, si se quiere realizar
de forma simblica, entonces esas
direcciones se especifican utilizando
etiquetas que referencian a direcciones
fsicas
Auxiliares en la virtualizacin
de programas fuente
Pseudoinstrucciones para definir c ondic iones inic iales en el proc eso de
traduc c in
Mnemnicos
en lugar de c digos de instruc c iones
Variables
en lugar de c eldas por nmero
Etiquetas
en lugar de direc c iones numric as c omo destino para los
saltos
Traductor de
2 pasos o
lecturas
PASOS:
1ro. para guardar las
definiciones de todas las
etiquetas en la tabla de
smbolos y
2do. para reemplazar las
referencias a ellas por las
direcciones donde se
encontraron, y generar el
cdigo objeto
Nuevo acercamiento
! Programa T, 2da. versin
! Primer paso
Para cada rengln del programa fuente ejecutar lo siguiente:
Si existe una pseudoinstruccin ORIGEN y un nmero
considerarlo como la direccin actual e iniciar
Si existe una definicin de etiqueta, buscarla en la tabla de
smbolos
Si existe marcar error de etiqueta repetida
en otro caso darla de alta en la tabla de smbolos
Si la etiqueta acompaaba a una pseudoinstruccin DATO
seguida de un nmero asignar la direccin actual a esa variable
en la tabla de smbolos y sumar el nmero a la direccin actual
Si luego de la etiqueta aparece un mnemnico, aadir su
longitud a la direccin actual
Si existe la pseudoinstruccin FIN, termina el primer paso
! Segundo paso
Regresar al primer rengln despus de la pseudoinstruccin
PROGRAMA
Para cada rengln del programa fuente ejecutar lo siguiente:
Ignorar la posible definicin de etiqueta
Buscar el mnemnico en el diccionario de equivalencias
Si est, escribir su cdigo en el programa objeto
en otro caso, marcar error: mnemnico desconocido
Si a continuacin aparece una variable simblica, buscar su
direccin en la tabla de smbolos
Si est, escribir esa direccin en el programa objeto
en otro caso, marcar error: variable o etiqueta desconocida
si la pseudoinstruccin es FIN, terminar el proceso
Fin del programa T
Ensamblador
Traductor que asigna direcciones
absolutas a las variables simblicas del
programador.
Regresando
al
programa
para
determinar el mayor de 3 enteros. En la
primera pasada se formar la siguiente
tabla:
Nombre simblico
alfa
beta
gama
max
etiq1
etiq2
Direccin
3000
3001
3002
3003
3025
3033
etiq1:
etiq2:
ORIGEN 3000
alfa: DATO 1
beta: DATO 1
gama: DATO 1
max: DATO 1
PROGRAMA
IN
GUARDA alfa
IN
GUARDA beta
IN
GUARDA gama
CARGA alfa
GUARDA max
COMP beta
BR> etiq1
CARGA beta
GUARDA max
COMP gama
BR> etiq2
CARGA gama
GUARDA max
OUT
ALTO
FIN
3004
3005
3007
3008
3010
3011
3013
3015
3017
3019
3021
3023
3025
3027
3029
3031
3033
3034
Ejercicio
Producir
manualmente el
cdigo objeto
generado por el
programa para
determinar el mayor
de 3 enteros.
VALOR:
VALOR separa una celda de memoria y le
asigna un valor; valores iniciales
alfa: VALOR 30
Ejemplo
inic io
lmite:
alfa:
beta:
....
EQU
EQU
ORIGEN
dato
VALOR
700
8
8
1
lmite+ 2
Nombre simblico
inic io
lmite
alfa
beta
Direccin
----7000
7001
Valor
700
8
--10
Otra pseudoinstruccin
LISTA:
LISTA asigna a la etiqueta el conjunto
de valores especificados a
continuacin:
Nombre
fac tor
nmeros
fac tor:
nmeros:
zeta:
alfa:
EQU
ORIGEN
LISTA
DATO
VALOR
8
1000
7, 21, 14, 6, 99
3
fac tor * 5
zeta
alfa
Direccin
--1000
1001
1002
1003
1004
1005
1006
1007
1008
Ejemplos:
COMP nmeros+2 se traduce a 40 1002
GUARDA zeta+1 se traduce a 02 1006
Valor
8
7
21
14
6
99
---40
Almacenamiento de conjuntos
de nmeros
Estructura de datos, llamada vector o
arreglo tiene la capacidad de referirse a
un conjunto de valores con un solo
nombre y diferenciar sus elementos
mediante sus posiciones relativas al
inicio
Ejemplo
Arreglo de cinco celdas:
long:
arr1:
EQU
ORIGEN
DATO
5
1000
long
LISTA
710
1001
720
1002
730
1003
740
1004
Ejercicio
5
1000
inic io
700, 710, 720, 730, 740
1
1
inic io
base
Nombre
c eldas
inic io
arr2
base:
c uenta
c ic lo
base
base
base
c uenta
c uenta
c eldas
c ic lo
Cdigo objeto
Tabla de smbolos
Direccin
----1000
1001
1002
1003
1004
1005
1006
1011
1000
1001
1002
1003
1004
1005
1006
1007
1009
1011
1013
1014
1016
1017
1019
1021
1022
1024
1026
1028
Valor
5
1000
700
710
720
730
740
-1
-700
710
720
730
740
00
01
21 1000
02 1005
22 1005
11
20 1005
32
01 1005
20 1006
31
02 1006
41 05
48 1011
70
! Segundo paso
Regresar al primer rengln despus de la pseudoinstruccin
PROGRAMA
Para cada rengln del programa fuente ejecutar lo siguiente:
Ignorar la posible etiqueta
Buscar el mnemnico en el diccionario de equivalencias
Si est, escribir su cdigo en el programa objeto
en otro caso, marcar error: mnemnico desconocido
Si a continuacin aparece una variable simblica, buscar su
direccin en la tabla de smbolos
Si est, escribir esa direccin en el programa objeto
en otro caso, marcar error: variable o etiqueta desconocida
si la pseudoinstruccin es FIN, terminar el proceso
Fin del programa T
Macroprocesadores
Objetivo
Dar al ensamblador la capacidad de repetir
grupos de instrucciones. Esto es, compactar
renglones repetitivos a travs de una
abreviatura y pedir al traductor que lo
expanda durante la traduccin.
Ejemplo
ADICIN: MACRO
CARGA a
SUMA b
GUARDA c
FIN_MACRO
Donde se requiera llamarla slo se pone su nombre precedido
de %
Ejemplo: %ADICIN
Programa
Intermedio
Ejercicio
1
2
3
4
-------------------------------------
--- 1
--- 2
--- 3
--- 4
-------------------------------------
1
2
3
4
5
6
7
B1
B2
B3
8
9
B1
B2
B3
A1
A2
A3
A4
10
11
12
As,
ADICIN: MACRO (3)
CARGA ?1
SUMA ?2
GUARDA ?3
FIN_MACRO
Otro ejemplo
!Macro para obtener el
promedio de tres
valores
ADICIN: MACRO (4)
CARGA ?1
SUMA ?2
SUMA ?3
DIV i 3
GUARDA ?4
FIN_MACRO
y en el segundo cmo?:
CARGA alfa
SUMA beta
SUMA gama
DIV i 3
GUARDA sigma
Lenguaje ensamblador
Macros
Macroensamblador
Macroensamblador
Programa
Fuente
Macroprocesador
CPU
Ensamblador
Memoria
PROGRAMA
%LEER (alfa)
!Lee y almacena el 1er nmero
%LEER (beta) !Lee y almacena el 2do nmero
%LEER (gama) !Lee y almacena el 3er nmero
Cul es la tabla de
%ASIGNA (alfa, max) !Supone 1ro como mximo
smbolos y el cdigo objeto
COMP beta
! compara el mximo con el 2do.
producidos por esta nueva
BR> etiq1
versin?
%ASIGNA (beta, max) !reemplaza 2do com mayor
etiq1: COMP gama ! compara mayor con el 3ro.
!Bsqueda del mximo
ORIGEN 3000
BR> etiq2
alfa: DATO 1
%ASIGNA (gama, max)
! reemplaza 3ro mayor
beta: DATO 1
etiq2: OUT
! muestra el mximo
gama: DATO 1
ALTO
max: DATO 1
FIN
Ejercicio
4.2.2 Compiladores e
intrpretes
Lenguaje de
alto nivel
Compilador
Ensamblador
Lenguaje
objeto
la casa azul
Ejemplos
Sufragio efectivo, no reeleccin
vs.
Sufragio efectivo no, reeleccin
rboles gramticales
Anlisis lexicogrfico
Anlisis sintctico
Anlisis semntico
Generacin y optimizacin de cdigo
Anlisis lexicogrfico
El paso inicial consiste en reconocer los
smbolos, lo cual implica reconocer letras y
palabras. Reconocer significa: buscarlo y
encontrarlo en un diccionario.
Su tarea central consiste en separar los
componentes lxicos (tokens) del conjunto
de smbolos fuente. Un autmata es una
funcin matemtica con capacidad de
reconocer grupos de caracteres que
constituyen un token, o bien marcar un error
si no estn bien construidos.
Anlisis sintctico
Su finalidad es encontrar la estructura
gramatical de la frase formada por los
elementos aislados ya reconocidos. Para lo
cual se crea un programa que trata de
acomodar
estructuras
gramaticales
predefinidas para las frases, guindose de
las palabras que lo componen. Tambin se
les conoce como parsers, y funcionan en
forma ascendente o descendente.
Una frase est compuesta de palabras, que a
su vez estn compuestas de letras. Sin
embargo, las palabras se clasifican en ciertos
tipos gramaticales.
Ejemplo
la casa es azul
la = artculo
casa = sustantivo
es = verbo
azul = adjetivo
rbol sintctico
Anlisis semntico
Objetivo: entender el significado de la frase.
Generacin y optimizacin de
cdigo
Se divide en dos:
Ejemplo: c a + b
+ (x1, a, b)
(c, x1, -)
que indica que operacin se aplica a la
tripleta de elementos que aparecen.
Ejemplo
ca+b
...
c0
d e (a +b)
1. +(x1, a, b)
2. (c, x1, -)
3. (c, 0, -)
4. (x2, e, x1)
5. (d, x2, -)
Ejemplo
Programa fuente
Cdigo intermedio
Cdigo objeto
ca+b
+(x1, a, b)
(c, x1, -)
CARGA a
SUMA b
GUARDA x1
CARGA x1
GUARDA c
...
...
...
c0
(c, 0, -)
CARGA i 0
GUARDA c
d e (a +b)
(x2, e, x1)
CARGA e
RESTA x1
GUARDA x2
CARGA X2
GUARDA d
(d, x2, -)
Tarea
1.
2.
a.
b.
c.
3.
C/C++
FORTRAN
JAVA
4.
a.
b.
c.
Programacin procedural
Programacin orientada a objetos
Programacin declarativa