SlideShare una empresa de Scribd logo
1 de 83
ISA Instruction Set Architecture Cecilia Hernández [email_address]
Estructura de un Sistema Computacional
Traduciendo y ejecutando un programa Programa C Programa en lenguaje ensamblador Cód. Objeto: módulo en lenguaje de máquina Cod. Objeto: Bibliotecas Cod. Ejecutable: Prog. Leng. Máquina Memoria Compilador Ensamblador Linker Loader
Interfaz HW/SW
Convenciones ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Qué es una instrucción? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ejecución de instrucción de máquina ,[object Object],[object Object],[object Object],[object Object],[object Object]
Arquitectura de Conjunto de Instrucciones ISA ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
MIPS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Aplicaciones del procesador MIPS
Almacenamiento en MIPS
Registros MIPS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Convención de uso de registros MIPS $0  zero  constante cero $1  at   reservado para ensamblador $2  v0  evaluación de expresiones  y $3  v1  resultados de funciones $4  a0   argumentos a funciones $5  a1 $6  a2 $7  a3 $8   t0  variables temporales respaldadas por función .   que invoca .   (función invocada puede   .   sobreescribir) $15   t7 $16   s0  temporales respaldados por .  función invocada .  (función que invoca no respalda) . $23   s7 $24  t8  temporales (adicionales) $25  t9 $26   k0  reservados para sistema operativo $27   k1 $28   gp  puntero a variables globales $29   sp  puntero a tope del stack $30  fp  puntero a base del stack $31   ra  dirección de retorno de función
MIPS=RISC = Arquitectura load/store ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ejemplo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Programando en lenguaje  ensamblador ,[object Object],[object Object],[object Object],[object Object]
Tipos de instrucciones en MIPS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Aritmética entera ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Notación en SPIM ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Instrucciones aritméticas en SPIM ,[object Object],# rd = rs - rt rd, rs, rt sub # rt = rs + immed rt, rs, immediato addi # rd = rs + rt rd, rs, rt add Comentarios Operandos Código Operación
Instrucciones aritméticas ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ejemplos Add $8,$9,$10 #$8=$9+$10 Add $t0,$t1,$t2 #$t0=$t1+$t2 Sub $s2,$s1,$s0 #$s2=$s1-$s0 Addi $a0,$t0,20 #$a0=$t0+20 Addi $a0,$t0,-20 #$a0=$t0-20 Addi $t0,$0,0 #clear $t0 Sub $t5,$0,$t5 #$t5 = -$t5
Instrucciones lógicas ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Movimiento entre registros ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Acceso a memoria ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Instrucciones load/store ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Algunas pseudoinstrucciones move $4, $5 # $4    $5 # or $4, $zero, $5 li $4, 100 # $4    100 # ori $4, $zero, 100 la $4, LABEL32 # $4    LABEL # lui $4, LABEL 16bsuperiores # ori $4, $4, LABEL 16binferiores bgt $4, CTE, LABEL # if ($4 > CTE) goto LABEL # slti $at, $4, CTE+1 # beq $at, $zero, LABEL
Ejemplo int a, b, acum; … acum = acum + a * b; # Dirección de memoria de ‘a’ en rótulo DIR_A # Dirección de memoria de ‘b’ en rótulo DIR_B # Dirección de memoria ‘acum’ en rótulo DIR_ACUM la $v0, DIR_A  # cargar dirección de a la $v1, DIR_B  # cargar dirección de b lw $t0, 0($v0)  # leer a lw $t1, 0($v1)  # leer b mul $t2, $t0, $t1  # t2 = a * b la $v2, DIR_ACUM # cargar dirección de acum lw $t3, 0($v2) # leer acum add $t3, $t3, $t2 # $t3 = acum + a * b sw $t3, 0($v2) # guardar acum 10 2 DIR_A DIR_B DIR_ACUM 50 Memoria $v0 $v1 $v2 $t0 $t1 $t2 $t3 1000 1012 10 2 20 1024 50 70 70 1000 1004 1008 1012 1016 1020 1024 a b acum
Ejemplo typedef struct { int x; int y; } coord; coord c1, c2; … int dist; dist = abs(c2.x – c1.x) +  abs(c2.y – c1.y); # Dirección de memoria de ‘c1’ en rótulo DIR_C1 # Dirección de memoria de ‘c2’ en rótulo DIR_C2 # Dirección de memoria de ‘dist’ en rótulo DIR_DIST la $v0, DIR_C1 # cargar dirección de c1 la $v1, DIR_C2  # cargar dirección de c2 lw $t0, 0($v0)  # leer c1.x lw $t1, 0($v1)  # leer c2.x sub $t2, $t1, $t0  # t2 = c2.x – c1.x abs $t3, $t2 # t3 = abs(c2.x – c1.x) lw $t0, 4($v0)  # leer c1.y lw $t1, 4($v1)  # leer c2.y sub $t2, $t1, $t0  # t2 = c2.y – c1.y abs $t4, $t2 # t4 = abs(c2.y – c1.y) add $t3, $t3, $t4 # t3 = abs(c2.x – c1.x) + #  abs(c2.y – c1.y) la $v0, DIR_DIST # cargar dirección de dist sw $t3, 0($v0) # dist = abs(c2.x – c1.x) + #  abs(c2.y – c1.y) c1.x c1.y c2.x c2.y Direcciones de memoria DIR_C1 DIR_C1 + 4 DIR_C2 DIR_C2 + 4 DIR_DIST dist Memoria
Ejecución condicional de  instrucciones ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Instrucciones ISA MIPS   ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Ejemplo: add $1, $2, $3 slt $4, $1, $0 # if $1 < $0 then $4 = 1 # else #4 = 0
Algunas instrucciones de  comparación ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Instrucciones de salto MIPS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Instrucciones de transferencia de control ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Saltos ,[object Object],[object Object],[object Object],[object Object],[object Object]
Instrucciones de salto MIPS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ejemplo Código assembly para el siguiente código C: int a = 10, b = 5; int c; … if (a > b) c = a – b; else c = b – a; c = c + 10; Compilador asigna: a    $t0 b    $t1 c    $t2 li $t0, 10 # a = 10 li $t1, 5 # b = 5 sle $t3, $t0, $t1 # a <= b ? bgtz $t3, ELSE # if a <= b goto ELSE sub $t2, $t0, $t1 # c = a - b j FIN_IF # goto FIN_IF ELSE: sub $t2, $t1, $t0 # c = b - a FIN_IF: addi $t2, $t2, 10 # c = c + 10
Ejemplo Código assembly para el siguiente código C: i = 0; sum = 0; do { sum = sum + a[i] * b[i]; i++; } while (i < 100) li $t0, 0 # i = 0; li $t1, 0 # $t1 = 0 (sum temporal) la $t2, SUM # $t2 = dirección de sum sw $t1, 0($t2) # sum = 0 LOOP: la $t3, A # $t3 = dirección a[0] la $t4, B # $t4 = dirección b[0] sll $t5, $t0, 2  # $t5 = i*4 add $t6, $t3, $t5  # $t6 = dirección a[i] lw $t7, 0($t6)  # $t7 = a[i] add $t6, $t4, $t5  # $t6 = dirección b[i] lw $t8, 0($t6)  # $t8 = b[i] mul, $t8, $t7, $t8  # $t8 = a[i]*b[i] add $t1, $t1, $t8  # $t1 = sum + a[i]*b[i] la $t2, SUM sw, $t1, 0($t2)  # sum = sum + a[i] * b[i] add $t0, $t0, 1  # i = i + 1 slti $t7, $t0, 100  # i < 100? bne $t7, $zero, LOOP Vectores a y b y variable sum comienzan a partir de direcciones de memoria indicadas por rótulos A, B y SUM.  Variable i asignada a registro $t0. ¿Posible optimizar código?
Ejemplo (optimizado) Código assembly para el siguiente código C: i = 0; sum = 0; do { sum = sum + a[i] * b[i]; i++; } while (i < 100) li $t0, 0 # i = 0; li $t1, 0 # $t1 = 0 (sum temporal) la $t3, A # $t3 = dirección a[0] la $t4, B # $t4 = dirección b[0] LOOP: add $t6, $t3, $t0  # $t6 = dirección a[i] lw $t7, 0($t6)  # $t7 = a[i] add $t6, $t4, $t0  # $t6 = dirección b[i] lw $t8, 0($t6)  # $t8 = b[i] mul, $t8, $t7, $t8  # $t8 = a[i]*b[i] add $t1, $t1, $t8  # $t1 = sum + a[i]*b[i] add $t0, $t0, 4  # i = i + 1 slti $t7, $t0, 400  # i < 100? bne $t7, $zero, LOOP la $t2, SUM sw, $t1, 0($t2)  # sum = sum + a[i] * b[i] Vectores a y b y variable sum comienzan a partir de direcciones de memoria indicadas por rótulos A, B y SUM.  Variable i asignada a registro $t0.
Otras instrucciones ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Tabla resumen Syscall
Ensamblador MIPS ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Rótulos ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],LOOP: add $4, $4, $2 j LOOP  CONST = 2 … li $5, CONST .globl MAIN RES: .word 5 … la $t0, RES lw $t1, 0($t0)
Mapa de memoria ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Algunas directivas al ensamblador .data Texto que sigue representa datos almacenados en el heap .text Texto que sigue representa instrucciones almacenadas en área de texto (código) .kdata Texto que sigue representa datos en área de datos del kernel (sistema operativo) .ktext Texto que sigue representa código en área de kernel .globl LABEL Rótulo LABEL es global (visible a todo el programa) .ascii str Almacenar string de texto str en ASCII sin un NULL al final .asciiz str Almacenar string de texto str en ASCII con un NULL (0) al final .word w1 … wn Almacenar n palabras (32b) en posiciones consecutivas de memoria .half h1 … hn Almacenar n medias palabras (16b) en posiciones consecutivas de memoria .byte b1 … bn Almacenar n bytes (8b) en posiciones consecutivas de memoria
Ejemplo .data TEXTOSINULL: .ascii “texto 1” TEXTOCONUL: .asciiz “texto 2” DATOS: .word 16 124 1000 .text .globl MAIN MAIN: la $8, TEXTOSINUL la $9, TEXTOCONUL la $10, DATOS lw $11, 0($10) lw $12, 4($10) lw $13, 8($10)
Procedimientos ,[object Object],[object Object],[object Object]
Protocolo Procedimientos/funciones ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ejemplo procedimiento simple int len; char[20] str; … len = strlen(str);  … int strlen(char *str) { int len = 0; while (*str != 0) { str = str + 1; len = len + 1; } return len; } la $a0, str # $a0 = str jal STRLEN; # resultado retorna en $v0 STRLEN: li $v0, 0 # len = 0 WHILE: lb $t0, 0($a0) # $t0 = *str beq $t0, $zero, FIN_WHILE # if (*str == 0) goto FIN_W addi $a0, $a0, 1 # str = str + 1 addi $v0, $v0, 1 # len = len + 1 b WHILE # goto WHILE FIN_W: jr $ra # return len Utilizar convención estándar de uso de registros MIPS
Otro ejemplo procedimiento int i; int a[100], b[100] … res = punto(a, b, 100); … int prod_punto(int v1[], int v2[], int n) { int i = 0; suma = 0; do { suma = suma + v1[i] * v2[i]; i++; } while (i < n) return suma; } la $a0, A # $a0 = &(a[0]) la $a1, B # $a1 = &(b[0]) li $a2, 100 # $a2 = 100 jal PUNTO # resultado en $v0 la $t0, RES sw $v0, 0($t0) … PUNTO: li $t0, 0 # i = 0 li $v0, 0 # suma = 0 WHILE: sll $t1, $t0, 2 # $t1 = i*4 add $t2, $a0, $t1 # $t2 = &(v1[i]) lw $t3, 0($t2) # $t3 = v1[i] add $t2, $a1, $t1 # $t2 = &(v2[i]) lw $t4, 0($t2)  # $t4 = v2[i] mult $t3, $t3, $t4 # $t3 = v1[i] * v2[i] add $v0, $v0, $t3 # suma = suma +… addi $t0, $t0, 1 # i = i + 1 slt $t3, $t0, $a2 # i < n? bne $t3, $zero, WHILE jr $ra
Qué hacer cuando los registros no son suficientes? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Datos locales y procedimientos recursivos ,[object Object],[object Object],PROC1: move $t0, $a0 … la $s0, PROC1_MEM sw $t0, 0($s0) sw $ra, 4($s0) jal PROC2 lw $t0, 0($s0) lw $ra, 4($s0) … jr $ra Ahora PROC2 puede sobreescribir $t0 y $ra sin problemas PROC1_MEM $t0 $ra Problema: ¿Qué pasa si PROC1 es recursivo? Direcciones de memoria
Procedimientos y stacks ,[object Object],[object Object],[object Object],[object Object],A A A A A B B B C A: call B B: call C C: ret ret … …
Stacks de memoria ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Soporte para stacks ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Argumentos Registros salvados  por el llamado Variables locales Evaluación de expresiones (dinámico) FP SP
Ejemplo: Cadena de llamados Estructura de código ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],p1 p2 p3 p3 p3 Cadena de llamados ,[object Object],p3
p1 • • • p1 Cadena de llamados ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Operación del stack Stack Pointer $sp Frame Pointer $fp
Operación del stack  p1 p2 • • • p1 p2 Cadena de llamados ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Stack Pointer $sp Frame Pointer $fp
Operación del stack p1 p2 p3 • • • p1 p2 p3 Cadena de llamados ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Stack Pointer $sp Frame Pointer $fp
Operación del stack p1 p2 p3 • • • p1 p2 p3 Cadena de llamados ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],p3 p3 Stack Pointer $sp Frame Pointer $fp
Operación del stack p1 p2 p3 • • • p1 p2 p3 Cadena de llamados ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],p3 p3 p3 p3 Stack Pointer $sp Frame Pointer $fp
Operación del stack p1 p2 p3 • • • p1 p2 p3 Cadena de llamados ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],p3 p3 amI Stack Pointer $sp Frame Pointer $fp
Operación del stack p1 p2 p3 • • • p1 p2 p3 Cadena de llamados ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],p3 p3 Stack Pointer $sp Frame Pointer $fp
Operación del stack p1 p2 • • • p1 p2 Call Chain ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],p3 p3 p3 Stack Pointer $sp Frame Pointer $fp
Operación del stack p1 p2 p3 • • • p1 p2 Cadena de llamados ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],p3 p3 p3 p3 Stack Pointer $sp Frame Pointer $fp
Operación del stack p1 p2 • • • p1 p2 Cadena de llamados ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],p3 p3 p3 p3 Stack Pointer $sp Frame Pointer $fp
Operación del stack ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],p1 • • • p1 p2 Cadena de llamados p3 p3 p3 p3 Stack Pointer $sp Frame Pointer $fp
Stack (Pila) de Programa ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Operación push ,[object Object],[object Object],[object Object],antes después 46 -72  ??? 46 -72 127   ??? 8($sp) 4($sp) $sp 12($sp) 8($sp) 4($sp) $ sp 127  $6 127  $6
Operación pop ,[object Object],[object Object],[object Object],antes 46 -72  127 46 -72 127  ??? 8($sp) 4($sp) $ sp 12($sp) 8($sp) 4($sp) $sp 127  $6 453  $6 Pasa a ser basura despúes
Requerimientos llamados a procedimiento ,[object Object],[object Object],[object Object],[object Object],[object Object]
Mecanismo ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Convención uso de registros Dirección de retorno de función $ra $31 Puntero a la base del stack (Frame Pointer) $fp $30 Puntero al tope del stack (Stack Pointer) $sp $29 Puntero al heap (segmento datos global) $gp $28 Reservados al O.S. $k0-$k1 $26-$27 Temporales no salvados al llamar función $t8-$t9 $24-$25 Temporales salvados al llamar función $s0-$s7 $16-$23 Temporales no salvados al llamar función $t0-$t7 $8-$15 Argumentos en llamada función $a0-$a3 $4-$7 Evaluación expresiones y resultado funciones $v0-$v1 $2-$3 Reservado para temporal del ensamblador $at $1 Cero $zero $0 Uso Nombre  Registro
Tareas del que llama y procedimiento llamado en CALL ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Tareas del que llama y procedimiento llamado en RETURN ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ejemplo de un CALL ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ejemplo RETURN ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ejemplo: Factorial recursivo int factorial(int n) { if (n == 0) return 1; else return n * factorial(n-1); } FACT: bne  $a0, $0, L1  # saltar si n != 0 li  $v0, 1  # retornar 1 jr  $ra L1:  addiu  $sp, $sp, -12  # tamaño del nuevo stack es 12 bytes sw  $fp, 0($sp)  # almacenar $fp en el stack sw  $ra, 4($sp)  # almacenar $ra en el stack addiu  $fp, $sp, 8  # $fp apunta al principio del stack sw  $a0, 0($fp)  # almacenar n en el stack addiu  $a0, $a0, -1  # n - 1 jal   FACT  # resultado en $v0 lw  $a0, 0($fp)  # recuperar n lw  $ra, 4($sp)  # recuperar direccion de retorno lw  $fp, 0($sp)  # recuperar $fp addiu  $sp, $sp, 12  # restaurar stack original $sp mul  $v0, $v0, $a0  # n * fact(n-1) jr  $ra Mostrar ejemplos usando fp y no usando fp, usando ConTEXT Ejercicio: hacer dibujo con marcos de activación y cadena de llamados
Excepciones ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Atención de excepciones ,[object Object],[object Object],[object Object],[object Object],[object Object]
Atención de excepciones en MIPS ,[object Object],[object Object],[object Object]
Registro Causa
Registro de estado ,[object Object],[object Object]

