6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de...

76
Arquitecturas de Computadores 6 Organización Básica y Lenguaje de Máquina Prof. Javier Cañas R.

Transcript of 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de...

Page 1: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Arquitecturas de Computadores6 Organización Básica y Lenguaje de Máquina

Prof. Javier Cañas R.

Page 2: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Temario1. Introducción

2. Estructura Básica de un Computador

3. Lenguaje de Máquina Básico

4. Instrucciones para decisiones

5. Procedimientos

6. Direccionamiento

7. Assemblers y Linkers

Page 3: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

1 Introducción• Para dar órdenes a un computador digital se

debe hablar su mismo lenguaje.

• Las palabras del lenguaje de un computador se denominan instrucciones, y el vocabulario conjunto de instrucciones.

• En este capítulo nos concentraremos en el conjunto de instrucciones de una máquina real. En forma previa debemos conocer la estructura básica de un computador.

Page 4: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

2 Estructura Básica de un Computador

• Un computador digital se compone de tres grandes bloques:

- El Procesador

- El Sistema de Memoria

- El Sistema de Entrada y Salida

Page 5: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

... Estructura

• El Procesador es el elemento central, y como tal, el objetivo principal de nuestro estudio. Se Implementa en un Chip VLSI y está formado por la unidad de Control y el Camino de Datos.

Page 6: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Bloques principales

Unidadde

Control

Caminode

Datos

Procesador

Memoria

Entrada

Salida

Compilador

Page 7: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

3 Lenguaje de Máquina Básico

• Consideraremos la máquina MIPS (R3000 y R4000) para nuestro estudio.

• El procesador MIPS tiene 32 bits y se desarrolló con tecnología RISC.

• Si bien consideraremos una máquina en particular, su diseño es lo suficientemente general como para entender el lenguaje de máquina de cualquier procesador.

Page 8: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Aritmética

• Todo computador debe ser capaz de realizar operaciones aritméticas.

• Sumas y restas en MIPS se realizan de la siguiente manera:

add a,b,c! #a ←b+csub a,b,c #a ←b-c

• Toda instrucción aritmética tiene 3 operandos: simplicidad→regularidad → desempeño (Regla 1 de diseño)

Page 9: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

EjemplosCódigo en C:

a=b+c;

d=a-e;

Lenguaje de Máquina:

add a,b,c

sub d,a,e

Código en C:

f=(g+h)-(i+j) ¿..?

Page 10: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Operadores y registros

• A diferencia de los lenguajes de alto nivel, los operandos de las instrucciones aritméticas se ubican en memorias muy rápidas llamadas registros.

• Un registro de la máquina MIPS tiene 32 bits. Se dice entonces, que la palabra de la máquina MIPS es de 32 bits.

Page 11: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

...Operadores y registros

• Una colección de 32 registros rápidos se denomina Archivo de Registros.

• ¿Por qué el archivo de registros tiene sólo 32 registros?

- Lo pequeño es rápido (regla 2 de diseño)

• La identificación de los registros se puede hacer usando números (del 0 al 31).

Page 12: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Identificación de registros y convenciones

• Usaremos $s0,$s1,..$s31 para designar registros que corresponden a variables de programas.

• Usaremos $t0,$t1,..$t31 para designar registros que corresponden a variables temporales.

Page 13: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Ejemplo

• Compilar “a mano”:

f=(g+h)-(i+j)

add $t0,$s1,$s2 #$t0←g+h

add $t1,$s3,$s4 #$t1←i+j

sub $s0,$t0,$t1 #f←$t0-$t1

Page 14: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Tratamiento de Arreglos

• Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras más complejas.

• Estructuras de datos como los arreglos, son mantenidos en memoria principal.

• Para llevar una palabra de memoria a un registro se utiliza la instrucción lw.

Page 15: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Ejemplo

• Compilar “a mano”, la siguiente expresión en C:

g=h+A[8];

lw $t0,8($s3) #$t0 ← A[8]add $s1,$s2,$t0 #g ←h+A[8]

• La dirección de memoria se obtiene sumando una constante con el contenido del segundo registro

Contenido delsegundo registroConstante

Page 16: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Offset y Registro base

• La constante en una instrucción de transferencia se denomina offset y el registro que se le suma para formar la dirección, se denomina registro base.

