ELO311 Estructuras de Computadores Digitales. Ensamblador MIPS

Documentos relacionados
ELO311 Estructuras de Computadores Digitales. Operaciones MIPS para Control de flujo

Estructura de Computadores 2 [08/09] Entrada/Salida en procesadores MIPS

ELO311 Estructuras de Computadores Digitales. Procesador Monociclo

Diseño Procesador Monociclo

Fundamentos de los Computadores Grado en Ingeniería Informática (hasta final del diseño monociclo)

Modelo de von Neumann

El procesador. Diseño del control

Unidad 3. Facultad de Ciencias Departamento de Electrónica

El nivel ISA (II)! Conjunto de Instrucciones

El repertorio de instrucciones

ARQUITECTURA DEL REPERTORIO DE INSTRUCCIONES

Organización procesador MIPS

Organización de Computadoras. Principios de Conjuntos de Intrucciones

Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones

Plataformas de soporte computacional: arquitecturas avanzadas,

Organización del Computador I Verano. Control Multiciclo. Basado en el capítulo 5 del libro de Patterson y Hennessy

Organización del Computador I Verano. MIPS (2 de 2) Basado en el capítulo 2 del libro de Patterson y Hennessy

Organización del Computador 1. CPU (ISA) Conjunto de Instrucciones de la Arquitectura 2017

Arquitectura de Computadores II Clase #3

MIPS: Modelo de programación. (I Parte)

Arquitectura del MIPS: Introducción

Tema 3 (III) Fundamentos de la programación en ensamblador

Ejercicios del tema 4. El procesador

Introducción a la arquitectura de computadores

16/04/2012. Introducción. Construyendo el Datapath. Esquema de implementación Simple. Unidad de Control. Arquitectura de Computadoras Primavera 2012

Convenciones. Introducción. Unidades principales en la implementación. El procesador: camino de datos y control. Tipos de elementos:

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO311 Estructuras de Computadores

El procesador: camino de datos y. IEC UTM Moisés E. Ramírez G. control

Arquitectura de Computadoras

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES

La Unidad de Control y el Camino de Datos

Tema 5. Segmentación: conceptos básicos

Arquitectura t de Computadores Clase 10: Diseño del microprocesador monociclo pt.2

UNIDAD 2: Instrucciones: el lenguaje de las computadoras.

3. Instrucciones: lenguaje de la máquina

Arquitectura del CPU. Organización del Computador 1 Verano 2016

Segmentación del Path de Datos

Organización del Computador. Microprogramación

Pr. Dr. Xavier Bonnaire

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

UNIDAD I CONCEPTOS GENERALES. Conceptos Generales Microprocesadores Otoño 2011

El procesador. Datapath y control

Procesador Segmentado

Arquitectura de Computadoras I Ingeniería de Sistemas Curso 2017

Sección de procesamiento: El camino de datos

Arquitectura de Computadoras para Ingeniería

Diseño Procesador Multiciclo

Procesador MIPS - Registros

Arquitectura de Computadores II Clase #3

Tema 6: Descripción del ISA del MIPS

ELO311 Estructuras de Computadores Digitales. Ambiente de Ejecución de Funciones

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES

ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES 1º I.T.I.G. I.T.I.S.

ARQUITECTURA SPARC: FORMATO DE INSTRUCCIÓN

Fundamentos de los Computadores Grado en Ingeniería Informática

ELO311 Estructuras de Computadores Digitales. Estructuras de Datos

ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES 1º I.T.I.G. I.T.I.S.

Cuando se ejecuta un procedimiento, intrínsecamente se están realizando los siguientes pasos:

Memoria, Datos y Direccionamiento

Estructura de Computadores

Microarquitectura: DISEÑO DE SISTEMAS DIGITALES EL-3310 I SEMESTRE MICROARQUITECTURA: FLUJO DE DATOS Y CONTROL DEL MICROPROCESADOR

Arquitectura de Computadores

Repaso concepto de programa

Organización del Computador. Máquina de von Neumann Jerarquía de Niveles

Arquitectura de Computadoras Trabajo Práctico N 8 Pipeline de Instrucciones 1 Primer Cuatrimestre de 2016