Más contenido relacionado

La actualidad más candente

Sintaxis del lenguaje ensamblador
Sintaxis del lenguaje ensambladorSintaxis del lenguaje ensamblador
Sintaxis del lenguaje ensambladornaye torres
 
Clase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensambladorClase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensambladorInfomania pro
 
Equipo 6 comparaciones
Equipo 6 comparacionesEquipo 6 comparaciones
Equipo 6 comparacionesgabo
 
Lenguaje ensamblador del microprocesador
Lenguaje ensamblador del microprocesadorLenguaje ensamblador del microprocesador
Lenguaje ensamblador del microprocesadorsmfch
 
Arranque de Sistema Operativo con Assembler
Arranque de Sistema Operativo con AssemblerArranque de Sistema Operativo con Assembler
Arranque de Sistema Operativo con AssemblerPedro Contreras Flores
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Carlos Pastorino
 
Arquitectura resumen capitulos 5 y 6 efrain saransig
Arquitectura resumen capitulos 5 y 6 efrain saransigArquitectura resumen capitulos 5 y 6 efrain saransig
Arquitectura resumen capitulos 5 y 6 efrain saransigEfrain Zrng
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensambladorjoseruiz_66
 
Librerias Básicas y sus Funciones Lenguaje de Programación C
Librerias Básicas y sus Funciones Lenguaje de Programación CLibrerias Básicas y sus Funciones Lenguaje de Programación C
Librerias Básicas y sus Funciones Lenguaje de Programación CCristian Maza
 
