Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un...

27
Un ejemplo Un ejemplo (totalmente inventado) (totalmente inventado)

Transcript of Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un...

Page 1: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Un ejemploUn ejemplo

(totalmente inventado)(totalmente inventado)

Page 2: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Nuestra máquinaNuestra máquina

Hemos fabricado una máquina que Hemos fabricado una máquina que dibuja sobre un papel cuadriculado.dibuja sobre un papel cuadriculado.

Dispone de un ploter que podemos Dispone de un ploter que podemos programar.programar.

La máquina está diseñada para La máquina está diseñada para realizar tres tareas: mover el ploter, realizar tres tareas: mover el ploter, dibujar y girar el ploter.dibujar y girar el ploter.

Page 3: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje máquinaLenguaje máquina

Para comunicarnos con la máquina, Para comunicarnos con la máquina, diseñamos un lenguaje para indicarle diseñamos un lenguaje para indicarle cuál de entre las tareas que puede cuál de entre las tareas que puede hacer, queremos que haga en cada hacer, queremos que haga en cada momento.momento.

Decidimos que cada orden estará Decidimos que cada orden estará escrita con 6 bitsescrita con 6 bits

Page 4: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje máquinaLenguaje máquina

Los dos primeros bits, indicarán a la Los dos primeros bits, indicarán a la máquina, cual de las tareas tiene que máquina, cual de las tareas tiene que realizar:realizar: 00 -> 00 -> Gira un octavo de vuelta en sentido Gira un octavo de vuelta en sentido

antihorarioantihorario 01 -> 01 -> Gira un octavo de vuelta en sentido Gira un octavo de vuelta en sentido

horariohorario 10 -> 10 -> PintaPinta 11 -> 11 -> Mueve sin pintarMueve sin pintar

Page 5: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje máquinaLenguaje máquina

Los siguientes 4 bits indicarán Los siguientes 4 bits indicarán cuántas veces se realiza la tarea en cuántas veces se realiza la tarea en cuestión (cuántos cuadros se avanza cuestión (cuántos cuadros se avanza o cuántas octavos de vuelta hay que o cuántas octavos de vuelta hay que girar).girar).

Page 6: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Un programaUn programa

010001100010010010100010000001100010010011010001100010010010100010000001100010010011100010010001100101010001100010010011100011100010010001100101010001100010010011100011

Como la longitud de cada instrucción es fija, la máquina no tiene ninguna dificultad en separar el código en instrucciones: es una tarea totalmente mecánica y no requiere ningún tipo de razonamiento.

Page 7: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Un programaUn programa

010001 100010010010100010000001100010 010011010001 100010010010100010000001100010 010011100010 010001100101010001100010010011 100011100010 010001100101010001100010010011 100011

Como la longitud de cada instrucción es fija, la máquina no tiene ninguna dificultad en separar el código en instrucciones: es una tarea totalmente mecánica y no requiere ningún tipo de razonamiento.

Page 8: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Un programaUn programa

010001 100010 010010100010000001 100010 010011010001 100010 010010100010000001 100010 010011100010 010001 100101010001100010 010011 100011100010 010001 100101010001100010 010011 100011

Como la longitud de cada instrucción es fija, la máquina no tiene ninguna dificultad en separar el código en instrucciones: es una tarea totalmente mecánica y no requiere ningún tipo de razonamiento.

Page 9: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Un programaUn programa

010001 100010 010010 100010 000001 100010 010011010001 100010 010010 100010 000001 100010 010011100010 010001 100101 010001 100010 010011 100011100010 010001 100101 010001 100010 010011 100011

Como la longitud de cada instrucción es fija, la máquina no tiene ninguna dificultad en separar el código en instrucciones: es una tarea totalmente mecánica y no requiere ningún tipo de razonamiento.

Page 10: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Un programaUn programa

010001 100010 010010 100010 000001 100010 010011010001 100010 010010 100010 000001 100010 010011100010 010001 100101 010001 100010 010011 100011100010 010001 100101 010001 100010 010011 100011

También es mecánico interpretar cada instrucción, puesto que siempre, los dos primeros bits son el comando y los otros cuatro el parámetro.

Page 11: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Un programaUn programa

100010 010010 100010 000001 100010 010011100010 010010 100010 000001 100010 010011100010 010001 100101 010001 100010 010011 100011100010 010001 100101 010001 100010 010011 100011

010000100011

Ejecuta la orden 01(gira a la derecha)0001 veces (es decir, 1 vez)

Page 12: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Un programaUn programa