Tema 5 Diseño del Set de Instrucciones (ISA) Arquitectura de Computadoras

Bibliografía recomendada: Estructura y Diseño de Computadores: Volumen 1 Modelo Modelo Vo Vo n Neumann

Arquitectura de Computadores II Clase #4

Arquitectura de Computadores II Clase #4

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

Arquitectura de Computadores y laboratorio Clase 15: Arquitectura MIPS Pt.3. Departamento de Ingeniería de Sistemas Universidad de Antioquia

El Diseño de un Lenguaje Máquina

Fundamentos de los Computadores Grado en Ingeniería Informática (desde diseño multiciclo en adelante)

Diseño de la ruta de datos multiciclo. Procesador Multiciclo. Diseño de la ruta de datos multiciclo. Diseño de la ruta de datos multiciclo

Organización y Arquitectura

Arquitectura de Computadoras. Simulador WINMIPS64

Práctica 4 - Microarquitectura del CPU

Grupo de Arquitectura y Tecnología de Computadores (ARCOS)

UNIDAD 3 ARQUITECTURA DEL Z80. Microprocesadores Otoño 2011

Arquitecturas RISC. Arquitectura de Computadoras y Técnicas Digitales - Mag. Marcelo Tosini Facultad de Ciencias Exactas - UNCPBA

INSTRUCCIONES: EL LENGUAJE DEL PROCESADOR

Práctica 7 - Microarquitectura del CPU

ELO311 Estructuras de Computadores Digitales. Pipeline (Segmentación)

INTRUCCIONES: LENGUAJE MAQUINA

Introducción al simulador

MODOS DIRECCIONAMIENTO CPU08. Curso de Microcontroladores Familia HC908 Flash de Motorola Parte II. ING. DANIEL DI LELLA DDFAE For Motorola Products

Diseño de la ruta de datos y la unidad de control

Generación de un ejecutable

Arquitectura de Computadores. Tema 8. Diseño de un CPU de multiciclo

Arquitecturas vectoriales, SIMD y extensiones multimedia

Estructura y Tecnología de Computadores. Módulo G. Estructura del procesador. Tema 16. Diseño de la ruta de datos y la unidad de control

Contenidos del Curso. Arquitectura de Computadores. Organización de un Sistema computacional

5 Lenguaje de Máquina

ISA (Instruction Set Architecture) Arquitectura del conjunto de instrucciones

El procesador. Datapath para las instrucciones de brinco

Transcripción:

ELO311 Estructuras de Computadores Digitales Ensamblador MIPS Tomás Arredondo Vidal Este material está basado en: material de apoyo del texto de David Patterson, John Hennessy, "Computer Organization & Design", (segunda y tercera edición), Morgan Kaufmann, CA. 2005 material del curso anterior ELO311 del Prof. Leopoldo Silva material del curso CSE331 de Mary Jane Irving de Penn State www.wikipedia.org

Repaso: Ciclo de Ejecución El camino de datos (datapath) ejecuta las instrucciones bajo dirección de control Processor Control 000000 00100 00010 0001000000100000 Datapath contents Reg #4 ADD contents Reg #2 results put in Reg #2 Memory Devices Input Output La memoria almacena instrucciones y datos

Repaso: Organización del Procesador Control tiene que tener la Habilidad de leer instrucciones de memoria Lógica para controlar la secuenciación de instrucciones Lógica para generar señales que controlen la manera en que la información fluye entre componentes del camino de datos Lógica para controlar las operaciones de las FUs del camino de datos Camino de datos tiene que tener los Componentes unidades funcionales (e.g., sumador) y almacenamiento (e.g., set de registros) necesario para ejecutar instrucciones Componentes interconectados para que las instrucciones se puedan ejecutar Capacidad de leer y almacenar datos en la memoria Exec Leer Decode

For a given level of function, however, that system is best in which one can specify things with the most simplicity and straightforwardness. Simplicity and straightforwardness proceed from conceptual integrity. Ease of use, then, dictates unity of design, conceptual integrity. The Mythical Man-Month, Brooks, pg 44

