ELO311 Estructuras de Computadores Digitales. Ambiente de Ejecución de Funciones
|
|
- Gabriel Márquez Ríos
- hace 5 años
- Vistas:
Transcripción
1 ELO311 Estructuras de Computadores Digitales Ambiente de Ejecución de Funciones 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 material del curso anterior ELO311 del Prof. Leopoldo Silva material del curso CSE331 de Mary Jane Irving de Penn State
2 Repaso: Organización MIPS hasta ahora src1 addr src2 addr dst addr write data Processor Register File 32 registers ($zero - $ra) 32 bits src1 data src2 data read/write addr 32 Memory words Exec br offset PC 32 Add 32 4 Fetch 32 PC = PC+4 Decode Add 32 ALU 32 read data write data byte address (little Endian) 32 bits word address (binary)
3 Repaso: MIPS ISA hasta ahora Category Instr Op Code Example Meaning Arithmetic add 0 and 32 add $s1, $s2, $s3 $s1 = $s2 + $s3 (R & I format) subtract add immediate 0 and 34 8 sub $s1, $s2, $s3 addi $s1, $s2, 6 $s1 = $s2 - $s3 $s1 = $s2 + 6 or immediate 13 ori $s1, $s2, 6 $s1 = $s2 v 6 Data Transfer (I format) load word store word load byte lw $s1, 24($s2) sw $s1, 24($s2) lb $s1, 25($s2) $s1 = Memory($s2+24) Memory($s2+24) = $s1 $s1 = Memory($s2+25) store byte 40 sb $s1, 25($s2) Memory($s2+25) = $s1 load upper imm 15 lui $s1, 6 $s1 = 6 * 2 16 Cond. Branch (I & R format) br on equal br on not equal set on less than set on less than immediate and beq $s1, $s2, L bne $s1, $s2, L slt $s1, $s2, $s3 slti $s1, $s2, 6 if ($s1==$s2) go to L if ($s1!=$s2) go to L if ($s2<$s3) $s1=1 else $s1=0 if ($s2<6) $s1=1 else $s1=0 Uncond. Jump (J & R format) jump jump register jump and link 2 0 and 8 3 j 2500 jr $t1 jal 2500 go to go to $t1 go to 10000; $ra=pc+4
4 Repaso: Registros MIPS Nombre $zero $v0 - $v1 $a0 - $a3 $t0 - $t7 $s0 - $s7 $t8 - $t9 $gp $sp $fp $ra Numero Registro Uso the constant 0 returned values arguments temporaries saved values temporaries global pointer stack pointer frame pointer return address Debe preservar en llamada? n.a. no no no yes no yes yes yes yes
5 Lenguajes Interpretados vs Compilados Un interpretador es un programa que ejecuta otros programas. Scheme Java bytecode Java C++ C Assembly machine language Fácil de programar Ineficiente para Interpretar Eficiente para interpretar Difícil de programar Traducción de lenguajes es otra opción. En general, se interpreta un lenguaje de alto nivel (e.g. Java) cuando su eficiencia no es critica y se traduce a un lenguaje de nivel mas bajo para mejorar su desempeño.
6 Jerarquía de Traducción del Código C program compiler assembly code assembler object code library routines linker machine code executable loader memory
7 Compilador Transforma el programa C en un programa en asembler Ventajas de lenguajes de alto nivel (e.g. C) Menor numero de líneas de código Mas fácil entender y depurar Los compiladores de hoy pueden producir código asembler casi tan bueno como el de un programador experto, muchas veces mejor para programas grandes Código mas pequeño significa ejecución mas rápida y menor consumo de energía
8 Ensamblador (Assembler) Transforma código assembler en código objeto (e.g. código de maquina) Ventajas del assembler Mucho mas fácil que recordar códigos binarios (e.g op codes) Se puede usar etiquetas para direcciones y dejar que el ensamblador haga los calculos de saltoscan use labels for addresses and let the assembler do the arithmetic Se pueden usar seudo instrucciones (e.g. macros) Hay que recordar que el código de maquina es la realidad que se ejecuta Cuando se considera la eficiencia de cierto código hay que contar las instrucciones reales ejecutadas no el tamaño del código
9 Otras Tareas del Ensamblador Determina direcciones binarias correspondientes a las etiquetas (e.g de saltos y bifurcaciones) Mantiene información de las etiquetas usadas en bifurcaciones y transferencias de datos en una tabla de símbolos Pares de símbolos y direcciones Convierte seudo instrucciones en código asembler legal Usa el registro $at para esto Convierte bifurcaciones a ubicaciones lejanas en una bifurcación seguida de un salto (jump) Convierte instrucciones con valores inmediatos grandes en load upper (e.g. lui) seguido por un or inmediato (e.g. ori) Convierte números especificados en decimal y hex en sus binarios correspondientes Convierte caracteres a los valores binarios especificados por la tabla ASCII
10 Partes de un Archivo Objeto Encabezado de Archivo Objeto: tamaño y posición de los siguientes elementos Modulo Text: código de objeto (e.g. código maquina) Modulo de Data: datos que acompañan al código Datos estáticos datos que duran toda la vida del programa (e.g. globales) Datos dinámicos crecen y se achican a medida que el programa los usa Información de reubicación (Relocation information): identifica instrucciones que están localizados en direcciones absolutas esas que no son relativas a un registro (e.g., jump destination addr) Tabla de símbolos: etiquetas que no están definidas (e.g., referencias a funciones o datos externos) Información para la depuración
11 Organización de Memoria en MIPS (spim) $sp Memory Mem Map I/O f f f f f f f c Kernel Code & Data Stack 7f f e f f fc 2 30 words $gp PC Dynamic data Static data Your Code Reserved OS
12 Enlazador (Linker) Toma todo el código objeto ensamblado previamente y lo enlaza Mucho mas rápido que juntar el código maquina a mano! Decide en el patrón de la ubicación de código y datos para cada segmento de código objeto Cada segmento de código objeto fue ensamblado separadamente y cada uno asume que el comienzo de su código es 0x y que el comienzo de sus datos estáticos es 0x Las direcciones absolutas (e.g. Absolute addresses) tienen que ser reubicadas (e.g relocated) para reflejar el punto de comienzo de cada modulo de código y datos Usa la información en la(s) tablas de símbolos para resolver todas etiquetas indefinidas Bifurcaciones, saltos y direcciones de datos a segmentos externos
13 Cargador (e.g. Loader) Copia el código ejecutable almacenado en disco a la memoria en la dirección de comienzo establecida por el sistema operativo Inicializa los registros de maquina y también el puntero al stack a la primera ubicación libre (0x7ffe fffc) Copia los parámetros (si es que hay) al stack Salta a la rutina de comienzo (e.g. start-up routine) en la dirección del PC 0x on xspim La rutina de comienzo copia los parámetros de main a los registros de argumentos y después llama el código de main con un jal main
14 Ejemplo: foo.c C program: foo.c Compiler Assembly program: foo.s Assembler Object(mach lang module): foo.o Linker lib.o Executable(mach lang pgm): a.out Loader Memory
15 Ensamblador (assembler) Input: Código assembler (e.g., foo.s para MIPS) Output: Código Objeto, (e.g., foo.o para MIPS) Lee y usa Directivos Remplaza seudo instrucciones (Macros) Seudo instrucciones son instrucciones de conveniencia (utilidad) que corresponden a múltiples instrucciones reales (se expanden en machine language a instrucciones reales) Produce código de maquina (Machine Language) Crea archivo objeto (Object File)
16 Directivos Dan instrucciones al ensamblador y depurador.text: Poner items subsecuentes en segmento de texto (machine code).data: Poner items subsecuentes en segmento de datos (representacion binaria de datos en archivo fuente).globl sym: declara sym como global y puede ser referenciado de otros archivos.asciiz str: Almacenar string str en memoria y terminarlo con nulo.word w1 wn: Almacenar los n items en palabras sucesivas de 32-bits en memoria.half h1 hn: Almacenar los n items en ½ palabras sucesivas de 16-bits en memoria.byte b1 bn: Almacenar los n items en bytes sucesivos en memoria.align n: Alinea la memoria para que los datos comiencen en una ubicación correcta dado el tamano de los datos (alinea los datos en una celda de memoria capaz de contener 2 n bytes)
17 Directivos II.frame frame-reg, offset, return_pc_reg Específica el registro a usar para el stack, tamaño del contexto del stack (offset) en palabras y el registro con dirección de retorno. Ejemplo:.frame sp, 24, ra Indica un stack usando sp de 24 bytes y dirección de retorno ra.mask mask_addr, offset Declara cuales registros han sido guardados, permitiendo que el depurador localice variables guardadas en el stack. offset indica la ubicación del registro almacenado en la direccion mas alta relativa al puntero del frame. Ejemplo:.mask 0x , -4 Indica que se guardo el registo $31 en el stack y que el registro almacenado en la dirección mas alta (highest address) esta a 4 bytes menos que el frame pointer (i.e. el TOF o Top Of Frame).
18 Reemplazo de seudo instrucciones Pseudo: Real: subu $sp,$sp,32 addiu $sp,$sp,-32 sd $a0, 32($sp) mul $t7,$t6,$t5 move $t0, $t6 sw $a0, 32($sp) sw $a1, 36($sp) mult $t6,$t5 mflo $t7 addu $t0, $t6, $zero o or $t0, $t6, $zero addu $t0,$t6,1 ble $t0,100,loop addiu $t0,$t6,1 slti $at,$t0,101 bne $at,$0,loop la $t1, i (en 0x ) lui $t1,0x1001 ori $t1,$t1,0x0004 Nota: macro mul $t7,$t6,$t5 significa $t7 = $t6 * $t5 (resultado en registro $t7 de 32bits) mult $t6,$t5 significa {Hi, Lo} = $t6 * $t5 (guardando resultado en regs. Hi,Lo) se rescata el resultado usando mflo y mfhi, mult no chequea overflow
19 Variables Se denominan variables locales a las definidas dentro de una función. En assembler se requiere tener una zona de la memoria en que se almacenarán estas variables. De tal modo que cuando se ingresa a una función, se crea el espacio en el stack; y cuando se sale de la función el espacio es devuelto, y puede ser reutilizado por otras variables locales. El compilador intenta emplear el máximo de variables locales localizadas en registros (e.g. $s0, $s1,, $s7, $t0 ) Las variables locales que deseen ser almacenadas en registros, se emplean los registros $sn (pero deben ser preservados sus contenidos antes de ser empleados por la función, y recuperados sus valores originales antes de salir de la función) esto es por si otras funciones necesitan los valores previamente guardados en $sn. Durante la ejecución pueden emplearse libremente los registros $tn Los argumentos se pasan en los registros $a0 hasta $a4 Los valores de retorno usan registros $v0 y $v1
20 Ejemplo: Un programa simple Este ejemplo, en C, muestra un programa simple: int i = 0; void main(void) { i = 5; }
21 Ejemplo: Un programa simple (cont) En assembler:.data 0x # comienzo segmento datos i:.word 0.text.globl main main: # inicia variable i, en zona estática, con constante 5. li $t3, 5 # t3=5 Macro que puede escribirse: # ori $t3,$zero,5
22 Ejemplo: Un programa simple (cont) En assembler: la $t0, i # t0=&i t0 es un puntero. Apunta a # variable i. # sin usar macro la: lui $t0, 0x1001 # ori $t0, $t0, 0x0000 sw $t3, 0($t0) # *t0=t3 Escribe en lo que apunta t0: i=5 # Los 2 comandos anteriores pueden escribirse con macro: sw $t3, i($zero) jr ra
23 Ejemplo: Un programa simple2 El siguiente programa declara algunas variables int i1 = 0, i2 = 1; int arr[5] = { 0, 1, 2, 3, 4}; char ch[] = "Hola"; int main(void) { // como j1 y j2 no se usan int j1, j2; // lcc no guarda espacio en return(0); // el stack para ellas }
24 Ejemplo: Un programa simple2 (cont) Version en assembler.set reorder.globl i1.sdata.align 2 i1:.word 0x0.globl i2.sdata.align 2 i2:.word 0x1 # Permite que el assembler reordene instrucciones # i1 es una referencia global # small data define memoria en una region de 64KB # alineamiento de palabra
25 Ejemplo: Un programa simple2 (cont)....globl arr.data.align 2 arr:.word 0x0.word 0x1.word 0x2.word 0x3.word 0x4.globl ch.data.align 0 ch:.byte 72.byte 111.byte 108.byte 97.byte 0 # arr es una referencia global # data contiene memoria con simbolo que se direccionan # con 32 bits # ch es una referencia global
26 Ejemplo: Un programa simple2 (cont)....globl main # main es una referencia global.text # esta region es de instrucciones (codigo).align 2.ent main # inicio de funcion main main:.frame $sp,0,$31 addu $2,$0, $0 # setear valor de retorno: $v0=0 L.1: jr $31 # retornar de la funcion: jr $ra.end main # fin de funcion main # frame de funcion main de tamaño zero (no se usan)
27 Ejemplo: Un programa simple2 (versión 2) El siguiente programa declara algunas variables int i1 = 0, i2 = 1; int arr[5] = { 0, 1, 2, 3, 4}; char ch[] = "Hola"; int main(void) { int j1=0; // guarda espacio en el stack j1=j1 + 5; return(j1); }
28 Ejemplo: Un programa simple2 (cont) Version en assembler.set reorder.globl i1.sdata.align 2 i1:.word 0x0.globl i2.sdata.align 2 i2:.word 0x1 # Permite que el assembler reordene instrucciones # i1 es una referencia global # small data define memoria en una region de 64KB # alineamiento de palabra
29 Ejemplo: Un programa simple2 (cont)....globl arr.data.align 2 arr:.word 0x0.word 0x1.word 0x2.word 0x3.word 0x4.globl ch.data.align 0 ch:.byte 72.byte 111.byte 108.byte 97.byte 0 # arr es una referencia global # data contiene memoria con simbolo que se direccionan # con 32 bits # ch es una referencia global
30 Ejemplo: Un programa simple2 (cont)....globl main # main es una referencia global.text # esta region es de instrucciones (codigo).align 2.ent main # inicio de funcion main main:.frame $sp,4,$31 # frame de funcion main de cuatro palabras addu $sp,$sp,-4 # setear stack.mask 0x ,-4 # se guarda el registro $30 ($fp usado como $s8) sw $30,0($sp) # guardar $fp en el stack : 0($sp) move $30,$0 # $pf = 0 la $30,5($30) # $fp = $fp + 5 addu $2,$30, $0 # setear valor de retorno: $v0=$fp L.1: lw $30,0($sp) # restaura $fp del stack addu $sp,$sp,4 # restaura el stack jr $31 # retornar de la funcion: jr $ra.end main # fin de funcion main
31 Llamadas al sistema Para llamar al sistema operativo se usa la llamada syscall. syscall tambien se usa para hacer operaciones en punto flotante con el coprocesador. En el caso del MIPS, el coprocesador de punto flotante es el número 1. Existen 32 registros de punto flotante de 32 bits cada uno. Para manipular doubles se emplean registros pares; el par más el impar siguiente forman el espacio para el doble.
32 Llamadas al sistema (cont) Se ilustran algunas instrucciones para usar con el coprocesador Cop. z (0...3): lwcz Reg, 0($t2) #Load Word into Cop. z register Reg swcz Reg, 0($t2) #Store Word from Cop. z register Reg mfcz CPSrc, CPUDestt #Move from to Coproc. z to CPU CPdest mtcz CpuSrc, CPdest #Move from CpuSrc To Coproc.z reg. CPdest bczt label #Branch to label if Coprocessor z flag is set (True) bczf label #Branch to label if Coprocessor z flag not set (False) #Se emplean después de comparaciones en punto flotante
33 Ejemplo: Sumar dos números El siguiente segmento en C, produce la suma de dos números en punto flotante: #include <stdio.h> float x = 1.1; float y = 2.2; float z1, z2; int main (void) { z1 = x + y; printf("%f\n",z1); } z2 = x * y; printf("%f\n",z2); return(0);
34 Ejemplo: Sumar dos números (cont) Se traslada al siguiente código assembler:.data x:.float 1.1 # Variables en segmento de datos y:.float 2.2 # 0.22e+1 en notación científica. z1:.float 0.0 z2:.float 0.0 newline:.asciiz "\n".text.globl main main: la $t0, x # t0 = &x lwc1 $f0, 0($t0) # f0 = x (lectura desde memoria) la $t0, y lwc1 $f2, 0($t0) # f2 = y add.s $f4, $f0, $f2 # f4 = x + y
35 Ejemplo: Sumar dos números (cont) la $t0, z1 swc1 $f4, 0($t0) # t0 = &z1 # *t0 = f4 z1 = x + y (escritura en memoria) mov.s $f12, $f4 # argumento en $f12 li $v0,2 # print float syscall la $a0, newline # argumento en $a0 li $v0,4 # print string syscall mul.s $f4, $f0, $f2 la $t0, z2 swc1 $f4, 0($t0) # f4 = x * y # t0 = &z2 # *t0 = f4 z2 = x * y
36 Ejemplo: Sumar dos números (cont) mov.s $f12, $f4 # argumento en $f12 li $v0, 2 # print float syscall la $a0, newline # argumento en $a0 li $v0, 4 # print string syscall li $v0, 10 # exit Retorno al monitor. syscall Notar que se emplean registros pares para flotantes en simple precisión. El llamado número 10 al sistema retorna a la primera instrucción del trap handler, que opera como un monitor( o sistema operativo primitivo).
ELO311 Estructuras de Computadores Digitales. Operaciones MIPS para Control de flujo
ELO311 Estructuras de Computadores Digitales Operaciones MIPS para Control de flujo Tomás Arredondo Vidal Este material está basado en: material de apoyo del texto de David Patterson, John Hennessy, "Computer
Más detallesGeneración de un ejecutable
ASSEMBLER Generación de un ejecutable Programa de alto nivel Programa Compiler Assembler Linker Archivo Ejecutable Programa en lenguaje assembler Archivo Fuente Assembler Archivo Objeto Archivo Fuente
Más detallesEstructura de Computadores 2 [08/09] Entrada/Salida en procesadores MIPS
Estructura de Computadores 2 [08/09] Entrada/Salida en procesadores MIPS GAC: Grupo de Arquitectura de Computadores Dpt. Electrónica e Sistemas. Universidade da Coruña. Bibliografía Computer Organization
Más detallesELO311 Estructuras de Computadores Digitales. Estructuras de Datos
ELO311 Estructuras de Computadores Digitales Estructuras de Datos Tomás Arredondo Vidal Este material está basado en: material de apoyo del texto de David Patterson, John Hennessy, "Computer Organization
Más detallesELO311 Estructuras de Computadores Digitales. Ensamblador MIPS
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 &
Más detallesEl repertorio de instrucciones
El repertorio de instrucciones Montse Bóo Cepeda Este trabajo está publicado bajo licencia Creative Commons Attribution- NonCommercial-ShareAlike 2.5 Spain. Estructura del curso 1. Evolución y caracterización
Más detallesPlataformas de soporte computacional: arquitecturas avanzadas,
Plataformas de soporte computacional: arquitecturas avanzadas, sesión Diego R. Llanos, Belén Palop Departamento de Informática Universidad de Valladolid {diego,b.palop}@infor.uva.es Índice. Arquitectura
Más detallesGrupo de Arquitectura y Tecnología de Computadores (ARCOS)
Grupo de Arquitectura y Tecnología de Computadores (ARCOS) http://arcos.inf.uc3m.es/~ec 2 http://arcos.inf.uc3m.es/~ec 4 http://arcos.inf.uc3m.es/~ec 5 http://arcos.inf.uc3m.es/~ec 6 Código fuente en
Más detallesOrganización de Computadoras. Principios de Conjuntos de Intrucciones
Organización de Computadoras Principios de Conjuntos de Intrucciones Clasifición de las ISA Secuencia de Código para C = A + B Stack Acumulador Registro (Reg-Mem) Registro (load-store) Push A Load A Load
Más detallesFundamentos de los Computadores Grado en Ingeniería Informática
Repaso Arquitectura MIPS Fundamentos de los Computadores Grado en Ingeniería Informática Arquitectura MIPS Registros Instrucciones Organización de memoria Formato de las instrucciones Modos de direccionamiento
Más detallesProcesador MIPS - Registros
MIPS Microprocessor without Interlocked Pipeline Stages Surgió a comienzos de los 80 en Stanford. Sintetiza las principales ideas de RISC. Arquitectura eficiente y simple. 1 Procesador MIPS - Registros
Más detallesTema 3 (III) Fundamentos de la programación en ensamblador
Tema 3 (III) Fundamentos de la programación en ensamblador Grupo ARCOS Estructura de Computadores Grado en Ingeniería Informática Universidad Carlos III de Madrid Contenido } Fundamentos básicos de la
Más detallesOrganizació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 I Verano MIPS (2 de 2) Basado en el capítulo 2 del libro de Patterson y Hennessy Verano 2014 Profesora Borensztejn Arquitectura MIPS (R2000) Registros Formato de Instrucción
Más detallesOrganización procesador MIPS
Organización procesador MIPS Organización MIPS Memoria CPU Registros FPU Registros Alu Mul Div Hi Lo U. Aritmética Traps Manejo de Memoria Organización MIPS Unidad Aritmética y Lógica (ALU). Unidad Aritmética
Más detallesUNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO311 Estructuras de Computadores Programación Assembler.
2. Creación del ambiente de trabajo. Una vez instalado el compilador cruzado lcc, éste queda en C:\Program Files\lcc\4.1 Conviene crear una subcarpeta para colocar los ejemplos. Sea ésta ej. En la carpeta
Más detallesCreación del ambiente de trabajo.
Capítulo 2. 1 Creación del ambiente de trabajo. Una vez instalado el compilador cruzado lcc, éste queda en C:\Program Files\lcc\4.1 Conviene crear una subcarpeta para colocar los ejemplos. Sea ésta ej.
Más detallesArquitectura de Computadores y laboratorio Clase 15: Arquitectura MIPS Pt.3. Departamento de Ingeniería de Sistemas Universidad de Antioquia 2011 2
Arquitectura de Computadores y laboratorio Clase 15: Arquitectura MIPS Pt.3 Departamento de Ingeniería de Sistemas Universidad de Antioquia 2011 2 Instrucciones de control de flujo Arquitectura de Computadores
Más detallesFunciones. Diseño de funciones. Uso de instrucción jal y retorno de subrutina.
MIPS Funciones 1 Funciones Diseño de funciones. Uso de instrucción jal y retorno de subrutina. Se suelen denominar funciones, procedimientos, subrutinas, subprogramas a las estructuras que emplean los
Más detallesMIPS. Universidad de Sonora 2
MIPS MIPS (Microprocessor without Interlocked Pipeline Stages) es una familia de microprocesadores RISC desarrollada por MIPS Technologies desde 1981 y por Imagination Technologies desde 2012. Principio
Más detalles3. Instrucciones: lenguaje de la máquina
3. Instrucciones: lenguaje de la máquina Fundamentos de Computadores Ingeniería de Telecomunicación Raúl Durán Díaz Departamento de Automática Escuela Politécnica Superior Curso académico 2009 2010 Raúl
Más detallesUnidad 3. Facultad de Ciencias Departamento de Electrónica
Universidad Autónoma de San Luis Potosí Facultad de Ciencias Departamento de Electrónica Unidad 3 Instrucciones: Lenguaje de la Computadora Dra. Ruth M. Aguilar Ponce Primavera Unidad 3 Operaciones del
Más detallesCuando se ejecuta un procedimiento, intrínsecamente se están realizando los siguientes pasos:
2.5 Soporte de procedimientos El manejo de procedimientos o rutinas es uno de los aspectos más importantes de la programación estructurada; por lo que cualquier repertorio de instrucciones debe de incluirlo
Más detallesLaboratorio 2: Uso de un Simulador MIPS32: PCSpim
Laboratorio 2: Uso de un Simulador MIPS32: PCSpim Objetivos. Dominar el uso de un simulador assembler y herramientas para la depuración de programas. Analizar la creación de frames en la invocación de
Más detallesPr. Dr. Xavier Bonnaire
Pr. Dr. Xavier Bonnaire Slide 1 Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María Temario Introducción Estructura Básica de un Computador Lenguaje de Máquina Básico Instrucciones para
Más detallesArquitectura del MIPS: Introducción
Arquitectura del MIPS: Introducción Montse Bóo Cepeda Este trabajo está publicado bajo licencia Creative Commons Attribution- NonCommercial-ShareAlike 2.5 Spain. Estructura del curso 1. Evolución y caracterización
Más detallesFundamentos y Arquitectura de Computadores (ITTSE UV)
REGISTROS DEL MIPS32 Nombre Código del Uso común registro $zero 0 El contenido de este registro siempre es nulo $v0 - $v1 2 3 Valores de retorno para las llamadas al sistema $a0 - $a3 4 7 Argumentos para
Más detallesEjercicios del Tema 3. Fundamentos de la programación en ensamblador
Ejercicios del Tema 3. Fundamentos de la programación en ensamblador Ejercicio 1. Dada la siguiente expresión de un lenguaje de alto nivel int a = 6; int b = 7; int c = 3; int d; d = (a+b) * (a+b); Indique
Más detallesEstructuras de Computadores I Tarea 02 02/99
Estructuras de Computadores I Tarea 02 02/99 1. Dada la secuencia de bits: 0011 0100 0101 0101 0100 0011 0100 0010 Qué representa, asumiendo que es: a. Un número entero en complemento dos. b. Fracción
Más detallesArquitectura de Computadoras
4-1 Arquitectura de Computadoras Tema 4: Arquitectura del Set de Instrucciones Eduardo Daniel Cohen dcohen@arnet.com.ar http://www.herrera.unt.edu.ar/arqcom 4-2 Arquitectura del Set de Instrucciones Indice
Más detallesAbstracción de bifurcaciones y saltos.
Capítulo 5. 1 Abstracción de bifurcaciones y saltos. 5.1. Operaciones lógicas. En el lenguaje C: Una expresión es falsa si su valor es cero; verdadera si es diferente de cero. Si el resultado de una operación
Más detallesUna expresión es falsa si su valor es cero; verdadera si es diferente de cero.
5. Abstracción de bifurcaciones y saltos. 5.1. Operaciones lógicas. En el lenguaje C: Una expresión es falsa si su valor es cero; verdadera si es diferente de cero. Si el resultado de una operación lógica
Más detallesFundamentos y Arquitectura de Computadores (ITTSE UV)
Fundamentos y Arquitectura de Computadores (ITTSE UV) F. Micó REGISTROS DEL MIPS R2000/R3000 Nombre Código del Uso registro $zero 0 Valor constante 0 $v0 - $v1 2 3 Valores de retorno para las llamadas
Más detallesArquitectura de Computadoras I Ingeniería de Sistemas Curso 2017
Arquitectura de Computadoras I Ingeniería de Sistemas Curso 217 Práctica de Laboratorio: Microprocesador MIPS Segmentado El objetivo de esta práctica es implementar el microprocesador MIPS (visto en clase
Más detallesSPIM: Un simulador del repertorio de instrucciones
SPIM: Un simulador del repertorio de instrucciones Por M. C. Felipe Santiago E. Para el curso: Arquitectura de Computadoras 1. Introducción SPIM es un simulador creado por el Dr. James Larus, graduado
Más detallesModelo de von Neumann
Conceptos básicos Modelo de von Neumann También conocida como arquitectura de Princeton. Propuesta por John von Neumann en 1945. Partes de una computadora digital: Unidad de procesamiento (CPU unidad central
Más detallesRegistros del MIPS y usos. Servicios del sistema
Registros del MIPS y usos Nombre del registro Número Uso zero 0 Constante de valor 0 at 1 Reservada para ensamblador v0 2 Evaluación de expresiones y resultado de funciones v1 3 Evaluación de expresiones
Más detallesArquitectura de Computadores II Clase #3
Arquitectura de Computadores II Clase #3 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Veremos Registros Repertorio de instrucciones Modos de direccionamiento El
Más detallesEl nivel ISA (II)! Conjunto de Instrucciones
El nivel ISA (II) Conjunto de Instrucciones EC-2721 Arquitectura del Computador I Que es un Conjunto de Instrucciones? Colección completa de instrucciones comprendida por un procesador Lenguaje de máquina
Más detallesREPERTORIO DE INSTRUCCIONES MIPS
Departamento de Informática Escuela Politécnica Universidad de Extremadura REPERTORIO DE INSTRUCCIONES MIPS Prácticas de la Asignatura ESTRUCTURA DE COMPUTADORES 2º Ingeniería Informática 2º Ingeniería
Más detallesUNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO311 Estructuras de Computadores
9.6. Números en Punto Flotante. Se denominan así a las representaciones internas al procesador que modelan a los números reales. En forma externa, se representan como números con coma ( 3.1415926 con punto),
Más detallesTema 3 (I) Fundamentos de la programación en ensamblador
Tema 3 (I) Fundamentos de la programación en ensamblador Grupo ARCOS Estructura de Computadores Grado en Ingeniería Informática Universidad Carlos III de Madrid Contenidos 1. Fundamentos básicos de la
Más detallesTema 6: Descripción del ISA del MIPS
Arquitectura de Computadores Tema 6: Descripción del ISA del MIPS Eduardo Daniel Cohen dcohen@arnet.com.ar http://www.herrera.unt.edu.ar/arqcom Arquitectura de Computadoras UNT D. Cohen 1 2014 Temario
Más detallesUNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO311 Estructuras de Computadores
6.5. Comunicación de las funciones con su entorno. Hasta el momento se ha conceptualizado una subrutina como un segmento de código que ocurre a menudo en un programa. La idea puede flexibilizarse y aumentar
Más detalles3.1. Definición de datos enteros como variables globales.
3. Variables. 3.. Definición de datos enteros como variables globales. El siguiente segmento ilustra una serie de definiciones de enteros inicializados. En C, se denomina definición de datos, la instancia
Más detallesEstructura de Computadores
Estructura de Computadores 4.- Programación en Ensamblador Parte IV Contenido Subrutinas. Llamadas al sistema. Página 2 Subrutinas Módulos de programa que pueden reutilizarse en distintos puntos del programa.
Más detallesFundamentos de los Computadores Grado en Ingeniería Informática (hasta final del diseño monociclo)
8. Diseño del Procesador Fundamentos de los Computadores Grado en Ingeniería Informática (hasta final del diseño monociclo) Objetivos Plantear y modificar una ruta de datos para un repertorio de instrucciones
Más detallesProgramación en ensamblador Ejercicios propuestos
Programación en ensamblador Ejercicios propuestos Ejercicio 1. Dada la siguiente expresión de un lenguaje de alto nivel int a = 6; int b = 7; int c = 3; int d; d = (a+b) * (a+b); Indique un fragmento de
Más detalles3.1. Definición de datos enteros como variables globales.
Capítulo 3. Variables. 3.. Definición de datos enteros como variables globales. El siguiente segmento ilustra una serie de definiciones de enteros inicializados. En C, se denomina definición de datos,
Más detallesEjercicio 1. Considere el siguiente fragmento en ensamblador:
UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES Para la realización del presente examen se dispondrá de 1:30 horas. NO se podrán
Más detallesTema 3 (III) Fundamentos de la programación en ensamblador
Tema 3 (III) Fundamentos de la programación en ensamblador Grupo ARCOS Estructura de Computadores Grado en Ingeniería Informática Universidad Carlos III de Madrid Contenidos } Fundamentos básicos de la
Más detallesvoid clear1( int array[], int size ) /* Versión con arreglos */ { int i; for( i = 0; i < size; i++) array[i] = 0; }
2.10 Apuntadores contra arreglos. El manejo de apuntadores es uno de los aspectos más interesantes en los lenguajes de programación; los apuntadores y los arreglos comparten algunas características, sin
Más detallesArquitectura del procesador MIPS R2000
Arquitectura del procesador MIPS R2000 Aula Virtual IS09 Sergio Barrachina Mir Área de Arquitectura y Tecnología de Computadores Dpt. de Ingeniería y Ciencia de los Computadores Universidad Jaume I Índice
Más detallesArquitectura de Computadoras. Simulador WINMIPS64
Arquitectura de Computadoras Simulador WINMIPS64 Procesador MIPS 32 registros de uso general: r0.. r31 (64 bits) excepto r0 siempre igual a 0 32 registros de punto flotante: f0.. f31 (64 bits) 2 30 palabras
Más detallesEjercicios del Tema 3. Fundamentos de la programación en ensamblador
Ejercicios del Tema 3. Fundamentos de la programación en ensamblador Ejercicio 1. Escriba un programa en ensamblador del MIPS 32 para calcular la suma de los 100 primeros números naturales. El programa
Más detallesProgramando sobre MIPS64
Programando sobre MIPS64 Escribir un programa en cualquier lenguaje involucra estructurar el código de forma que éste sea modular, extensible, simplede mantener y reutilizable. En assembly, eso involucra
Más detallesEl procesador. Diseño del control
El procesador Diseño del control Datapath MIPS simple Universidad de Sonora Arquitectura de Computadoras 2 MIPS simple El datapath anterior cubre instrucciones: Aritméticas-lógicas: add, sub, and, or y
Más detallesArquitecturas RISC. Arquitectura de Computadoras y Técnicas Digitales - Mag. Marcelo Tosini Facultad de Ciencias Exactas - UNCPBA
Arquitecturas RISC Características de las arquitecturas RISC Juego de instrucciones reducido (sólo las esenciales) Acceso a memoria limitado a instrucciones de carga/almacenamiento Muchos registros de
Más detallesLaboratorio 1 y 2: Programación en C, Assembler MIPS, y uso de Simulador MIPS32: PCSpim
Laboratorio 1 y 2: Programación en C, Assembler MIPS, y uso de Simulador MIPS32: PCSpim Objetivos. Estudiar algunos aspectos básicos de la programación en lenguaje C, y ambientes de programación integrados
Más detallesEl lenguaje ensamblador depende directamente de la arquitectura del computador. Por tanto cada arquitectura tiene su propio lenguaje ensamblador.
Estructura y Tecnología de Computadores (ITIG) Ángel Serrano Sánchez de León Luis Rincón Córcoles Programa 1. Introducción. 2. Registros. 3. Operaciones aritméticas básicas. 4. Accesos a memoria. Carga
Más detallesOrganización del Computador 1. CPU (ISA) Conjunto de Instrucciones de la Arquitectura 2017
Organización del Computador 1 CPU (ISA) Conjunto de Instrucciones de la Arquitectura 2017 Estructura de una máquina von Neumann Ciclo de Ejecución 1. 2. 3. 4. 5. 6. UC obtiene la próxima instrucción de
Más detallesLa Unidad Aritmética
Prof. Rodrigo Araya E. raraya@inf.utfsm.cl Universidad Técnica Federico Santa María Departamento de Informática Valparaíso, 1 er Semestre 2006 1 2 3 4 5 En este capítulo profundizaremos la aritmética computacional
Más detallesMIPS: Modelo de programación. (I Parte)
MIPS: Modelo de programación (I Parte) MIPS: Microprocessor without Interlocked Pipeline Stages Trabajaremos como MIPS Son similares a las desarrolladas en los años 80 Cerca de 100 millones de procesadores
Más detallesUNIDAD 2: Instrucciones: el lenguaje de las computadoras.
UNIDAD 2: Instrucciones: el lenguaje de las computadoras. 2.1 Introducción Para comandar una computadora se le debe hablar en su lenguaje. Las palabras del lenguaje de una máquina son llamadas instrucciones,
Más detalles8. Diseño de la codificación binaria del repertorio de Instrucciones.
8. Diseño de la codificación binaria del repertorio de Instrucciones. Se desea elegir los códigos binarios de las instrucciones. Esta parte, en forma indirecta especifica lo que debe realizar un programa
Más detallesArquitectura del CPU. Organización del Computador 1 Verano 2016
Arquitectura del CPU Organización del Computador 1 Verano 2016 Agenda De dónde venimos? Introducción: esquema de una computadora Representación de la información Circuitos Combinatorios Circuitos Secuenciales
Más detallesOrganización del Computador I Verano. MIPS (1 de 2) Basado en el capítulo 2 del libro de Patterson y Hennessy
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 2 del libro de Patterson y Hennessy Verano 2014 Profesora Borensztejn Lenguajes para la máquina Las computadoras son circuitos electrónicos,
Más detallesEl procesador. Datapath para las instrucciones de brinco
El procesador Datapath para las instrucciones de brinco Instrucciones de brinco Dos tipos de instrucciones de brincos: 1. Brinco condicional. beq $t0, $t1, Etiqueta ; if t0 == t1 goto Etiqueta 2. Brinco
Más detallesIntroducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones
Introducción a la Computación Capítulo 10 Repertorio de instrucciones: Características y Funciones Que es un set de instrucciones? La colección completa de instrucciones que interpreta una CPU Código máquina
Más detallesCompiladores e Intérpretes Generación de Código Máquina e Intérpretes
1 Compiladores e Intérpretes Generación de Código Máquina e Intérpretes Sebastian Gottifredi 2017 Repaso 2 Repaso Para entender y controlar la estructura de un programa fuente hay que analizar si sigue
Más detalles(3) Unidad 3. Interfaz del ensamblador con el lenguaje C SISTEMAS BASADOS EN MICROPROCESADORES. Grado en Ingeniería Informática EPS - UAM
Unidad 3 Interfaz del ensamblador con el lenguaje C SISTEMAS BASADOS EN MICROPROCESADORES Grado en Ingeniería Informática EPS - UAM Índice 3. Interfaz del ensamblador con el lenguaje C. 3.1. Características
Más detallesArquitectura de Computadores II Clase #3
Clase #3 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Veremos Registros Repertorio de instrucciones Modos de direccionamiento El stack Formatos de datos Control
Más detallesUNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INFORMÁTICA GRADO EN INGENIERÍA INFORMÁTICA. ESTRUCTURA DE COMPUTADORES
Ejercicio 1 Los siguientes números se encuentran representados en complemento a dos utilizando 6 bits. Indique su correspondiente valor decimal: a) 010011 b) 100111 Ejercicio 3 Dada la siguiente expresión
Más detallesINTRUCCIONES: LENGUAJE MAQUINA
INTRUCCIONES: LENGUAJE MAQUINA 1.- INTRODUCCION Conceptos importantes Instrucción: Orden al hardware del Computador Repertorio de Instrucciones Lenguaje Máquina (ML) Lenguaje Ensamblador (AL) Lenguaje
Más detallesIntroducción al lenguaje ensamblador DLX: instrucciones de enteros.
PRÁCTICA 0.a Introducción al lenguaje ensamblador DLX: instrucciones de enteros. OBJETIVO El objetivo de esta práctica es la familiarización con el lenguaje ensamblador DLX, analizando la ejecución de
Más detallesEjercicios del tema 4. El procesador
Ejercicios del tema 4. El procesador Estructura del procesador elemental WepSIM Address Bus Data Bus Control Bus C0 Ta Internal Bus RA RB RC LC MAR T9 Memory MRdy BE ADDR DATA R W A31-A0 BE3-BE0 D31-D0
Más detallesSesión 9 Reserva de espacio e instrucciones de carga y almacenamiento
Laboratorio IG09 1 IngenieríaTécnica en Informática de Gestión. Curso 2001-2002 LABORATORIO DE ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES Sesión 9 Reserva de espacio e instrucciones de carga y almacenamiento
Más detallesSeguimiento. Organización del Computador I. Gustavo Cairo Carlos A. Di Pietro Carolina Lang. 1 er Cuatrimestre de 2016
La Máquina ORGA1: Arquitectura y Seguimiento Organización del Computador I Gustavo Cairo Carlos A. Di Pietro Carolina Lang Departamento de Computación - FCEyN UBA 1 er Cuatrimestre de 2016 Outline Arquitectura
Más detallesSistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria
1.2. Jerarquía de niveles de un computador Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria Es un sistema tan complejo
Más detallesSegmentación del Path de Datos
Maestría en Electrónica Arquitectura de Computadoras Unidad 5 Segmentación del Path de Datos M. C. Felipe Santiago Espinosa Abril/2018 Introduction CPU performance factors Instruction count Determined
Más detallesTema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel.
Tema 2: Arquitectura del repertorio de instrucciones Visión del computador que tiene el programador en bajo nivel. Lo que el programador en lenguaje ensamblador debe conocer para escribir programas: (1)
Más detallesFundamentos de arquitectura de computadores relacionados con SO
Fundamentos de arquitectura de computadores relacionados con SO Ingeniería del Software EUITI Índice Estructura del computador Modelo de programación Registros del procesador Ejecución de instrucciones
Más detallesOrganización de Computadoras. Principios de Conjuntos de Intrucciones
Organización de Computadoras Principios de Conjuntos de Intrucciones Clasifición de las ISA Secuencia de Código para C = A + B Stack Acumulador Registro (Reg-Mem) Registro (load-store) Push A Load A Load
Más detallesExploiting... Stack Based Buffer Overflow
Exploiting... Stack Based Buffer Overflow FAMAF UNC November 10, 2015 Se puede ganar? int main () { int cookie ; char buf [80]; } gets ( buf ); // Lee hasta el primer... if ( cookie == 0 x41424344 ) printf
Más detallesEl repertorio de instrucciones
Capítulo 2 El repertorio de instrucciones 2.1. Introducción El funcionamiento de la CPU está determinado por las instrucciones que ejecuta. Estas instrucciones se denominan instrucciones máquina o instrucciones
Más detallesDocumentación del simulador SPIM.
Universidad de León Departamento de Ingeniería Eléctrica y de Sistemas y Automática (C) Prof. José M. Foces, 1998-2006. diejfm@unileon.es Documentación del simulador SPIM. Versión para Windows. Adaptada
Más detallesINTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA
APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto
Más detallesArquitectura de Computadores Certamen I
Universidad de Concepción Facultad de Ingeniería Dpto. Ingeniería Eléctrica Arquitectura de Computadores - 543426 Certamen I 1. Performance [2 ptos.] 30 de Abril del 2003 La Tabla 1 muestra la cantidad
Más detallesDireccionamiento y Estructuras de Datos.
Capítulo 7. 1 Direccionamiento y Estructuras de Datos. Una vez conocidos los mecanismos de direccionamiento de un procesador es útil visualizar cómo se pueden emplear para manipular arreglos y estructuras.
Más detallesOrganizació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 Control Multiciclo Basado en el capítulo 5 del libro de Patterson y Hennessy Verano 2014 Profesora Borensztejn Resumen Step name Instruction fetch Instruction decode/register
Más detallesImplementación de instrucciones para el procesador MIPS de ciclo único.
Implementación de instrucciones para el procesador MIPS de ciclo único. 1. Introducción. El MIPS (Microprocessor without Interlock Pipeline Stages) es un conocido tipo de procesador de arquitectura RISC
Más detallesArquitectura de Computadores. Miguel Figueroa Oficina Arquitectura de conjunto de instrucciones (ISA)
543.426 Arquitectura de Computadores Arquitectura de conjunto de instrucciones (ISA) Miguel Figueroa Oficina 235 Email: miguel.figueroa@udec.cl 1 Arquitectura de conjunto de instrucciones Instruction Set
Más detallesARQUITECTURA DE COMPUTADORES. Tema 2: Lenguaje Máquina, Instrucciones y Modos de Direccionamiento.
Universidad Rey Juan Carlos ARQUITECTURA DE COMPUTADORES Tema 2: Lenguaje Máquina, Instrucciones y Modos de Direccionamiento. Licesio J. Rodríguez-Aragón Programa 1. Introducción Lenguajes de Programación:
Más detallesCap.2. Kernel Sistemas Operativos - Viña del Mar.
Cap.2. Kernel Sistemas Operativos - Viña del Mar. Maximiliano Osorio mosorio@inf.utfsm.cl Universidad Técnica Federico Santa Maria 19 de agosto de 2017 1 / 44 Tabla de contenidos 1 Proceso Protección de
Más detalles8.4. El software en los μprocesadores
8.4. El software en los μprocesadores Ejemplo de comandos de la CPU: Tarea: Sumar dos números A y B. Suponer los datos A y B almacenados en las posiciones 1000 2 y 1010 2 respectivamente. El resultado
Más detallesPRÁCTICAS DE ARQUITECTURA DE COMPUTADORES
PRÁCTICAS DE ARQUITECTURA DE COMPUTADORES PRACTICA 7 Repaso del Lenguaje Ensamblador CURSO 2005-2006 Arquitectura de Computadores. Práctica 7: Repaso del lenguaje Ensamblador 1 PRÁCTICA 7 ASPECTO TRATADO:
Más detallesProgramación en ensamblador Ejercicios resueltos
Programación en ensamblador Ejercicios resueltos Ejercicio 1. Dado el siguiente fragmento de programa en ensamblador..globl main main:... li $a0, 5 jal funcion move $a0, $v0 li $v0, 1 li $v0, 10 funcion:
Más detallesEl Conjunto de Instrucciones de la Arquitectura Lagarto I
Sistema de numeración maya (base 20), se considera el primer sistema numérico que uso el cero. El Conjunto de Instrucciones de la Arquitectura Lagarto I i Resumen El conjunto de instrucciones de la arquitectura
Más detalles