lw $t8,8($s3)

Registro BaseOffset

Page 17: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Restricción de Alineamiento

• La memoria principal está organizada en Bytes. Esto significa que las direcciones son direcciones de Bytes

• Los procesadores están organizados en registros de 32 bits (palabras).

• La forma de ubicar Bytes en palabras da origen a dos organizaciones distintas llamadas Big Endian y Little Endian.

Page 18: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Big Endian y Little Endian

3 2 1 0

7 6 5 4

0

4

Bytes

Memoria Little Endian

VAX

Intel

DEC Risc

0 1 2 3

4 5 6 7

0

4

Memoria Big EndianMIPS

Sparc

IBM 360

Direcciones de palabras

Page 19: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Ejemplo: Arreglo con variable índice

• Se pide el código assembly correspondiente a la sentencia C: g=h+A[i]

• Asumir que A tiene 100 elementos. La base está en el registro $s3 y además el compilador asocia las variables:

g ↔ $s1,h ↔ $s2, i ↔ $s4

Page 20: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

... Solución g=h+A[i]

• Antes de cargar A[i] en un registro temporal, se necesita su dirección. Antes de sumar i a la base del arreglo para generar su dirección, es necesario multiplicar el índice i por 4, debido a la forma de direccionar bytes.

• La multiplicación por dos se puede generar:

i+i=2i, 2i+2i=4i, etc..

Page 21: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Soluciónadd $t1,$s4,$s4 #$t1←2*i

add $t1,$t1,$t1 #$t1←4*i

• Para obtener la dirección de A[i], necesitamos sumar $t1 con la base de A que está en $s3add $t1,$t1,$s3 #$t1←dirección A[i]

• Con esta dirección se puede cargar A[i] en un registro temporal:lw $t0, 0($t1) # $t0 ← A[i]

• Finalmente el resultado queda en g:add $s1,$s2,$t0 # g←h+ A[i]

Page 22: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Assembly a Lenguaje de máquina

• La instrucción que se representa en assembly por add $t0,$s1,$s2 en una instrucción de máquina (notación decimal) queda:

OP6b

rs5b

rt5b

rd5b

shamt5b

funct6b

Formato tipo R

0 17 18 8 0 32

$s1 $s2 $t0add add

Page 23: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Campos del formato• op: código de operación

• rs: Primer operando fuente

• rt: Segundo operando fuente

• rd: Registro destino