MIPS = RISC (Reduced Instruction Set Computer) Filosofía RISC Instrucciones de largo fijo Sets de instrucciones de lectura-escritura (load-store) Modos de direccionamiento limitado Operaciones limitadas MIPS, Sun SPARC, HP PA-RISC, IBM PowerPC, Intel (Compaq) Alpha, Conjuntos de instrucciones se miden por la manera en la cual los compiladores las usan no como los programadores los usan

Organización General de MIPS src1 addr src2 addr dst addr write data 5 5 5 Processor Register File registers ($zero - $ra) bits src1 data src2 data read/write addr Memory 1 1100 2 30 words Exec br offset PC Add 4 Fetch PC = PC+4 Decode Add ALU read data write data 4 5 6 7 0 1 2 3 byte address (big Endian) bits 0 1100 0 1000 0 0100 0 0000 word address (binary)

Procesador Monociclo Esquema General por unidad Unidad de Control AluSrc MemWr npc_sel WE PC RegDst RegWr ExtOp AluCtr MemRd MemtoReg COp+ Funct Equal rs 5 busa Unidad de Instrucción rt rd busw Inm16 5 5 Unidad Registros busb Unidad de Operaciones AluOut AddrD Mem oria Din Datos Dout 0 1 Reloj

Instrucciónes Aritméticas MIPS Comandos de asembler MIPS add $t0, $s1, $s2 sub $t0, $s1, $s2 Cada instrucción aritmética hace solo una operación Cada instrucción aritmética tiene exactamente tres operandos destination source1 op source2 Los operandos se contienen en el set de registros del camino de datos o register file ($t0,$s1,$s2) Orden de los operandos es fijo (destino primero)

Instrucciónes Aritméticas MIPS Comandos de asembler MIPS add $t0, $s1, $s2 sub $t0, $s1, $s2 Cada instrucción aritmética hace solo una operacion Cada instrucción aritmética tiene exactamente tres operandos destination source1 op source2 Los operandos se contienen en el set de registros del camino de datos o register file ($t0,$s1,$s2) Orden de los operandos es fijo (destino primero)

Comandos Más Complejos Asumiendo que la variable b es almacenado en el registro $s1, c es almacenado en $s2, y d es almacenado en $s3 y el resultado debe guardarse en $s0, cual es el equivalente en asembler de? h = (b - c) + d

Comandos Más Complejos Asumiendo que la variable b es almacenado en el registro $s1, c es almacenado en $s2, y d es almacenado en $s3 y el resultado debe guardarse en $s0, cual es el equivalente en asembler de? h = (b - c) + d sub $t0, $s1, $s2 add $s0, $t0, $s3

Conjunto de Registros MIPS Operandos de instrucciones aritméticos deben ser del conjunto de registros (register file) de ubicaciones especiales contenidas en el camino de datos (datapath) Tiene registros de bits Registros son Con dos puertos de lectura y Un puerto de escritura Mas rápidos que memoria principal (e.g. DRAM) Mas fácil de usar para un compilador e.g., (A*B) (C*D) (E*F) puede hacer multiplicaciones en cualquier orden (vs stack) Puede tener variables src1 addr src2 addr dst addr write data Register File Densidad del código es mayor (registros usan menos bits que memoria) 5 5 5 locations bits src1 data src2 data Direcciones de registros se indican usando $

Nombres de registros 0 $zero constant 0 (Hdware) 1 $at reserved for assembler 2 $v0 expression evaluation & 3 $v1 function results 4 $a0 arguments 5 $a1 6 $a2 7 $a3 8 $t0 temporary: caller saves... (callee can clobber) 15 $t7 16 $s0 callee saves... (caller can clobber) 23 $s7 24 $t8 temporary (cont d) 25 $t9 26 $k0 reserved for OS kernel 27 $k1 28 $gp pointer to global area 29 $sp stack pointer 30 $fp frame pointer 31 $ra return address (Hdware)

Registros vs. Memoria Operandos de instrucciones aritméticas deben ser registros, solo hay registro disponibles Processor Devices Control Memory Input Datapath Output Compiladores asocian variables con registros Que pasa con programas con muchas variables?