Uso de las clases iostream
Uso de las clases iostreamUso de las clases iostream
Uso de las clases iostreamTensor
 
Mis preguntas del blog y las ultimas .l.
Mis preguntas del blog y las ultimas .l.Mis preguntas del blog y las ultimas .l.
Mis preguntas del blog y las ultimas .l.Mauricio Velasquez
 

La actualidad más candente (20)

Sintaxis del lenguaje ensamblador
Sintaxis del lenguaje ensambladorSintaxis del lenguaje ensamblador
Sintaxis del lenguaje ensamblador
 
Clase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensambladorClase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensamblador
 
Equipo 6 comparaciones
Equipo 6 comparacionesEquipo 6 comparaciones
Equipo 6 comparaciones
 
Data segment
Data segmentData segment
Data segment
 
Curso básico de ensamblador
Curso básico de ensambladorCurso básico de ensamblador
Curso básico de ensamblador
 
Lenguaje ensamblador del microprocesador
Lenguaje ensamblador del microprocesadorLenguaje ensamblador del microprocesador
Lenguaje ensamblador del microprocesador
 
Arranque de Sistema Operativo con Assembler
Arranque de Sistema Operativo con AssemblerArranque de Sistema Operativo con Assembler
Arranque de Sistema Operativo con Assembler
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07
 