• shamt: Shift amount (se usa en instrucciones de desplazamiento

• funct: selecciona una variación específica del código de operación (Código de operación expandido)

Page 24: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Formato tipo I (Inmediato)

• Consideremos la instrucción assembly:lw $t0, 32($s3) # $t0 ← A[8]

OP

6brs5b

rt5b

dirección16b

Formato tipo I

35 17 18 32

$s3 $t0lw

Page 25: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Formato tipo I (Inmediato)

• Consideremos la instrucción assembly:sw $t0, 32($s3) # A[8] ← $t0

OP

6brs5b

rt5b

dirección16b

Formato tipo I

43 17 18 32

$s3 $t0sw

Page 26: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Resumen de Formatos

• Es un buen principio de diseño tomar compromisos: regularidad de formatos y tamaño del código de operación (número de instrucciones)

bits 6 5 5 5 5 6

op rs rt rd shamt funct

op rs rt Dirección

R

I

Page 27: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Pseudo Instrucciones• Muchas instrucciones Assembly no existen en el

Lenguaje de Máquina, pero pueden ser generadas con otras instrucciones.

• Un ejemplo es la instrucción move que permite copiar un registro en otro. Esta instrucción no existe en la máquina MIPS

move $s1,$s2 #$s1← $s2

• El Assembler MIPS genera: add $s1,$0,$s2 #$s1← $s2+ 0

Page 28: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

4 Instrucciones para decisiones

• La máquina MIPS presenta dos instrucciones para la toma de decisiones:

• beq: branch equal:

beq reg1, reg2, L1

#if (reg1==reg2) goto L1

• bne: branch not equal:

bne reg1, reg2, L1

#if (reg1!=reg2) goto L1

Page 29: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Ejemplo de decisiones

• Generar lenguaje de máquina para el siguiente código C:

if(i==j) goto L1;

f=g+h;L1: f=f-i;

• Asumir que las 5 variables: f,g,h,i,j; corresponden a los 5 registros: $s0,....,$s5

Page 30: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Solución

• L1 representa la dirección de la instrucción de resta

beq $s3,$s4,L1 #if(i==j) goto L1add $s0,$s1,$s2 # f=g+h L1: sub $s0,$s0,$s3 #f=f-i

Page 31: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Ejemplo 2

• Usando las mismas variables y registros del ejemplo anterior, generar código de máquina para:

if(i==j) f=g+h; else f=g-h;

Page 32: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Solución

• Este ejercicio introduce otro tipo de salto llamado salto incondicional. La instrucción MIPS se denomina jump y se abrevia j

bne $s3,$s4,Else #if(i!=j)goto Elseadd $s0,$s1,$s2 #f=g+hj Exit #goto ExitElse: sub $s0, $s1, $s2 #f=g-hExit:

Page 33: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Saltos Incondicionalesj Exit #goto Exitjr $t1 #goto $t1

Prof. Javier Cañas R. 32

2 Dirección6b 26b

j es del tipo J

jr es del tipo R

op6b

rs5b

rt5b

rd5b

shamt5b

funct6b

0 rs 0 0 0 8

Page 34: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Compilación de Loops

• Compilar el código C:while (A[i]==k)

i=i+j;

• Asumiremos que i,j k corresponden a los registros $s3, $s4, y $s5. Además la base del arreglo A está guardada en $s6.

• El primer paso es cargar A[i] en un registro temporal:

Page 35: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

... LoopsLoop: add $t1,$s3,$s3 #$t1=2*i add $t1,$t1,$t1 #$t1=4*i add $t1,$t1,$s6 #$t1 es la dirección de A[i] lw $t0,0($t1) #$t0=A[i] bne $t0,$s5,Exit # ir a Exit si A[i] ≠ k add $s3,$s3,$s4 #i=i+j j LoopExit:

Page 36: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Comparaciones

• La máquina MIPS tiene dos instrucciones de comparación:slt $s1,$s2,$s3 #set on less than

#if $s2<$s3 $s1←1 else $s1←0

Page 37: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

... comparaciones

• Saltar menor que se puede construir:slt $s1,$s2,$s3

bne $s1,$0, Menos #va a Menos si #$s1≠0, o sea si a < b

• Existe la pseudo instrucción blt (branch less than), pero el compilador genera las dos instrucciones anteriores si encuentra blt.

Page 38: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

La sentencia switch

• Ejemplo, compilar el segmento C:switch(k) {

case 0: f=i+j; break; //k=0

case 1: f=g+h; break; //k=1 case 2: f=g-h; break; //k=2 case 3: f=i-h; break; //k=3

}

• Asumiremos que las 6 variables desde f a k, corresponden a los registros $s0 a $s5. El registro $t2 contiene el valor 4

Page 39: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

... Asignación de registros

f ↔ $s0g ↔ $s1h ↔ $s2i ↔ $s3j ↔ $s4k ↔ $s54 ↔ $t2

Page 40: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Código

• Usaremos la variable k para indexar una tabla de salto. El salto se hace vía el valor cargado.

• Lo primero es verificar rangos para k

slt $t3,$s5,$0 # ¿k <0?bne $t3,$0,Exit #si k<0, goto Exitslt $t3,$s5,$t2 # ¿k<4?beq $t3,$0,Exit # si k >=4 goto Exit

Page 41: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

... Código

• Hay que multiplicar por 4 el valor de k para convertirlo en dirección de byte.

add $t1,$s5,$s5 # $t1=2*k

add $t1,$t1,$t1 # $t1=4*k

• Las direcciones de los códigos correspondientes a los distintos valores de k, se mantienen en una tabla de salto.

Page 42: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

... Código

• Asumiremos una secuencia de 4 palabras de memoria, comenzando de la dirección almacenada en $t4. Obtenemos así la dirección de L0, L1,L2 y L3:

L0L1L2L3

Tabla de Salto

Page 43: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

... Código

• Obtención de la dirección de L0, L1,L2 y L3:

add $t1,$t1,$t4 #$t1= dirección de Tabla Salto [k]lw $t0,0($t1) #$t0=Tabla Salto[k]

Page 44: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

... Códigojr $t0 #salto basado en registro $t0

• Los primeros tres casos de switch son los mismos:L0: add $s0,$s3,$s4

j Exit L1: add $s0,$s1,$s2 j Exit L2: sub $s0,$s1,$s2 j Exit

Page 45: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

... Código

• Finalmente:

L3: sub $s0,$s3,$s4 Exit:

Page 46: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

5 Procedimientos

• Los procedimientos o subrutinas son las herramientas más poderosas para estructurar programas.

• En la ejecución de un procedimiento un programa sigue los siguientes pasos:

- Poner parámetros en un lugar accesible

- Transferir el control al procedimiento

- Realizar la tarea

- Poner el resultado en lugar accesible

- Volver el control al punto original

Page 47: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

...Procedimientos

• El software MIPS asigna los siguientes registros a Procedimientos:

- $a0-$a3: Argumentos para el paso de parámetros

- $v0-$v1: Registros para el retorno de valores

- $ra: Dirección de retorno para volver al punto original

Page 48: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Jump and Link

• La máquina MIPS incluye la instrucciónjal

jal DirecciónProcedimiento

• Tiene como efecto saltar a la dirección indicada, pero simultáneamente salva la dirección de retorno en $ra

• La dirección almacenada en $ra se denomina dirección de retorno. Esto es necesario ya que el mismo procedimiento puede ser invocado en diferentes partes del programa.

Page 49: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

El Program Counter PC

• Es necesario disponer de un registro que permita almacenar la dirección de la instrucción que está siendo ejecutada.

• Por razones históricas este registro se denomina PC: Program Counter.

• Debería llamarse IAR (Instruction Address register).

Page 50: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Jal y Jr

• La instrucción jal salva PC+4 en el registro $ra para establecer la dirección de retorno.

• La instrucción que permite volver al punto inicial es: jr $ra

Page 51: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Retorno de procedimiento

instruc1Dir1

jr $ra

Procedimiento

jal Dir1PC

PC+4

Prog. Principal

Page 52: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Procedimientos Anidados

• Lo normal en el desarrollo de un programa es que un procedimiento pueda llamar a otro, y que también se pueda llamar a si mismo en forma directa o indirecta (Recursividad):

.....jal B;

A instb.....jal C;.......jr $ra

B

inst1.......jr $ra

C

Page 53: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Manejo del Stack

• Es necesario el uso de un stack para permitir flexiblemente usar procedimientos anidados y recursividad:

Stack

$sp

sp: Stack Pointer

$ts

ts: Ajusta tope del Stack

Page 54: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Código usando Stack

.......jal B;

A ............add $sp,$sp,$tssw $ra,0($sp)jal C;lw $ra,0($sp)sub $sp,$sp,$ts.......jr $ra

B

.......

.......jr $ra

C

Page 55: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

6 Direccionamiento

• Los mecanismos de direccionamiento responden a las preguntas:

- ¿Dónde ir a buscar un operando?

- ¿A qué dirección transferir el control del programa?

• Ambas preguntas se refieren a los mecanismos de direccionamiento de los computadores.

Page 56: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

... Direccionamiento• La Máquina MIPS presenta todos los modos de

direccionamiento de las máquinas reales.

• Los mecanismos de direccionamiento que estudiaremos son:

- Tipo Registro

- Operandos Inmediatos

- Direccionamientos Absolutos

- Direccionamientos relativos al PC

- Direccionamiento Registro Base

Page 57: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Direccionamiento tipo Registro

• Lo más fácil es que el operando se encuentre en un registro. Este es el caso de las instrucciones tipo R.

• Ejemplo: add,$s1,$s2,$s3

OP6b

rs5b

rt5b

rd5b

shamt5b

funct6b

-44 36 -8

Page 58: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Direccionamiento: Operandos Inmediatos• Estadísticas de programas muestran que el

50% de los operandos son constantes, y estas constantes son números relativamente pequeños.

• Una forma es almacenar las constantes en la memoria principal y recuperar mediante una instrucción lw

• Ejemplo en C: a=a+5;

Page 59: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

...Operandos Inmediatos

• Supongamos que el número 5 lo guardamos en la dirección DIREC, y que la variable a la almacenamos en el registro $s1, entonces a=a+5 se genera:

lw $t1,DIREC($0)

add $s1,$s1,$t1

• Veremos una solución mejor.

Page 60: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Instrucciones Inmediatas: adi

• Una alternativa al código anterior es: addi $s1,$s1,5

• Formato es tipo I:

• Se puede apreciar que los operandos están limitados a 16b.

86b

rs5b

rt5b

Operando Inmediato16b

Page 61: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Instrucciones Inmediatas: slti,lui

• Otras instrucciones con operandos inmediatos son:

slti $t1,$s1,5 #if($s1<5)$t1=1. set on less than inmediate

lui $s1,255 #load upper inmediate

$s1 00000000111111111 00.......................00

lui permite cargar una constante en un registro

Page 62: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Direccionamiento Absoluto

• La única instrucción que permite este direccionamiento es jump (j).

• El espacio de direcciones alcanzable es de 64MB. El código que se genera no es relocalizable. Ejemplo:j 1000 # goto 1000

2 10006b 26b

tipo J

Page 63: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Direccionamiento Relativo al PC

• Ejemplo:

bne $s1,$s2,Exit # goto Exit si $s1 !=$s2

• El espacio de direcciones alcanzable es de 216B. Para aumentar este espacio, se considera que el campo de 16b son direcciones de palabras de 32b

56b

rs ($s1)5b

rt($s2)5b

Exit16b

Formato tipo I

Page 64: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

...Direccionamiento Relativo al PC

Limitado por 16bPC

Page 65: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

...Direccionamiento Relativo al PC

• El hardware modifica el PC antes de terminar la instrucción actual. PC ←PC+4. Esto significa que la dirección es relativa a la dirección de la siguiente instrucción.

Limitado por 16bPC

PC+4

Page 66: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

... EjemploEjemplo:

a: bne $s2,$s3,FIN

add $t4,$s4,$s6

j a

FIN:

80000 5 8 21 280004 0 19 20 19 0 3280008 2 8000080012

$s2 ↔ 8, $s3 ↔ 21

$t4 ↔ 19, $s6 ↔20

a: Dirección 80000

Page 67: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Resumen Direccionamientos

Tipo Registro

OP rs rt rd shamt funct

Registro Base

OP rs rt dirección

+

Memoria

Page 68: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

...Resumen Direccionamientos

Inmediato

OP rs rt

Relativo al PC

OP rs rt dirección

PC +

Memoria

Page 69: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

...Resumen DireccionamientosAbsoluto

OP dirección

Memoria

Page 70: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

7 Assemblers y Linkers

• El lenguaje assembly es la representación simbólica de la codificación binaria de un programa.

• El lenguaje assembly tiene directivas que no generan código: .data, .global

• Los roles que tiene el lenguaje assembly son: lenguaje intermedio para un compilador, embedded computers.

Page 71: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Compilación y Ensamblado

Programa Compilador Assembler

LinkerComputador

Lenguaje Assembly

Ejecutable

Page 72: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Ejemplo de compilaciónswap(intv[],int k)

{int temp;

temp=v[k];

v[k]=v[k+1];

v[k+1]=temp;

}

swap:

muli $2,$5,4

add $2,$4,$2

lw $15,0($2)

lw $16,4($2)

sw $16,0($2)

sw $15,4($2)

jr $31

Page 73: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

De la programación en Assembly

• Programar en Assembly tiene varias desventajas:

- Específico a una máquina (baja portabilidad)

- La relación entre líneas de código de un lenguaje de alto nivel y Assembly se denomina factor de expansión

Page 74: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

... De la programación en Assembly

• ...desventajas:

- Estudios demuestran que un programador escribe el mismo número de líneas de código por día programando en Assembly o programando en un lenguaje de alto nivel.

- Si X es el factor de expansión, la productividad de un Lenguaje de Alto Nivel respecto a Assembly es X

Page 75: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Links a URL relacionados

• www.mips.com

• http://pages.cs.wisc.edu/~larus/spim.html

Page 76: 6 Organización Básica y Lenguaje de Máquina Prof. Javier ...Arreglos •Los lenguajes de programación además de manejar variables simples son capaces de manipular estructuras

Arquitecturas de Computadores6 Organización Básica y Lenguaje de Máquina

Prof. Javier Cañas R.