Registros vs. Memoria Operandos de instrucciones aritméticas deben ser registros, solo hay registro disponibles Processor Devices Control Memory Input Datapath Output Compiladores asocian variables con registros Que pasa con programas con muchas variables?

Accediendo a la Memoria MIPS tiene dos instrucciones básicas de transferencia de datos para acceder a la memoria lw $t0, 4($s3) #load word from memory sw $t0, 8($s3) #store word to memory (assume $s3 tiene 24 10 ) La instrucción de transferencia de datos debe especificar De donde leer (load) o escribir (write) en memoria memory address Desde donde en los registros leer o cargar La dirección de memoria se forma al sumar la dirección constante de la instrucción y los contenidos del segundo registro

Accediendo a la Memoria MIPS tiene dos instrucciones básicas de transferencia de datos para acceder a la memoria 28 lw $t0, 4($s3) #load word from memory sw $t0, 8($s3) #store word to memory (assume $s3 tiene 24 10 ) La instrucción de transferencia de datos debe especificar De donde leer (load) o escribir (write) en memoria memory address Desde donde en los registros leer o cargar La dirección de memoria se forma al sumar la dirección constante de la instrucción y los contenidos del segundo registro

Memoria Asumiendo que la variable h esta asociada con el registro $s2, y la dirección base de arreglo A esta en $s3, cual es el equivalente en asembler de? A[12] = h + A[8]

Memoria Asumiendo que la variable h esta asociada con el registro $s2, y la dirección base de arreglo A esta en $s3, cual es el equivalente en asembler de? A[12] = h + A[8] lw $t0, ($s3) # Temp $t0 gets A[8] add $t0, $s2,$t0 # Temp $t0 gets h+a[8] sw $t0, 48($s3) # Store h+a[8] into A[12]

Interconexión del Procesador y Memoria La memoria se ve como un arreglo de ubicaciones de almacenamiento con direcciones Una dirección de memoria es un índice para el arreglo read addr/ write addr Processor read data Memory numero posible de ubicaciones? write data bits

Interconexión del Procesador y Memoria La memoria se ve como un arreglo de ubicaciones de almacenamiento con direcciones Una dirección de memoria es un índice para el arreglo read addr/ write addr Processor read data Memory? 2 2 30 words ubicaciones write data bits

Tipos de datos MIPS Bit: 0, 1 Bit String: secuencia de bits de un largo particular 4 bits is a nibble 8 bits is a byte 16 bits is a half-word bits (4 bytes) is a word 64 bits is a double-word Caracter: ASCII 7 bit code Decimal: dígitos 0-9 codificados como 0000b a 1001b dos dígitos decimales por cada byte de 8 bits Integers: complemento 2's Floating Point

Direcciones de Bytes Dado que bytes de 8-bits son tan útiles, la mayoría de las arquitecturas direccionan bytes individuales de la memoria Entonces, la dirección de memoria de una palabra tiene que ser un múltiple de 4 (restricción de alineamiento) Procesadores MIPS generalmente pueden ser configurados como Big o Little Endian. Big Endian: byte de la izquierda es dirección de word IBM 360/370, Motorola 68k, Sparc, HP PA Little Endian: byte de la derecha es dirección de word Intel 80x86, DEC Vax, DEC Alpha (Windows NT)

Direcionamiento: Endianess y Alineamiento Big Endian: byte de la izquierda es dirección de word Little Endian: byte de la derecha es dirección de word little endian msb lsb big endian Aligned 0 1 2 3 Not Aligned

Direcionamiento: Endianess y Alineamiento Big Endian: byte de la izquierda es dirección de word Little Endian: byte de la derecha es dirección de word 3 2 1 0 little endian byte 0 msb lsb 0 1 2 3 big endian byte 0 Aligned 0 1 2 3 Not Aligned

Direccionamiento de Memoria en MIPS La dirección de memoria se forma sumando la parte constante de la instrucción y el contenido del segundo registro (base) (Asumir Little Endian) $s3 holds 8 Memory... 0 1 1 0... 0 1 0 1... 1 1 0 0... 0 0 0 1... 0 0 1 0... 1 0 0 0... 0 1 0 0 Data 24 20 16 12 8 4 0 Word Address lw $t0, 4($s3) #que? se carga en $t0 sw $t0, 8($s3) #$t0 se almacena adonde?