010001 010010 100010 000001 100010 010011010001 010010 100010 000001 100010 010011100010 010001 100101 010001 100010 010011 100011100010 010001 100101 010001 100010 010011 100011

100010100010

Ejecuta la orden 10(dibuja) 0010 cuadros(es decir, 2 cuadros)

Page 13: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Un programaUn programaEscribe un programa que dibuje un cuadrado de 5 cuadraditos de lado. Recuerda:

00 -> Gira un octavo de vuelta en sentido antihorario00 -> Gira un octavo de vuelta en sentido antihorario 01 -> Gira un octavo de vuelta en sentido horario01 -> Gira un octavo de vuelta en sentido horario 10 -> Pinta10 -> Pinta 11 -> Mueve sin pintar11 -> Mueve sin pintar

Page 14: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje ensambladorLenguaje ensamblador La máquina sólo entenderá lo que se le La máquina sólo entenderá lo que se le

diga con ceros y unos pero para el diga con ceros y unos pero para el programador resulta muy incómodo.programador resulta muy incómodo.

El problema es fácil de resolver. Basta con El problema es fácil de resolver. Basta con asignar a cada orden un conjunto de asignar a cada orden un conjunto de caracteres fáciles de recordar:caracteres fáciles de recordar: 00 -> GiraI00 -> GiraI 01 -> GiraD01 -> GiraD 10 -> Pinta10 -> Pinta 11 -> Mueve11 -> Mueve

Page 15: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje ensambladorLenguaje ensamblador También nos resultaría más cómodo También nos resultaría más cómodo

permitirnos escribir los parámetros en la permitirnos escribir los parámetros en la base decimal en lugar de la binaria.base decimal en lugar de la binaria.

Ya hemos diseñado un lenguaje Ya hemos diseñado un lenguaje ensamblador. Ahora, naturalmente, hay ensamblador. Ahora, naturalmente, hay que escribir un programa que traduzca que escribir un programa que traduzca estas instrucciones en ensamblador a las estas instrucciones en ensamblador a las instrucciones en lenguaje máquina que instrucciones en lenguaje máquina que son las únicas que comprenderá nuestro son las únicas que comprenderá nuestro aparato.aparato.

Page 16: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje ensambladorLenguaje ensamblador Pero este traductor es fácil de diseñar porque Pero este traductor es fácil de diseñar porque

hace una tarea totalmente mecánica:hace una tarea totalmente mecánica:

Pinta6Pinta6

10

0110

10

0110

Page 17: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje ensambladorLenguaje ensamblador

En este lenguaje ensamblador, el En este lenguaje ensamblador, el programa anterior nos resulta mucho programa anterior nos resulta mucho más inteligible:más inteligible:

GiraD 1GiraD 1 Pinta 2Pinta 2 GiraD 2GiraD 2 Pinta 2Pinta 2 GiraI 1GiraI 1

Pinta 2Pinta 2 GiraD 3GiraD 3 Pinta 2Pinta 2 GiraD 1GiraD 1 Pinta 5Pinta 5

GiraD 1GiraD 1 Pinta 2Pinta 2 GiraD 3GiraD 3 Pinta 3Pinta 3

Page 18: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje de alto nivelLenguaje de alto nivel Nuestra máquina sólo sabe hacer Nuestra máquina sólo sabe hacer

cuatro tareas y aun así, darle cuatro tareas y aun así, darle órdenes en su lenguaje, sin usar un órdenes en su lenguaje, sin usar un lenguaje ensamblador, es una tarea lenguaje ensamblador, es una tarea complicada.complicada.

Incluso en lenguaje ensamblador, la Incluso en lenguaje ensamblador, la programación es muy costosa para programación es muy costosa para dibujos que no sean muy sencillos, dibujos que no sean muy sencillos, ya que sólo disponemos de cuatro ya que sólo disponemos de cuatro instrucciones (las cuatro básicas).instrucciones (las cuatro básicas).

Page 19: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje de alto nivelLenguaje de alto nivel Será una tarea muy larga y tediosa si Será una tarea muy larga y tediosa si

queremos programar a nuestra máquina queremos programar a nuestra máquina para que haga el siguiente dibujo:para que haga el siguiente dibujo:

Page 20: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje de alto nivelLenguaje de alto nivel Hay que pintar 28 segmentos. Entre cada dos Hay que pintar 28 segmentos. Entre cada dos

