advertisement

Codificacion

67 %
33 %
advertisement
Information about Codificacion

Published on August 5, 2007

Author: stefanosalvatori

Source: slideshare.net

advertisement

Codificación de Instrucciones Cecilia Hernández

Codificación de Instrucciones Lenguaje assembly Representación simbólica de instrucciones del lenguaje de máquina Conveniencias para programación (menmónicos, labels, directivas, etc.) Lenguaje de máquina Instrucciones en memoria representadas en binario Procesador las transforma en señales de control para ejecutar la instrucción Campos de una instrucción Código de operación (opcode) Operandos inmediatos (constantes, desplazamientos) Registros operando Información adicional (ej. Opcode extendido, continuación de la instrucción, etc.) Objetivos de la codificación de instrucciones Simplicidad (más fácil de decodificar) Regular (campos de la instrucción son fijos) Compacto (reduce el tamaño en memoria de los programas)

Lenguaje assembly

Representación simbólica de instrucciones del lenguaje de máquina

Conveniencias para programación (menmónicos, labels, directivas, etc.)

Lenguaje de máquina

Instrucciones en memoria representadas en binario

Procesador las transforma en señales de control para ejecutar la instrucción

Campos de una instrucción

Código de operación (opcode)

Operandos inmediatos (constantes, desplazamientos)

Registros operando

Información adicional (ej. Opcode extendido, continuación de la instrucción, etc.)

Objetivos de la codificación de instrucciones

Simplicidad (más fácil de decodificar)

Regular (campos de la instrucción son fijos)

Compacto (reduce el tamaño en memoria de los programas)

Codificación de instrucciones ISA define Formato de instrucciones (sintaxis) El significado de una instrucción (semántica) Codificación corresponde a formato Cada formato de instrucción tiene varios campos El campo “código de operación” proporciona la semántica de la instrucción (add, lw, etc) Campos operandos especifican los datos de entrada y salida de la ejecución de la instrucción

ISA define

Formato de instrucciones (sintaxis)

El significado de una instrucción (semántica)

Codificación corresponde a formato

Cada formato de instrucción tiene varios campos

El campo “código de operación” proporciona la semántica de la instrucción (add, lw, etc)

Campos operandos especifican los datos de entrada y salida de la ejecución de la instrucción

Codificación de instrucciones MIPS MIPS es RISC, por lo tanto pocos formatos de instrucciones Tipo Registro Tipo Immediato Tipo Jump Todas las instrucciones son del mismo largo (32 bits) Formatos consistentes entre sí Código de operación siempre en el mismo lugar Constante immediata siempre en el mismo lugar

MIPS es RISC, por lo tanto pocos formatos de instrucciones

Tipo Registro

Tipo Immediato

Tipo Jump

Todas las instrucciones son del mismo largo (32 bits)

Formatos consistentes entre sí

Código de operación siempre en el mismo lugar

Constante immediata siempre en el mismo lugar

Formato tipo-R (tipo Registro) Usado en instrucciones aritméticas, lógicas y de comparación Op rs rt rd shft func 6bits 5bits 5bits 5bits 5bits 6bits Op: Código de operación Rs: Registro fuente (source) Rt: Registro fuente (source) Rd: Registro destino Shft: Cantidad de desplazamiento Func: Permite expandir el código de operación

Usado en instrucciones aritméticas, lógicas y de comparación

Op: Código de operación

Rs: Registro fuente (source)

Rt: Registro fuente (source)

Rd: Registro destino

Shft: Cantidad de desplazamiento

Func: Permite expandir el código de operación

Ejemplo Instrucción tipo-R Op =0, funct = 34 rs rt rd 0 8 9 7 0 34 Bits no usados sub $7,$8,$9 # $7 = $8 - $9 Op rs rt rd shft func

Formato tipo Immediato Se usa en instrucciones donde un operando de entrada es una constante de 16 bits Op: 6 bits para el código de operación rt: aquí se usa como registro destino rs: registro de entrada Immediato: constante de 16 bits Ejemplo: Addi $4, $7, 78 # $4 = $7 + 78 Op rs rt immediato 6bits 5bits 5bits 16 bits

Se usa en instrucciones donde un operando de entrada es una constante de 16 bits

Op: 6 bits para el código de operación

rt: aquí se usa como registro destino

rs: registro de entrada

Immediato: constante de 16 bits

Ejemplo:

Addi $4, $7, 78 # $4 = $7 + 78

Ejemplo Instrucción tipo-I 08 12 4 33 En Hexa: 21840021 Op(6) rs(5) rt(5) immediato (16) Addi $a0,$12,33 # $4 = $12 +33 # $a0 es $4 # Op Addi 08