Direccionamiento de Memoria en MIPS La dirección de memoria se forma sumando la parte constante de la instrucción y el contenido del segundo registro (base) $s3 holds 8... 0001 Memory... 0 1 1 0... 0 1 0 1... 1 1 0 0... 0 0 0 1... 0 0 1 0... 1 0 0 0... 0 1 0 0 Data 0 Word Address... 0001 lw $t0, 4($s3) #que? se carga en $t0 24 20 16 12 8 4 sw $t0, 8($s3) #$t0 se almacena adonde? en ubicación 16

Compilando con Loads and Stores Si la variable b se almacena en $s2 y la dirección base de un arreglo A esta en $s3, cual es el código assembler MIPS para el siguiente código en C? A[8] = A[2] - b... A[3] A[2] A[1] A[0]... $s3+12 $s3+8 $s3+4 $s3

Compilando con Loads and Stores Si la variable b se almacena en $s2 y la dirección base de un arreglo A esta en $s3, cual es el código assembler MIPS para el siguiente código en C? A[8] = A[2] - b... A[3] A[2] A[1] A[0]... $s3+12 $s3+8 $s3+4 $s3 lw $t0, 8($s3) sub $t0, $t0, $s2 sw $t0, ($s3)

Compilando con un índice de un arreglo Asumiendo que A es un arreglo de 50 elementos para los cuales su base esta en $s4, y que las variables b, c, i están en $s1, $s2, y $s3 respectivamente. Cual es el código MIPS para la siguiente línea en C? c = A[i] - b add $t1, $s3, $s3 #array index i is in $s3 add $t1, $t1, $t1 #temp reg $t1 holds 4*i

Compilando con un índice de un arreglo Asumiendo que A es un arreglo de 50 elementos para los cuales su base esta en $s4, y que las variables b, c, i están en $s1, $s2, y $s3, respectivamente, cual es el código MIPS para la siguiente línea en C? c = A[i] - b add $t1, $s3, $s3 #array index i is in $s3 add $t1, $t1, $t1 #temp reg $t1 holds 4*i add $t1, $t1, $s4 #addr of A[i] lw $t0, 0($t1) sub $s2, $t0, $s1

Instrucciones MIPS hasta ahora Category Instr Op Code Example Meaning Arithmetic add 0 and add $s1, $s2, $s3 $s1 = $s2 + $s3 (R format) subtract 0 and 34 sub $s1, $s2, $s3 $s1 = $s2 - $s3 Data load word 35 lw $s1, 100($s2) $s1 = Memory($s2+100) transfer store word 43 sw $s1, 100($s2) Memory($s2+100) = $s1 (I format)

Repaso: Organización MIPS Instrucciones aritméticas hacia/desde register file Instrucciones load/store hacia/desde memoria Processor Memory 1 1100 src1 addr 5 src2 addr 5 dst addr 5 write data Register File registers ($zero - $ra) bits src1 data src2 data read/write addr read data write data ALU 7 6 5 4 3 2 1 0 byte address (little Endian) bits 0 1100 0 1000 0 0100 0 0000 2 30 words word address (binary)

Nombres de registros 0 $zero constant 0 (Hdware) 1 $at reserved for assembler 2 $v0 expression evaluation & 3 $v1 function results 4 $a0 arguments 5 $a1 6 $a2 7 $a3 8 $t0 temporary: caller saves... (callee can clobber) 15 $t7 16 $s0 callee saves... (caller can clobber) 23 $s7 24 $t8 temporary (cont d) 25 $t9 26 $k0 reserved for OS kernel 27 $k1 28 $gp pointer to global area 29 $sp stack pointer 30 $fp frame pointer 31 $ra return address (Hdware)

