Está en la página 1de 22

Unidad 2 – Clase 2: 

Sistemas Operativos

1
Lenguajes de programación

● Los lenguajes de programación especifican reglas (como la 
sintaxis y semántica) para escribir programas.

● Hay principalmente dos tipos de lenguajes de programación:

Lenguajes de Programación

Lenguajes de alto nivel Lenguajes de bajo nivel

2
Lenguajes de bajo nivel
● Son aquellos lenguajes cuyas instrucciones ejercen un 
control directo sobre el hardware, estando condicionados 
por la estructura física de las computadoras que lo soportan.

● Se denominan de “bajo nivel” por la reducida abstracción 
existente entre el lenguaje y el hardware.

● Clasificación:

Lenguajes de bajo nivel

Lenguaje de máquina Lenguaje ensamblador

3
Lenguaje de Máquina
● Datos e instrucciones se expresan en binario.

● Comprende instrucciones directamente ejecutables por la 
CPU. Es decir, el ISA.

● Las instrucciones de un programa se ejecutan en 
secuencia, con eventuales cambios de flujo causados por el 
propio programa o eventos externos.

● Escribir un programa en este lenguaje y depurarlo, son 
tareas muy difíciles: los códigos de operación, las 
direcciones y los datos, fácilmente terminan 
confundiéndonos.
4
Lenguaje Ensamblador
● Es una representación simbólica del lenguaje de máquina.

● Normalmente, una instrucción de lenguaje ensamblador es 
implementada por una única instrucción en lenguaje de 
máquina.

● El lenguaje ensamblador utiliza:
 Se utilizan mnemónicos en lugar de códigos binarios. 

Ejemplo: ADD R1, R2, R3
 Rótulos o etiquetas como referencia de las direcciones.

Ejemplo: SUB R1, R2, resultado
 Los datos numéricos se pueden escribir en decimal u 

otras bases. El texto se puede escribir utilizando 
caracteres. 5
Lenguaje Ensamblador

Lenguaje de máquina Lenguaje ensamblador
Rótulo Mnemónico Argumento

01000111 LD CANT
11100100 SIGUE: JZ FIN
01111111 ST OUT
10100110 SUB UNO
11011101 JMP SIGUE
00100000 FIN: HLT
00000001 UNO: 1
00000011 CANT: 3

6
Traductores
● Un programa:
– Recibe datos de entrada, opera con ellos y 
genera un resultado o salida.
● Un programa traductor:
– El dato de entrada es un programa, escrito en 
algún lenguaje de programación.
– Su resultado o salida es un programa escrito en 
otro lenguaje de programación.

7
Ensamblador
● El ensamblador es un traductor que convierte 
un programa escrito en lenguaje ensamblador a 
un programa escrito en lenguaje de máquina.

Programa  Ensamblador Programa 


escrito en  escrito en 
lenguaje  lenguaje de 
ensamblador máquina

8
Lenguaje Ensamblador
Ensamblador x86

.globl  _start
.text # seccion de codigo
_start:
        movl    $len, %edx # carga parametros longitud
        movl    $msg, %ecx # y direccion del mensaje
        movl    $1, %ebx # parametro 1: stdout
        movl    $4, %eax # servicio 4: write
        int     $0x80 # syscall

        movl    $0, %ebx # retorna 0
        movl    $1, %eax # servicio 1: retorno de llamada
        int     $0x80 # syscall
.data # seccion de datos
msg:
        .ascii  "Hola, mundo!\n"
        len =   . ­ msg # longitud del mensaje
9
Lenguaje Ensamblador

Ensamblador ARM

.global main  
main:  
    @ Guarda la direccion de retorno lr 
    @ mas 8 bytes para alineacion
    push    {ip, lr}  
    @ Carga la direccion de la cadena y llama syscall
    ldr     r0, =hola
    bl      printf  
    @ Retorna 0
    mov     r0, #0 
    @ Desapila el registro ip y guarda
    @ el siguiente valor desapilado en el pc 
    pop     {ip, pc}  
hola:  
    .asciz "Hola, mundo!\n" 
10
Lenguaje Ensamblador
Ensamblador PowerPC

.data   # seccion de variables
msg:
.string "Hola, mundo!\n"
len = . ­ msg  # longitud de cadena
.text   # seccion de codigo
.global _start
_start:
li  0,4  # syscall sys_write
li  3,1    # 1er arg: desc archivo (stdout)
   # 2do arg: puntero a mensaje