Addi $a0,$12,33 # $4 = $12 +33

# $a0 es $4

# Op Addi 08

Extensión de signo Internamente la ALU trata con números de 32 bits Qué ocurre con una constante de 16 bits? Se extiende a 32 Si la instrucción es sin signo (addiu) Completar los 16 bits de arriba con 0s Si la instrucción es con signo (addi) Completar los 16 bits de arriba con el bit más significativo de la constante de 16 bits Agrega 0s si la constante es positiva Agrega 1s si la constante es negativa

Internamente la ALU trata con números de 32 bits

Qué ocurre con una constante de 16 bits?

Se extiende a 32

Si la instrucción es sin signo (addiu)

Completar los 16 bits de arriba con 0s

Si la instrucción es con signo (addi)

Completar los 16 bits de arriba con el bit más significativo de la constante de 16 bits

Agrega 0s si la constante es positiva

Agrega 1s si la constante es negativa

Instrucciones load/store MIPS=RISC= arquitectura load/store Load: lee dato de memoria a registro Store: escribe dato de registro a memoria Cada instrucción load/store debe especificar La unidad de info a ser transferida de o hacia memoria (byte, half-word, word…) La dirección de memoria Dirección de memoria es de 32 bits

MIPS=RISC= arquitectura load/store

Load: lee dato de memoria a registro

Store: escribe dato de registro a memoria

Cada instrucción load/store debe especificar

La unidad de info a ser transferida de o hacia memoria (byte, half-word, word…)

La dirección de memoria

Dirección de memoria es de 32 bits

Direccionando instrucciones load/store La dirección se calcula como la suma De contenido de un registro base (rs) 16 bits de desplazamiento, definido en la sección immediata de la instrucción. Este se suma, como un número con signo, al contenido del registro base Por lo tanto, uno puede direccionar cualquier byte dentro de +-32KB de la dirección apuntada por el contenido del registro base

La dirección se calcula como la suma

De contenido de un registro base (rs)

16 bits de desplazamiento, definido en la sección immediata de la instrucción. Este se suma, como un número con signo, al contenido del registro base

Por lo tanto, uno puede direccionar cualquier byte dentro de +-32KB de la dirección apuntada por el contenido del registro base

Ejemplos de instrucciones Load/store Lee de memoria a registro Lw rt, rs, offset #rt <- Memoria[rs + offset] Almacena en memoria contenido de registro Sw rt, rs, offset #rt-> Memoria[rs + offset] Para caso de datos de tipo bytes y half-words Para loads es necesario especificar si los datos al almacenar son con o sin signo Lb rt, rs, offset #rt<-ext-signo(Memoria[rs+offset]) Lbu rt,rs, offset #rt<-ext-ceros(Memoria[rs+offset]) Sb rt,rs,offset #BMS (rt) ->Memoria[rs+offset] Sh rt, rs, offset #HMS (rt) ->Memoria[rs+offset]

Lee de memoria a registro

Lw rt, rs, offset #rt <- Memoria[rs + offset]

Almacena en memoria contenido de registro

Sw rt, rs, offset #rt-> Memoria[rs + offset]

Para caso de datos de tipo bytes y half-words

Para loads es necesario especificar si los datos al almacenar son con o sin signo

Lb rt, rs, offset #rt<-ext-signo(Memoria[rs+offset])

Lbu rt,rs, offset #rt<-ext-ceros(Memoria[rs+offset])

Sb rt,rs,offset #BMS (rt) ->Memoria[rs+offset]

Sh rt, rs, offset #HMS (rt) ->Memoria[rs+offset]

Formato Load/Store Se necesita Código de operación Registro destino para lectura y fuente para escritura : rt Registro base : rs Offset : campo immediato Ejemplo Lw $14, 8($sp) # $14 cargado con contenido # del tope del stack + 8 35 29 14 8

Se necesita

Código de operación

Registro destino para lectura y fuente para escritura : rt

Registro base : rs

Offset : campo immediato

Ejemplo

Lw $14, 8($sp) # $14 cargado con contenido

# del tope del stack + 8

Cargando constantes en registro Si la constante es pequeña (codificada en a lo mas 16 bits) se usa el campo immediato Li $14, 8 # $14<- 8 Sin embargo, no existe código de operación para li, debido a que es una pseudoinstrucción SPIM la reconoce y la traduce a una instrucción entendida por MIPS (un Addi o ori) Ori $14, $0, 8 #$14<- $0 +8

Si la constante es pequeña (codificada en a lo mas 16 bits) se usa el campo immediato