Representación Binaria Sin Signo (Unsigned) Hex Binary Decimal 0x00000000 0 0000 0 0x00000001 0 0001 1 2 31 2 30 2 29... 2 3 2 2 2 1 2 0 valor del bit 0x00000002 0x00000003 0x00000004 0 0010 0 0011 0 0100 2 3 4 31 30 29... 3 2 1 0 posición 1 1 1... 1 1 1 1 bit 0x00000005 0 0101 5 0x00000006 0x00000007 0 0110 0 0111 6 7 1 0 0 0... 0 0 0 0-1 0x00000008 0 1000 8 0x00000009 0 1001 9 2-1 0xFFFFFFFC 0xFFFFFFFD 1 1100 1 1101 2-4 2-3 0xFFFFFFFE 0xFFFFFFFF 1 1110 1 1111 2-2 2-1

Representación Binaria con Signo (Signed) 1011 y suma un 1 1010 complementa los bits 2 sc binary decimal -2 3 = 1000-8 -(2 3-1) = 1001-7 1010-6 1011-5 1100-4 1101-3 1110-2 1111-1 0000 0 0001 1 0010 2 0011 3 0100 4 0101 5 0110 6 2 3-1 = 0111 7

Instrucción Aritmética en Machine Language Instrucciones como registros y words de datos son de bits de largo Ejemplo: add $t0, $s1, $s2 Registros tienen números Formato de instrucción aritmética: $t0=$8, $s1=$17, op rs rt rd shamt funct 000000 10001 10010 01000 00000 100000 Para que son los nombres de los campos?

Instrucción Aritmética en Machine Language Instrucciones como registros y words de datos son de bits de largo Ejemplo: add $t0, $s1, $s2 Registros tienen números Formato de instrucción aritmética: $t0=$8, $s1=$17, op rs rt rd shamt funct 000000 10001 10010 01000 00000 100000 Cuales son los nombres de los campos?

Nombres de los campos en MIPS op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits = bits op rs rt rd shamt funct

Nombres de los campos en MIPS op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits = bits op rs rt rd shamt funct Opcode indicando la operación (instrucción) Dirección del primer registro (source) operando Dirección del segundo registro (source) operando Dirección del registro destino Cantidad de rotación (para instrucción de rotación) Código de función que selecciona variante de la operación especificada en opcode

Lenguaje de Maquina Instruccion Load Considere las instrucciones para load-word y store-word Introduce un nuevo tipo de formato de instrucción I-type para transferencia de datos formato previo era R-type para registros Ejemplo: lw $t0, 24($s2) op rs rt 16 bit number 35 18 8 24 100011 10010 01000 0000000000011000

Lenguaje de Maquina Instruccion Load Considere las instrucciones para load-word y store-word Introduce un nuevo tipo de formato de instrucción I-type para transferencia de datos formato previo era R-type para registros Ejemplo: lw $t0, 24($s2) op rs rt 16 bit number 35 18 8 24 100011 10010 01000 0000000000011000

Dirección de Memoria Ejemplo: lw $t0, 24($s2) 24 10 + $s2 = Memory 0xf f f f f f f f 0x00000002 $s2 0x12004094 El offset puede ser positivo o negativo data 0x0000000c 0x00000008 0x00000004 0x00000000 word address (hex)

Ubicación de Dirección de Memoria Ejemplo: lw $t0, 24($s2) Memory 0xf f f f f f f f 24 10 + $s2 =... 1001 0100 +... 0001 1000... 1010 1100 = 0x120040ac 0x00000002 0x120040ac $s2 0x12004094 El offset puede ser positivo o negativo data 0x0000000c 0x00000008 0x00000004 0x00000000 word address (hex)

Lenguaje de Maquina Instruccion Store Ejemplo: sw $t0, 24($s2) op rs rt 16 bit number 43 18 8 24 101011 10010 01000 0000000000011000 Una dirección de 16-bits significa que acceso esta limitado a ubicaciones de memoria dentro de una región de ±2 13 o 8,192 words (±2 15 o,768 bytes) en el rango de direcciones del registro base $s2

Lenguaje de Maquina Instruccion Store Ejemplo: sw $t0, 24($s2) op rs rt 16 bit number 43 18 8 24 101011 10010 01000 0000000000011000 Una dirección de 16-bits significa que acceso esta limitado a ubicaciones de memoria dentro de una región de ±2 13 o 8,192 words (±2 15 o,768 bytes) en el rango de direcciones del registro base $s2