Ejercicios tema3
Ejercicios tema3Ejercicios tema3
Ejercicios tema3
 
Mars
MarsMars
Mars
 
Arquitectura resumen capitulos 5 y 6 efrain saransig
Arquitectura resumen capitulos 5 y 6 efrain saransigArquitectura resumen capitulos 5 y 6 efrain saransig
Arquitectura resumen capitulos 5 y 6 efrain saransig
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Libreria c++
Libreria c++Libreria c++
Libreria c++
 
UNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICAUNIDAD 2 PROGRAMACIÓN BASICA
UNIDAD 2 PROGRAMACIÓN BASICA
 
Assembler
AssemblerAssembler
Assembler
 
Librerias Básicas y sus Funciones Lenguaje de Programación C
Librerias Básicas y sus Funciones Lenguaje de Programación CLibrerias Básicas y sus Funciones Lenguaje de Programación C
Librerias Básicas y sus Funciones Lenguaje de Programación C
 
bibliotecas c++
bibliotecas c++bibliotecas c++
bibliotecas c++
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Uso de las clases iostream
Uso de las clases iostreamUso de las clases iostream
Uso de las clases iostream
 
Mis preguntas del blog y las ultimas .l.
Mis preguntas del blog y las ultimas .l.Mis preguntas del blog y las ultimas .l.
Mis preguntas del blog y las ultimas .l.
 

Destacado

Presentacion Corporacion Region
Presentacion Corporacion RegionPresentacion Corporacion Region
Presentacion Corporacion Regionensayoai
 
Gioconda.Folleto Y Poemas
Gioconda.Folleto Y PoemasGioconda.Folleto Y Poemas
Gioconda.Folleto Y PoemasDiver Bitácora
 
AREVA, rapport semestriel 30 Juin 2008
AREVA, rapport semestriel 30 Juin 2008AREVA, rapport semestriel 30 Juin 2008
AREVA, rapport semestriel 30 Juin 2008AREVA
 
Periodismo
PeriodismoPeriodismo
Periodismominmaru
 
p20 + m - Presentación de Noemí Pastor, Idoia Llano y María Salido
p20 + m  - Presentación de Noemí Pastor, Idoia Llano y María Salidop20 + m  - Presentación de Noemí Pastor, Idoia Llano y María Salido
p20 + m - Presentación de Noemí Pastor, Idoia Llano y María SalidoMak Makygregor
 
Charla a Consejo para la Transparencia, 27 de noviembre de 2013
Charla a Consejo para la Transparencia, 27 de noviembre de 2013Charla a Consejo para la Transparencia, 27 de noviembre de 2013
Charla a Consejo para la Transparencia, 27 de noviembre de 2013Christian Sifaqui
 
Ana,Victor Y Dori Se Van(Por Ahora)
Ana,Victor  Y Dori Se Van(Por Ahora)Ana,Victor  Y Dori Se Van(Por Ahora)
Ana,Victor Y Dori Se Van(Por Ahora)doctor98
 