Li $14, 8 # $14<- 8

Sin embargo, no existe código de operación para li, debido a que es una pseudoinstrucción

SPIM la reconoce y la traduce a una instrucción entendida por MIPS (un Addi o ori)

Ori $14, $0, 8 #$14<- $0 +8

Cargando constantes en registro Si la constante no cabe en 16 bits Lui (load upper imm) para cargar 16 bits más significativos, pone ceros en los 16 bits menos significativos Usar ori para los 16 bits menos significativos Ejemplo Lui $t0, 0x1A23 Ori $t0, $t0, 0x9877 # $t0<- 0x1A239877 Estas se usan para implementar pseudoinstrucción “la”

Si la constante no cabe en 16 bits

Lui (load upper imm) para cargar 16 bits más significativos, pone ceros en los 16 bits menos significativos

Usar ori para los 16 bits menos significativos

Ejemplo

Lui $t0, 0x1A23

Ori $t0, $t0, 0x9877 # $t0<- 0x1A239877

Estas se usan para implementar pseudoinstrucción “la”

Instrucciones para control de flujo Comparación Registro con 0 Instrucciones bne, beq, bgt, blt, etc Beq rs,rt,target #salta a target if rs = rt Beqz rs, target #salta a target if rs = 0 Entre registros, usan un tercer registro Instrucciones slt rd,rs,rt # rd = 1 if rs < rt else rd = 0 ejemplo: slt $10,$5,$6 # $10 = 1 if $5 < $6 # sino $10 = 0

Comparación

Registro con 0

Instrucciones bne, beq, bgt, blt, etc

Beq rs,rt,target #salta a target if rs = rt

Beqz rs, target #salta a target if rs = 0

Entre registros, usan un tercer registro

Instrucciones

slt rd,rs,rt # rd = 1 if rs < rt else rd = 0

ejemplo:

slt $10,$5,$6 # $10 = 1 if $5 < $6 # sino $10 = 0

Transferencias de control incondicionales Saltos incondicionales b target (pseudoinstrucción) begz target Corto alcance, solo 16 bits (+-32K instrucciones) Instrucciones jump J target #formato: cod op mas 26 bits target Jr $rs #salta a direccion almacenada en rs Llamadas a funciones/procedimientos Jal target # salta a target y $ra<- PC + 1 Jr $31 # salta a dirección en #31 ($ra)

Saltos incondicionales

b target (pseudoinstrucción) begz target

Corto alcance, solo 16 bits (+-32K instrucciones)

Instrucciones jump

J target #formato: cod op mas 26 bits target

Jr $rs #salta a direccion almacenada en rs

Llamadas a funciones/procedimientos

Jal target # salta a target y $ra<- PC + 1

Jr $31 # salta a dirección en #31 ($ra)

Formato de saltos condicionales Código de operación, uno o dos registros y offset No hay registro base porque offset se suma a PC Dos posibles Beq $4, $5, 100 beqz $4, 100 offset Cod-op rs Rt/func

Código de operación, uno o dos registros y offset

No hay registro base porque offset se suma a PC

Dos posibles

Beq $4, $5, 100 beqz $4, 100

Cómo direccionar operandos ISA especifica modos de direccionamiento MIPS es RISC sólo algunos modos Modo registro: operando contenido en registro Base + desplazamiento: para direccionar memoria: Operando se encuentra en dirección de memoria calculada por contenido de registro base + un offset Modo immediato: Operando es una constante que viene definida en la instrucción Modo relativo al PC: registro base es el PC (jal)

ISA especifica modos de direccionamiento

MIPS es RISC sólo algunos modos

Modo registro: operando contenido en registro

Base + desplazamiento: para direccionar memoria: Operando se encuentra en dirección de memoria calculada por contenido de registro base + un offset

Modo immediato: Operando es una constante que viene definida en la instrucción

Modo relativo al PC: registro base es el PC (jal)

Codificación de Instrucciones Lenguaje assembly Representación simbólica de instrucciones del lenguaje de máquina Conveniencias para programación (menmónicos, labels, directivas, etc.) Lenguaje de máquina Instrucciones en memoria representadas en binario Procesador las transforma en señales de control para ejecutar la instrucción Campos de una instrucción Código de operación (opcode) Operandos inmediatos (constantes, desplazamientos) Registros operando Información adicional (ej. Opcode extendido, continuación de la instrucción, etc.) Objetivos de la codificación de instrucciones Simplicidad (más fácil de decodificar) Regular (campos de la instrucción son fijos) Compacto (reduce el tamaño en memoria de los programas)