de ellos hay que hacer un giro y en varias de ellos hay que hacer un giro y en varias ocasiones hay que hacer un desplazamiento sin ocasiones hay que hacer un desplazamiento sin pintar (no se puede hacer de un único trazo).pintar (no se puede hacer de un único trazo).

Page 21: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje de alto nivelLenguaje de alto nivel Necesitamos más de 60 instrucciones Necesitamos más de 60 instrucciones

básicas de la máquina, sean en lenguaje básicas de la máquina, sean en lenguaje máquina o en lenguaje ensamblador.máquina o en lenguaje ensamblador.

Page 22: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje de alto nivelLenguaje de alto nivel En lugar de resignarnos a utilizar sólo En lugar de resignarnos a utilizar sólo

las instrucciones de la máquina (y por las instrucciones de la máquina (y por tanto muchas, si la tarea no es tanto muchas, si la tarea no es demasiado sencilla), podemos utilizar demasiado sencilla), podemos utilizar instrucciones complejas que equivalgan instrucciones complejas que equivalgan a varias instrucciones básicas.a varias instrucciones básicas.

Por ejemplo, una instrucción que dibuje Por ejemplo, una instrucción que dibuje un cuadrado, desde el punto actual un cuadrado, desde el punto actual hacia arriba-derecha, arriba-izquierda, hacia arriba-derecha, arriba-izquierda, abajo-derecha o abajo-izquierda.abajo-derecha o abajo-izquierda.

Page 23: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje de alto nivelLenguaje de alto nivel

Cuadrado(A, D, 5)

Por ejemplo, la sintaxis para dibujar Por ejemplo, la sintaxis para dibujar un cuadrado de 5 unidades de lado un cuadrado de 5 unidades de lado hacia arriba a la derecha desde el hacia arriba a la derecha desde el punto actual, podría ser:punto actual, podría ser:

Pinta 5GiraD 2Pinta 5GiraD 2Pinta 5GiraD 2Pinta 5GiraD2

100101010010100101010010100101010010100101010010

Lenguaje de alto nivel

Lenguaje ensamblador

Page 24: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje de alto nivelLenguaje de alto nivel Un leguaje que disponga de sentencias Un leguaje que disponga de sentencias

como ésta, simplifica mucho nuestro como ésta, simplifica mucho nuestro programa:programa: Cuadrado( A, I, 1)Cuadrado( A, I, 1) GiraD 3GiraD 3 Pinta1Pinta1 GiraI 1GiraI 1 Cuadrado( B, D, 3)Cuadrado( B, D, 3) GiraD 3GiraD 3 Mueve 1Mueve 1

etcetc

Page 25: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje de alto nivelLenguaje de alto nivel La traducción del lenguaje de alto nivel La traducción del lenguaje de alto nivel

al lenguaje máquina es más compleja al lenguaje máquina es más compleja que antes y tanto más cuanto más que antes y tanto más cuanto más complicadas sean las instrucciones que complicadas sean las instrucciones que queremos que contenga.queremos que contenga.

Ésto hace que los programas resulten Ésto hace que los programas resulten algo menos eficientes que los algo menos eficientes que los programados directamente en lenguaje programados directamente en lenguaje máquina (o en ensamblador).máquina (o en ensamblador).

Page 26: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje de alto nivelLenguaje de alto nivel A cambio, el lenguaje puede ser más A cambio, el lenguaje puede ser más

universal y que usuarios de distintas universal y que usuarios de distintas máquinas puedan usar los mismos máquinas puedan usar los mismos programas.programas.

Para ello basta que el lenguaje (que Para ello basta que el lenguaje (que será una sintáxis y un traductor al será una sintáxis y un traductor al lenguaje de una máquina) venga lenguaje de una máquina) venga equipado con traductores a distintas equipado con traductores a distintas máquinas.máquinas.

Page 27: Un ejemplo (totalmente inventado). Nuestra máquina Hemos fabricado una máquina que dibuja sobre un papel cuadriculado. Hemos fabricado una máquina que.

Lenguaje de alto nivelLenguaje de alto nivel

Cuadrado(A, D, 5)

Así, la instrucción anterior puede tener Así, la instrucción anterior puede tener distintas traducciones a máquinas distintas, distintas traducciones a máquinas distintas, pero eso no es asunto del usuario final.pero eso no es asunto del usuario final.

Pinta 5GiraD 2Pinta 5GiraD 2Pinta 5GiraD 2Pinta 5GiraD2

100101010010100101010010100101010010100101010010

Lenguaje de alto nivel

Lenguaje ensamblador

11011001101101001101100001001100100100101111011011

Traducción a otra máquina