Marco general para el diseño de un plan de estudios. Grado de Ingeniería Info...
Marco general para el diseño de un plan de estudios. Grado de Ingeniería Info...Marco general para el diseño de un plan de estudios. Grado de Ingeniería Info...
Marco general para el diseño de un plan de estudios. Grado de Ingeniería Info...Fernando Tricas García
 
ئىنساننىڭ دىنغا مۇھتاج بولۇشى
ئىنساننىڭ دىنغا مۇھتاج  بولۇشىئىنساننىڭ دىنغا مۇھتاج  بولۇشى
ئىنساننىڭ دىنغا مۇھتاج بولۇشىAbdullah Baspren
 
Primeras Jornadas de Profesores EOI
Primeras Jornadas de Profesores EOIPrimeras Jornadas de Profesores EOI
Primeras Jornadas de Profesores EOIgloria.bilbo
 
Trendzine elan012012
Trendzine elan012012 Trendzine elan012012
Trendzine elan012012 Agence Elan
 
elearning Medicina Universidad de Alcalá
elearning Medicina Universidad de Alcaláelearning Medicina Universidad de Alcalá
elearning Medicina Universidad de AlcaláRafael Ospina
 
Bac2006quelniveau
Bac2006quelniveauBac2006quelniveau
Bac2006quelniveaudov404
 

Destacado (20)

Accesibilidad DiM
Accesibilidad DiMAccesibilidad DiM
Accesibilidad DiM
 
Presentacion Corporacion Region
Presentacion Corporacion RegionPresentacion Corporacion Region
Presentacion Corporacion Region
 
Gioconda.Folleto Y Poemas
Gioconda.Folleto Y PoemasGioconda.Folleto Y Poemas
Gioconda.Folleto Y Poemas
 
AREVA, rapport semestriel 30 Juin 2008
AREVA, rapport semestriel 30 Juin 2008AREVA, rapport semestriel 30 Juin 2008
AREVA, rapport semestriel 30 Juin 2008
 
Les Flors
Les FlorsLes Flors
Les Flors
 
Periodismo
PeriodismoPeriodismo
Periodismo
 
p20 + m - Presentación de Noemí Pastor, Idoia Llano y María Salido
p20 + m  - Presentación de Noemí Pastor, Idoia Llano y María Salidop20 + m  - Presentación de Noemí Pastor, Idoia Llano y María Salido
p20 + m - Presentación de Noemí Pastor, Idoia Llano y María Salido
 
Charla a Consejo para la Transparencia, 27 de noviembre de 2013
Charla a Consejo para la Transparencia, 27 de noviembre de 2013Charla a Consejo para la Transparencia, 27 de noviembre de 2013
Charla a Consejo para la Transparencia, 27 de noviembre de 2013
 
Ana,Victor Y Dori Se Van(Por Ahora)
Ana,Victor  Y Dori Se Van(Por Ahora)Ana,Victor  Y Dori Se Van(Por Ahora)
Ana,Victor Y Dori Se Van(Por Ahora)
 
Marco general para el diseño de un plan de estudios. Grado de Ingeniería Info...
Marco general para el diseño de un plan de estudios. Grado de Ingeniería Info...Marco general para el diseño de un plan de estudios. Grado de Ingeniería Info...
Marco general para el diseño de un plan de estudios. Grado de Ingeniería Info...
 
ئىنساننىڭ دىنغا مۇھتاج بولۇشى
ئىنساننىڭ دىنغا مۇھتاج  بولۇشىئىنساننىڭ دىنغا مۇھتاج  بولۇشى
ئىنساننىڭ دىنغا مۇھتاج بولۇشى
 
Primera parte de los medios visuales
Primera parte de los medios visualesPrimera parte de los medios visuales
Primera parte de los medios visuales
 
Blogs en educación
Blogs en educaciónBlogs en educación
Blogs en educación
 
Primeras Jornadas de Profesores EOI
Primeras Jornadas de Profesores EOIPrimeras Jornadas de Profesores EOI
Primeras Jornadas de Profesores EOI
 
Mejor Pps 2008
Mejor Pps 2008Mejor Pps 2008
Mejor Pps 2008
 
Sincronizacion
SincronizacionSincronizacion
Sincronizacion
 
Trendzine elan012012
Trendzine elan012012 Trendzine elan012012
Trendzine elan012012
 
Riesgos laborales
Riesgos laboralesRiesgos laborales
Riesgos laborales
 
elearning Medicina Universidad de Alcalá
elearning Medicina Universidad de Alcaláelearning Medicina Universidad de Alcalá
elearning Medicina Universidad de Alcalá
 
Bac2006quelniveau
Bac2006quelniveauBac2006quelniveau
Bac2006quelniveau
 

Similar a ISA Instruction Set Architecture

07-MIPSVHL CIRCUITOS TEORÍA ELECTRÓNICA DIGITAL.pdf
07-MIPSVHL CIRCUITOS TEORÍA ELECTRÓNICA DIGITAL.pdf07-MIPSVHL CIRCUITOS TEORÍA ELECTRÓNICA DIGITAL.pdf
07-MIPSVHL CIRCUITOS TEORÍA ELECTRÓNICA DIGITAL.pdfLuisVargasVelazquez
 
Lenguaje ensamblador basico
Lenguaje ensamblador basicoLenguaje ensamblador basico
Lenguaje ensamblador basicoGustavo Davila
 
Microcomputadoras al detalle
Microcomputadoras al detalleMicrocomputadoras al detalle
Microcomputadoras al detalledsolana
 
Unidad 2 arquitectura del computador
Unidad 2 arquitectura del computadorUnidad 2 arquitectura del computador
Unidad 2 arquitectura del computadorCristhixn Leon
 
Lenguajes de interfaz
Lenguajes de interfazLenguajes de interfaz
Lenguajes de interfazXavi Flores
 
Unidadi. lenguajes de interfaz
Unidadi.   lenguajes de interfazUnidadi.   lenguajes de interfaz
Unidadi. lenguajes de interfazLuiS YmAY
 
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMA
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMAMODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMA
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMAgbermeo
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensambladorDeisyVilchez
 