Lenguaje assembly

Representación simbólica de instrucciones del lenguaje de máquina

Conveniencias para programación (menmónicos, labels, directivas, etc.)

Lenguaje de máquina

Instrucciones en memoria representadas en binario

Procesador las transforma en señales de control para ejecutar la instrucción

Campos de una instrucción

Código de operación (opcode)

Operandos inmediatos (constantes, desplazamientos)

Registros operando

Información adicional (ej. Opcode extendido, continuación de la instrucción, etc.)

Objetivos de la codificación de instrucciones

Simplicidad (más fácil de decodificar)

Regular (campos de la instrucción son fijos)

Compacto (reduce el tamaño en memoria de los programas)

Codificación de instruciones MIPS Instrucciones tipo R: Instrucciones con 3 registros Ej. add, subu, sla, jr Ej: and $10, $14, $3 000000 01110 00011 01010 00000 000000 Ej: or $10, $14, $3 000000 01110 00011 01010 00000 000001

Instrucciones tipo R:

Instrucciones con 3 registros

Ej. add, subu, sla, jr

Ej: and $10, $14, $3

000000 01110 00011 01010 00000 000000

Ej: or $10, $14, $3

000000 01110 00011 01010 00000 000001

Codificación de instrucciones MIPS Instrucciones tipo I: Instrucciones con operandos inmediatos Ej. addi, subui, beq Ej: andi $10, $14, 23 000001 01110 01010 0000 0000 0001 0111 Ej: beq $10, $14, CLabel 000010 01010 01110 0000 0000 0000 0101

Instrucciones tipo I:

Instrucciones con operandos inmediatos

Ej. addi, subui, beq

Ej: andi $10, $14, 23

000001 01110 01010 0000 0000 0001 0111

Ej: beq $10, $14, CLabel

000010 01010 01110 0000 0000 0000 0101

Codificación de instrucciones MIPS Instrucciones tipo J: Instrucciones de salto incondicional Ej: j Label 110000 00 0000 0000 0000 0000 0001 0111 Label de 26 bits no cubre espacio de direcciones completo! Direcciona instrucciones, no bytes Dirección destino 4 MSB son los mismos del PC actual 26 bits siguientes vienen del label 2 LSB son siempre cero

Instrucciones tipo J:

Instrucciones de salto incondicional

Ej: j Label

110000 00 0000 0000 0000 0000 0001 0111

Label de 26 bits no cubre espacio de direcciones completo!

Direcciona instrucciones, no bytes

Dirección destino

4 MSB son los mismos del PC actual

26 bits siguientes vienen del label

2 LSB son siempre cero

Add a comment

Related pages

Codificación - significado de codificación diccionario

codificacion; codificación; codificación magnética; codificaciones; codificad; codificada; codificadas; codificado; codificador; codificadora ...
Read more

Codificación - Wikipedia, la enciclopedia libre

Codificación de caracteres; Codificación jurídica; Codificación (memoria) Codificación digital; Véase también. Código
Read more

codificación translation English | Spanish dictionary ...

codificación translation english, Spanish - English dictionary, meaning, see also 'codificación de barras',cosificación',codificado',cronificación ...
Read more

Codificación de caracteres - Wikipedia, la enciclopedia libre

La codificación de caracteres es el método que permite convertir un carácter de un lenguaje natural (como el de un alfabeto o silabario) en un símbolo ...
Read more

Codificacion - significado de codificacion diccionario

Definición de codificacion en el Diccionario de español en línea. Significado de codificacion diccionario. traducir codificacion significado ...
Read more

Codificación - Monografias.com

Sumilla. Doctrina. Clasificaciones de los códigos. El presente artículo trata sobre la codificación, para lo cual se define la codificación ...
Read more

Codificación | LinkedIn

Jefe Codificacion at Corporacion Grupo Romero, ECM & BPM Consultant at Cima Latin America See less. View Profile. Dashira Martinez, MBA, CPC
Read more

codificación - Spanisch Wörterbuch | Übersetzung ...

Suchbegriff: codificación hat Eine Bedeutung, 3 Synonymgruppen & 16 Synonyme. 1 Spanisch » Deutsch codificación
Read more

codificación - Diccionario Inglés-Español WordReference.com

codificación - Traduccion ingles de diccionario ingles ... Principal Translations: Spanish: English: codificación nf nombre femenino: Sustantivo de ...
Read more

codificación übersetzen - Deutsch Spanisch Übersetzung

codificación übersetzen - Deutsch Spanisch Übersetzung Tools. Seite von codificación drucken; codificación in Google suchen
Read more