Código Assembler Recuerde el programa que se hizo anteriormente A[8] = A[2] - b lw $t0, 8($s3) #load A[2] into $t0 sub $t0, $t0, $s2 #subtract b from A[2] sw $t0, ($s3) #store result in A[8] Cual seria el código maquina para estas instrucciones?

Código Assembler Recuerde el programa que se hizo anteriormente A[8] = A[2] - b lw $t0, 8($s3) #load A[2] into $t0 sub $t0, $t0, $s2 #subtract b from A[2] sw $t0, ($s3) #store result in A[8] El código MIPS es el siguiente: lw 35 19 8 8 sub 0 8 18 8 0 34 sw 43 19 8

Repaso: Tipos de datos MIPS Bit: 0, 1 Bit String: secuencia de bits de un largo particular 4 bits is a nibble 8 bits is a byte 16 bits is a half-word bits (4 bytes) is a word 64 bits is a double-word Caracter: ASCII 7 bit code Decimal: dígitos 0-9 codificados como 0000b a 1001b dos dígitos decimales por cada byte de 8 bits Integers: complemento 2's Floating Point

ASCII La mayoría de las computadoras usan bytes de 8 bits para representar caracteres con ASCII (American Std Code for Info Interchange) ASCII 0 1 2 3 4 5 6 7 8 9 10 11 12 Char Null EOT ACK bksp tab LF FF ASCII 33 34 35 36 37 38 39 40 41 42 43 44 Char space! # $ % & ( ) * +, ASCII 48 49 50 51 52 53 54 55 56 57 58 59 60 Char 0 1 2 3 4 5 6 7 8 9 : ; < ASCII 64 65 66 67 68 69 70 71 72 73 74 75 76 Char @ A B C D E F G H I J K L ASCII 96 97 98 99 100 101 102 103 104 105 106 107 108 Char ` a b c d e f g h i j k l ASCII 112 113 114 115 116 117 118 119 120 121 122 123 124 Char p q r s t u v w x y z { 15 47 / 63? 79 O 111 o 127 DEL Por eso necesitamos instrucciones para mover bytes

Leyendo y Guardando (Load/Store) Bytes MIPS provee instrucciones para mover bytes lb sb $t0, 1($s3) #load byte from memory $t0, 6($s3) #store byte to memory op rs rt 16 bit number Que 8 bits se leen y guardan? load byte pone el byte de memoria en los 8 bits mas a la derecha del registro destino que pasa con los otros bits del registro? store byte toma el bite de los 8 bits mas a la derecha del registro y los escribe a un byte en la memoria

Ejemplo: Leyendo y Guardando Bytes Dado el siguiente código cuales son los valores de memoria y los registros después de ejecutarlo? add $s3, $zero, $zero lb $t0, 1($s3) sb $t0, 6($s3) Memory 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 4 0 2 F F F F F F F F 0 0 9 0 1 2 A 0 Data 24 20 16 12 8 4 Que queda en $t0 si la maquina es big Endian? Y si la maquina fuera little Endian? 0 Word Address (Decimal) mem(4) = 0xFFFF90FF $t0 = 0x00000090 mem(4) = 0xFF12FFFF $t0 = 0x00000012

Repaso: Instrucciones MIPS hasta ahora Category Instr Op Code Example Meaning Arithmetic add 0 and add $s1, $s2, $s3 $s1 = $s2 + $s3 (R format) subtract 0 and 34 sub $s1, $s2, $s3 $s1 = $s2 - $s3 Data load word 35 lw $s1, 100($s2) $s1 = Memory($s2+100) transfer store word 43 sw $s1, 100($s2) Memory($s2+100) = $s1 (I format) load byte lb $s1, 101($s2) $s1 = Memory($s2+101) store byte 40 sb $s1, 101($s2) Memory($s2+101) = $s1

Repaso: MIPS R3000 ISA Categorías Leer/Guardar (Load/Store) Aritméticas (Computational) Jump and Branch Punto Flotante (Floating Point) coprocessador Memory Management Special Registers R0 - R31 PC HI LO 3 Formatos: todos de bits 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits OP rs rt rd shamt funct OP rs rt 16 bit number OP 26 bit jump target R format I format