Microporcesadores registro
Microporcesadores registroMicroporcesadores registro
Microporcesadores registroMarcos Barboza
 
Fundamento de computadores- Motorola 68000
Fundamento de computadores- Motorola 68000Fundamento de computadores- Motorola 68000
Fundamento de computadores- Motorola 68000Alberto Gonzalez Isorna
 
Generación código intermedio 2
Generación código intermedio 2Generación código intermedio 2
Generación código intermedio 2Humano Terricola
 
Microcomputadoras al detalle
Microcomputadoras al detalleMicrocomputadoras al detalle
Microcomputadoras al detalleLupiita Paniagua
 

Similar a ISA Instruction Set Architecture (20)

07-MIPSVHL CIRCUITOS TEORÍA ELECTRÓNICA DIGITAL.pdf
07-MIPSVHL CIRCUITOS TEORÍA ELECTRÓNICA DIGITAL.pdf07-MIPSVHL CIRCUITOS TEORÍA ELECTRÓNICA DIGITAL.pdf
07-MIPSVHL CIRCUITOS TEORÍA ELECTRÓNICA DIGITAL.pdf
 
Lenguaje ensamblador basico
Lenguaje ensamblador basicoLenguaje ensamblador basico
Lenguaje ensamblador basico
 
Microcomputadoras al detalle
Microcomputadoras al detalleMicrocomputadoras al detalle
Microcomputadoras al detalle
 
Unidad 2 arquitectura del computador
Unidad 2 arquitectura del computadorUnidad 2 arquitectura del computador
Unidad 2 arquitectura del computador
 
asm_mododir2.pdf
asm_mododir2.pdfasm_mododir2.pdf
asm_mododir2.pdf
 
Asm mododir2
Asm mododir2Asm mododir2
Asm mododir2
 
Esamblador8086
Esamblador8086Esamblador8086
Esamblador8086
 
Mars
MarsMars
Mars
 
Unidad I.pdf
Unidad I.pdfUnidad I.pdf
Unidad I.pdf
 
Lenguajes de interfaz
Lenguajes de interfazLenguajes de interfaz
Lenguajes de interfaz
 
Unidadi. lenguajes de interfaz
Unidadi.   lenguajes de interfazUnidadi.   lenguajes de interfaz
Unidadi. lenguajes de interfaz
 
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMA
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMAMODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMA
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMA
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Registros
RegistrosRegistros
Registros
 
Microporcesadores registro
Microporcesadores registroMicroporcesadores registro
Microporcesadores registro
 
Registros
RegistrosRegistros
Registros
 
Fundamento de computadores- Motorola 68000
Fundamento de computadores- Motorola 68000Fundamento de computadores- Motorola 68000
Fundamento de computadores- Motorola 68000
 
Generación código intermedio 2
Generación código intermedio 2Generación código intermedio 2
Generación código intermedio 2
 
Microcomputadoras al detalle
Microcomputadoras al detalleMicrocomputadoras al detalle
Microcomputadoras al detalle
 
Microcomputadoras al detalle
Microcomputadoras al detalleMicrocomputadoras al detalle
Microcomputadoras al detalle
 

Más de Stefano Salvatori (20)

Salida a Volcán Copahue Febrero 2011
Salida a Volcán Copahue Febrero 2011Salida a Volcán Copahue Febrero 2011
Salida a Volcán Copahue Febrero 2011
 
Salida a Aguas Calientes abril 2011
Salida a Aguas Calientes abril 2011Salida a Aguas Calientes abril 2011
Salida a Aguas Calientes abril 2011
 
Sistema de capas
Sistema de capasSistema de capas
Sistema de capas
 
Enumeracion de Goedel
Enumeracion de GoedelEnumeracion de Goedel
Enumeracion de Goedel
 
Maquinas Abstractas
Maquinas AbstractasMaquinas Abstractas
Maquinas Abstractas
 
Intro
IntroIntro
Intro
 
Pipelining
PipeliningPipelining
Pipelining
 
C P U Uniciclo
C P U  UnicicloC P U  Uniciclo
C P U Uniciclo
 
Mips1
Mips1Mips1
Mips1
 
Exc Int
Exc IntExc Int
Exc Int
 
DesempeñO
DesempeñODesempeñO
DesempeñO
 
Mips
MipsMips
Mips
 
Memoria I
Memoria  IMemoria  I
Memoria I
 
Multiciclo
MulticicloMulticiclo
Multiciclo
 
Hebras
HebrasHebras
Hebras
 
Semaforos
SemaforosSemaforos
Semaforos
 
Planificacion Procesos Gral
Planificacion Procesos GralPlanificacion Procesos Gral
Planificacion Procesos Gral
 
Memoria Soporte Hw
Memoria Soporte HwMemoria Soporte Hw
Memoria Soporte Hw
 
Hebras En Accion
Hebras En AccionHebras En Accion
Hebras En Accion
 
Administracion de Memoria
Administracion de MemoriaAdministracion de Memoria
Administracion de Memoria
 

Último

Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Marketing BRANDING
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 

Último (20)

Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 