lis  4,msg@ha   # carga 16b mas altos de &msg
addi  4,4, msg@l # carga 16b mas bajos de &msg
li  5,len    # 3er arg: longitud de mensaje
sc    # llamada al kernel

li  0,1    # syscall sys_exit
li  3,1    # 1er arg: exit code
sc    # llamada al kernel 11
Uso de lenguajes de bajo nivel
● Como vemos, tanto el lenguaje de máquina como el ensamblador o 
Assembler son lenguajes orientados a la máquina. Ofrecen control 
total sobre lo que puede hacerse con un procesador o con el sistema 
construido alrededor de ese procesador. Por este motivo son 
elegidos para el desarrollo de software que necesita dialogar 
estrechamente con el hardware, como ocurre por ejemplo con los 
sistemas operativos, algunas aplicaciones en sistemas embebidos, o 
de computación de alto rendimiento.

● Sin embargo, como están ligados a un procesador determinado, 
requieren conocimiento profundo de dicho procesador y resultan 
poco portables. Escribir un programa para resolver un problema 
complejo en un lenguaje de bajo nivel suele ser muy costoso en 
tiempo y esfuerzo.
12
Lenguajes de alto nivel
● Ocultan al usuario los detalles de la arquitectura de 
las computadoras y facilitan la programación de 
problemas de software complejos. Están orientados 
al problema, aislando al programador de cómo 
funcionan los procesadores o de cómo se escriben las 
instrucciones de máquina, y permitiendo especificar 
operaciones para resolver problemas en forma más 
parecida al lenguaje natural, matemático, o humano.
● Son más portables, y su depuración (el proceso de 
corregir errores de programación) es normalmente 
más fácil.
13
Lenguajes de alto nivel
● Código de alto nivel
DEUDA = DEUDA ­ PAGO
● Código ensamblador
LD DEUDA
SUB PAGO
ST DEUDA
● Código de máquina
01001010
01101011
14
10101010
Lenguajes de alto nivel

Alto Nivel
De más bajo nivel
dentro de los de
alto nivel

Bajo nivel

15
Traductores de lenguajes de alto nivel
Traductores de lenguajes
de alto nivel

Compiladores Intérpretes

● Los compiladores e Intérpretes convierten 
código escrito en lenguaje de alto nivel a 
lenguaje de máquina.
● Posiblemente, un compilador/intérprete utilice 
un ensamblador para hacer parte de su trabajo.

16
Traductores de lenguajes de alto nivel
● Compilador:
– Traduce un programa fuente en un archivo 
ejecutable que contiene el código de máquina.
– La ejecución queda diferida para un momento 
posterior.
● Intérprete:
– La traducción se produce cada vez que el usuario 
envía a ejecutar la aplicación. Es decir, la 
traducción y ejecución ocurren de forma 
concurrente.
– La traducción es normalmente progresiva de 
acuerdo a la parte del programa que se va  17
ejecutando.
Traductores de lenguajes de alto nivel
● Intérprete:
– Es portable: el programa puede ser ejecutado 
directamente en cualquier computadora que tenga el 
intérprete correspondiente (posiblemente con diferente 
hardware y sistema operativo).
– Bajo rendimiento: La ejecución del programa comparte 
la CPU con la traducción del fuente.
● Compilador:
– No es portable: el programa solo puede ser ejecutado en 
computadoras con el mismo ISA y Sistema Operativo.
– Alto rendimiento: La ejecución del programa es rápida 
porque la traducción ya estaba hecha antes de 
ejecutarse el programa. 18
19
Proceso de Compilación

20
Terminología del proceso de Compilación
● Cuando utilizamos un compilador para obtener un programa ejecutable, el 
programa que nosotros escribimos, en algún lenguaje, se llama programa 
fuente, y estará generalmente contenido en algún archivo fuente.
● El resultado de la traducción será un archivo objeto conteniendo las 
instrucciones de código máquina equivalentes.
● Este archivo objeto puede no estar completo, ya que el programador puede 
hacer uso de rutinas o funciones que vienen provistas con el sistema, y no 
necesita especificar cómo se realizan esas funciones. Al no aparecer en el 
programa fuente, esas funciones no aparecerán en el archivo objeto. Ese 
otro lugar donde están definidas funciones disponibles para el programador 
son las bibliotecas. Las bibliotecas son archivos conteniendo grupos o 
familias de funciones.
● El proceso de vinculación, que es posterior a la traducción, debe buscar en 
esas bibliotecas la definición de las funciones faltantes en el archivo objeto. 
Si la vinculación resulta exitosa, el resultado final es un programa 
ejecutable.
21
¿Preguntas? 

22

También podría gustarte