ISA Instruction Set Architecture

  • 1. ISA Instruction Set Architecture Cecilia Hernández [email_address]
  • 2. Estructura de un Sistema Computacional
  • 3. Traduciendo y ejecutando un programa Programa C Programa en lenguaje ensamblador Cód. Objeto: módulo en lenguaje de máquina Cod. Objeto: Bibliotecas Cod. Ejecutable: Prog. Leng. Máquina Memoria Compilador Ensamblador Linker Loader
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 12.
  • 13. Convención de uso de registros MIPS $0 zero constante cero $1 at reservado para ensamblador $2 v0 evaluación de expresiones y $3 v1 resultados de funciones $4 a0 argumentos a funciones $5 a1 $6 a2 $7 a3 $8 t0 variables temporales respaldadas por función . que invoca . (función invocada puede . sobreescribir) $15 t7 $16 s0 temporales respaldados por . función invocada . (función que invoca no respalda) . $23 s7 $24 t8 temporales (adicionales) $25 t9 $26 k0 reservados para sistema operativo $27 k1 $28 gp puntero a variables globales $29 sp puntero a tope del stack $30 fp puntero a base del stack $31 ra dirección de retorno de función
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22. Ejemplos Add $8,$9,$10 #$8=$9+$10 Add $t0,$t1,$t2 #$t0=$t1+$t2 Sub $s2,$s1,$s0 #$s2=$s1-$s0 Addi $a0,$t0,20 #$a0=$t0+20 Addi $a0,$t0,-20 #$a0=$t0-20 Addi $t0,$0,0 #clear $t0 Sub $t5,$0,$t5 #$t5 = -$t5
  • 23.
  • 24.
  • 25.
  • 26.
  • 27. Algunas pseudoinstrucciones move $4, $5 # $4  $5 # or $4, $zero, $5 li $4, 100 # $4  100 # ori $4, $zero, 100 la $4, LABEL32 # $4  LABEL # lui $4, LABEL 16bsuperiores # ori $4, $4, LABEL 16binferiores bgt $4, CTE, LABEL # if ($4 > CTE) goto LABEL # slti $at, $4, CTE+1 # beq $at, $zero, LABEL
  • 28. Ejemplo int a, b, acum; … acum = acum + a * b; # Dirección de memoria de ‘a’ en rótulo DIR_A # Dirección de memoria de ‘b’ en rótulo DIR_B # Dirección de memoria ‘acum’ en rótulo DIR_ACUM la $v0, DIR_A # cargar dirección de a la $v1, DIR_B # cargar dirección de b lw $t0, 0($v0) # leer a lw $t1, 0($v1) # leer b mul $t2, $t0, $t1 # t2 = a * b la $v2, DIR_ACUM # cargar dirección de acum lw $t3, 0($v2) # leer acum add $t3, $t3, $t2 # $t3 = acum + a * b sw $t3, 0($v2) # guardar acum 10 2 DIR_A DIR_B DIR_ACUM 50 Memoria $v0 $v1 $v2 $t0 $t1 $t2 $t3 1000 1012 10 2 20 1024 50 70 70 1000 1004 1008 1012 1016 1020 1024 a b acum
  • 29. Ejemplo typedef struct { int x; int y; } coord; coord c1, c2; … int dist; dist = abs(c2.x – c1.x) + abs(c2.y – c1.y); # Dirección de memoria de ‘c1’ en rótulo DIR_C1 # Dirección de memoria de ‘c2’ en rótulo DIR_C2 # Dirección de memoria de ‘dist’ en rótulo DIR_DIST la $v0, DIR_C1 # cargar dirección de c1 la $v1, DIR_C2 # cargar dirección de c2 lw $t0, 0($v0) # leer c1.x lw $t1, 0($v1) # leer c2.x sub $t2, $t1, $t0 # t2 = c2.x – c1.x abs $t3, $t2 # t3 = abs(c2.x – c1.x) lw $t0, 4($v0) # leer c1.y lw $t1, 4($v1) # leer c2.y sub $t2, $t1, $t0 # t2 = c2.y – c1.y abs $t4, $t2 # t4 = abs(c2.y – c1.y) add $t3, $t3, $t4 # t3 = abs(c2.x – c1.x) + # abs(c2.y – c1.y) la $v0, DIR_DIST # cargar dirección de dist sw $t3, 0($v0) # dist = abs(c2.x – c1.x) + # abs(c2.y – c1.y) c1.x c1.y c2.x c2.y Direcciones de memoria DIR_C1 DIR_C1 + 4 DIR_C2 DIR_C2 + 4 DIR_DIST dist Memoria
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37. Ejemplo Código assembly para el siguiente código C: int a = 10, b = 5; int c; … if (a > b) c = a – b; else c = b – a; c = c + 10; Compilador asigna: a  $t0 b  $t1 c  $t2 li $t0, 10 # a = 10 li $t1, 5 # b = 5 sle $t3, $t0, $t1 # a <= b ? bgtz $t3, ELSE # if a <= b goto ELSE sub $t2, $t0, $t1 # c = a - b j FIN_IF # goto FIN_IF ELSE: sub $t2, $t1, $t0 # c = b - a FIN_IF: addi $t2, $t2, 10 # c = c + 10
  • 38. Ejemplo Código assembly para el siguiente código C: i = 0; sum = 0; do { sum = sum + a[i] * b[i]; i++; } while (i < 100) li $t0, 0 # i = 0; li $t1, 0 # $t1 = 0 (sum temporal) la $t2, SUM # $t2 = dirección de sum sw $t1, 0($t2) # sum = 0 LOOP: la $t3, A # $t3 = dirección a[0] la $t4, B # $t4 = dirección b[0] sll $t5, $t0, 2 # $t5 = i*4 add $t6, $t3, $t5 # $t6 = dirección a[i] lw $t7, 0($t6) # $t7 = a[i] add $t6, $t4, $t5 # $t6 = dirección b[i] lw $t8, 0($t6) # $t8 = b[i] mul, $t8, $t7, $t8 # $t8 = a[i]*b[i] add $t1, $t1, $t8 # $t1 = sum + a[i]*b[i] la $t2, SUM sw, $t1, 0($t2) # sum = sum + a[i] * b[i] add $t0, $t0, 1 # i = i + 1 slti $t7, $t0, 100 # i < 100? bne $t7, $zero, LOOP Vectores a y b y variable sum comienzan a partir de direcciones de memoria indicadas por rótulos A, B y SUM. Variable i asignada a registro $t0. ¿Posible optimizar código?
  • 39. Ejemplo (optimizado) Código assembly para el siguiente código C: i = 0; sum = 0; do { sum = sum + a[i] * b[i]; i++; } while (i < 100) li $t0, 0 # i = 0; li $t1, 0 # $t1 = 0 (sum temporal) la $t3, A # $t3 = dirección a[0] la $t4, B # $t4 = dirección b[0] LOOP: add $t6, $t3, $t0 # $t6 = dirección a[i] lw $t7, 0($t6) # $t7 = a[i] add $t6, $t4, $t0 # $t6 = dirección b[i] lw $t8, 0($t6) # $t8 = b[i] mul, $t8, $t7, $t8 # $t8 = a[i]*b[i] add $t1, $t1, $t8 # $t1 = sum + a[i]*b[i] add $t0, $t0, 4 # i = i + 1 slti $t7, $t0, 400 # i < 100? bne $t7, $zero, LOOP la $t2, SUM sw, $t1, 0($t2) # sum = sum + a[i] * b[i] Vectores a y b y variable sum comienzan a partir de direcciones de memoria indicadas por rótulos A, B y SUM. Variable i asignada a registro $t0.
  • 40.
  • 42.
  • 43.
  • 44.
  • 45. Algunas directivas al ensamblador .data Texto que sigue representa datos almacenados en el heap .text Texto que sigue representa instrucciones almacenadas en área de texto (código) .kdata Texto que sigue representa datos en área de datos del kernel (sistema operativo) .ktext Texto que sigue representa código en área de kernel .globl LABEL Rótulo LABEL es global (visible a todo el programa) .ascii str Almacenar string de texto str en ASCII sin un NULL al final .asciiz str Almacenar string de texto str en ASCII con un NULL (0) al final .word w1 … wn Almacenar n palabras (32b) en posiciones consecutivas de memoria .half h1 … hn Almacenar n medias palabras (16b) en posiciones consecutivas de memoria .byte b1 … bn Almacenar n bytes (8b) en posiciones consecutivas de memoria
  • 46. Ejemplo .data TEXTOSINULL: .ascii “texto 1” TEXTOCONUL: .asciiz “texto 2” DATOS: .word 16 124 1000 .text .globl MAIN MAIN: la $8, TEXTOSINUL la $9, TEXTOCONUL la $10, DATOS lw $11, 0($10) lw $12, 4($10) lw $13, 8($10)
  • 47.
  • 48.
  • 49. Ejemplo procedimiento simple int len; char[20] str; … len = strlen(str); … int strlen(char *str) { int len = 0; while (*str != 0) { str = str + 1; len = len + 1; } return len; } la $a0, str # $a0 = str jal STRLEN; # resultado retorna en $v0 STRLEN: li $v0, 0 # len = 0 WHILE: lb $t0, 0($a0) # $t0 = *str beq $t0, $zero, FIN_WHILE # if (*str == 0) goto FIN_W addi $a0, $a0, 1 # str = str + 1 addi $v0, $v0, 1 # len = len + 1 b WHILE # goto WHILE FIN_W: jr $ra # return len Utilizar convención estándar de uso de registros MIPS
  • 50. Otro ejemplo procedimiento int i; int a[100], b[100] … res = punto(a, b, 100); … int prod_punto(int v1[], int v2[], int n) { int i = 0; suma = 0; do { suma = suma + v1[i] * v2[i]; i++; } while (i < n) return suma; } la $a0, A # $a0 = &(a[0]) la $a1, B # $a1 = &(b[0]) li $a2, 100 # $a2 = 100 jal PUNTO # resultado en $v0 la $t0, RES sw $v0, 0($t0) … PUNTO: li $t0, 0 # i = 0 li $v0, 0 # suma = 0 WHILE: sll $t1, $t0, 2 # $t1 = i*4 add $t2, $a0, $t1 # $t2 = &(v1[i]) lw $t3, 0($t2) # $t3 = v1[i] add $t2, $a1, $t1 # $t2 = &(v2[i]) lw $t4, 0($t2) # $t4 = v2[i] mult $t3, $t3, $t4 # $t3 = v1[i] * v2[i] add $v0, $v0, $t3 # suma = suma +… addi $t0, $t0, 1 # i = i + 1 slt $t3, $t0, $a2 # i < n? bne $t3, $zero, WHILE jr $ra
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73. Convención uso de registros Dirección de retorno de función $ra $31 Puntero a la base del stack (Frame Pointer) $fp $30 Puntero al tope del stack (Stack Pointer) $sp $29 Puntero al heap (segmento datos global) $gp $28 Reservados al O.S. $k0-$k1 $26-$27 Temporales no salvados al llamar función $t8-$t9 $24-$25 Temporales salvados al llamar función $s0-$s7 $16-$23 Temporales no salvados al llamar función $t0-$t7 $8-$15 Argumentos en llamada función $a0-$a3 $4-$7 Evaluación expresiones y resultado funciones $v0-$v1 $2-$3 Reservado para temporal del ensamblador $at $1 Cero $zero $0 Uso Nombre Registro
  • 74.
  • 75.
  • 76.
  • 77.
  • 78. Ejemplo: Factorial recursivo int factorial(int n) { if (n == 0) return 1; else return n * factorial(n-1); } FACT: bne $a0, $0, L1 # saltar si n != 0 li $v0, 1 # retornar 1 jr $ra L1: addiu $sp, $sp, -12 # tamaño del nuevo stack es 12 bytes sw $fp, 0($sp) # almacenar $fp en el stack sw $ra, 4($sp) # almacenar $ra en el stack addiu $fp, $sp, 8 # $fp apunta al principio del stack sw $a0, 0($fp) # almacenar n en el stack addiu $a0, $a0, -1 # n - 1 jal FACT # resultado en $v0 lw $a0, 0($fp) # recuperar n lw $ra, 4($sp) # recuperar direccion de retorno lw $fp, 0($sp) # recuperar $fp addiu $sp, $sp, 12 # restaurar stack original $sp mul $v0, $v0, $a0 # n * fact(n-1) jr $ra Mostrar ejemplos usando fp y no usando fp, usando ConTEXT Ejercicio: hacer dibujo con marcos de activación y cadena de llamados
  • 79.
  • 80.
  • 81.
  • 83.