Una expresión es falsa si su valor es cero; verdadera si es diferente de cero.

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Una expresión es falsa si su valor es cero; verdadera si es diferente de cero."

Transcripción

1 5. Abstracción de bifurcaciones y saltos 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 es falso, entonces la expresión toma valor cero; uno en caso contrario. El and debe estar implementado con cortocircuito. Es decir si el primer operando es falso el resultado debe ser falso. Para la implementación en assembler, se requieren instrucciones de bifurcación: La instrucción de máquina: Se interpreta según: beq <reg1>,<reg2>, rótulo if ( reg1 == reg2) PC = rótulo; else PC = PC +4; Donde PC es un registro interno del procesador que apunta a la palabra donde se encuentra la instrucción beq. Entonces si los registros tienen contenidos iguales, la próxima instrucción que se ejecuta es la ubicada en la dirección simbólica rótulo. Se bifurca la secuencia de acciones del programa. También se requiere un salto incondicional a un rótulo. La macro instrucción: b rótulo se traduce a la de máquina: j rótulo que se interpreta como un salto incondicional a la dirección simbólica de una instrucción. Veamos algunos ejemplos: a) v8 = v7&&v6; se traduce en: beq beq la b $v7,$0,false $v6,$0,false $t8,1 set Leopoldo Silva Bijit

2 false: la $t8,0 set: move $v8,$t8 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA Leopoldo Silva Bijit

3 b) v7 = v6 v5; se traduce en: bne $v6,$0,true beq $v5,$0,false true: la $t8,1 b set false: la $t8,0 set: move $v7,$t8 c) v7=!v6; se traduce en: bne $v6,$0,clear la $t8,1 b set clear: la $t8,0 set: move $23,$t8 El lcc genera código empleando el stack para la evaluación de expresiones, el programador assembler puede optimizar el código mediante el empleo de registros temporales, que es lo que se ha empleado en los ejemplos anteriores Alternativa. La alternativa escrita en C: if (v8>v7) v6++; else v5--; se traduce, empleando macros, en: else: endif: ble $v8,$v7,else la $v6,1($v6) b endif subu $v5,$v5,1 La traducción a lenguaje de máquina es: slt $t8, $v7, $v8 ; ble $v8,$v7,else beq $t8, $zero, else addi $v6, $v6, 1 j endif ; bgez $0, endif else: addiu $v5, $v5, -1 Leopoldo Silva Bijit

4 endif: La instrucción de máquina: bifurca a rótulo si el registro es mayor o igual a cero (bgez) puede implementar un salto incondicional si se elige el registro con la constante cero, de este modo siempre se cumplirá la condición. Programación de condiciones. Empleando Bifurcaciones y Saltos. Basados en slt y beq. a) slt r1, r2, r3 Cuya interpretación es: if (r2<r3) r1=1; else r1=0; Y también, la lógicamente equivalente: if ( r2>=r3) r1=0; else r1=1; b) beq r2, r3, rótulo Usar sltu si los números son naturales. ( sin signo) Usar slti para comparar con constantes con signo. Usar sltiu para comparar con constantes sin signo (naturales). Obviamente las comparaciones de igualdad o desigualdad de dos registros se traducen directamente, empleando beq y bne. Veremos a continuación la implementación de comparaciones menor y mayor o igual, en base a slt y beq. Veremos la generación de otras condiciones, pero sólo describiremos la instrucción inicial, ya que el resto del código es idéntico. Para la siguiente alternativa: if (v8 >= v7) v6++; else v5--; La evaluación de la condición v8 >= v7 se logra con la macro: blt $v8, $v7, else Que es traducida a instrucciones de máquina según: slt $t8, $v8, $v7 bne $t8, $0, else Para la siguiente alternativa: if (v8 < v7) v6++; else v5--; La evaluación de la condición v8 < v7 se logra con la macro: bge $v8, $v7, else Que es traducida a instrucciones de máquina según: slt $t8, $v8, $v7 Leopoldo Silva Bijit

5 beq $t8, $0, else Para la siguiente alternativa: if (v8 <= v7) v6++; else v5--; La evaluación de la condición v8 <= v7 se logra con la macro: bgt $v8, $v7, else Que es traducida a instrucciones de máquina según: slt $t8, $v7, $v8 bne $t8, $0, else Para la siguiente alternativa: if (v8 == v7) v6++; else v5--; La evaluación de la condición v8 == v7 se logra directamente con la instrucción de máquina: bne $v8, $v7, else Para la siguiente alternativa: if (v8!= v7) v6++; else v5--; La evaluación de la condición v8!= v7 se logra directamente con la instrucción de máquina: beq $v8,$v7,else Para programar empleando instrucciones de máquina, la estrategia entonces es bifurcar al else. Más adelante se implementarán algunas instrucciones de máquina, para realizar un diseño de un procesador simple. Si se decide implementar sólo el beq, las instrucciones bne pueden ser reemplazadas por beq, como se ilustra a continuación: Por ejemplo: bne $t8, $0, else puede reemplazarse por la instrucción: beq $t8, $t7, else siempre que en $t7 se haya depositado un 1 previamente. La instrucción: bne $v8, $v7, else Leopoldo Silva Bijit

6 debe ser reemplazada por: beq $v8, $v7, then cambiando el orden de las acciones alternativas. Veamos otro ejemplo: El código: if (R5 < R6) R4++; else R2= R1-1; R3--; Se asume que los nombres de las variables en C, se tendrán en registros temporales, de igual número que la variable. Se usará el registro $t9 como de almacenamiento temporal, para formar la condición. Puede trasladarse según: slt $t9, $t5, $t6 # t9 = 1 si t5 < t6 y 0 si t5 >= t6 beq $t9, $zero, else # bifurca a else si t5 >= t6 addi $t4, $t4, 1 # acción del then j endif # salta al fin del if then else. else: addi $t2, $t1, -1 # acción del else endif: addi $t3, $t3, -1 # acción siguiente a la alternativa if then else. Se han empleado los símbolos: else y endif para hacer referencia a las direcciones donde se debe saltar o bifurcar. Estos nombres debe elegirlos el programador, y ojalá sean de ayuda al elaborar el código. Debido a que se dispone de bifurcación por alguna condición y también la bifurcación por el complemento de la condición; y que además puede efectuarse diferentes elecciones para los operandos en la instrucción de comparación (slt), el segmento de código anterior puede escribirse de diferentes maneras. En este caso no conviene cambiar el orden de los operandos en la comparación, ya que se desea evaluar t5 < t6, pero puede emplearse un bne, lo cual se ilustra a continuación: slt $t9, $t5, $t6 # t9 = 1 si t5 < t6 y 0 si t5 >= t6 bne $t9, $zero, if # bifurca a segmento del if si t5 < t6 addi $t2, $t1, -1 # acción del else j endif # salta al fin del if then else. if: addi $t4, $t4, 1 # acción del then endif: addi $t3, $t3, -1 # acción siguiente a la alternativa if then else. Leopoldo Silva Bijit

7 Direccionamiento. Referencias en saltos y bifurcaciones. La directiva (instrucción hacia el assembler).text le comunica al ensamblador que lo que viene a continuación son instrucciones. La directiva.globl establece una dirección como global, ésta podrá ser accesada desde otros módulos assembler. En el lenguaje C, se emplea el calificador extern, para especificar que una función (dirección) ha sido definida como global en otro módulo. Main, arriba y abajo son direcciones simbólicas. El programador emplea símbolos para las direcciones (rótulos) de memoria donde se encuentran almacenadas las instrucciones..text.globl main main: beq $t1, $t2, abajo arriba: add $t1, $t1, $t1 addi $t2, $t3, 5 abajo: beq $t1, $t2, arriba j arriba j main # para repetir la secuencia El ejemplo muestra referencias hacia delante (salto hacia instrucciones que están cargadas en direcciones mayores de la memoria que la que se está ejecutando) y hacia atrás (el caso del salto hacia el rótulo arriba). El assembler provee mecanismos para completar los campos binarios de los saltos y bifurcaciones. Para tal fin va incorporando los símbolos que aparecen en una tabla, en la cual se asocia la calidad del símbolo (si está en el módulo, o si es externo), con la dirección que le corresponde (si es que la conoce, en caso de referencias hacia delante no la conoce; y si no la conoce lo incorpora en la tabla como una referencia no satisfecha). Para ir colocando direcciones en la tabla, es preciso conocer la dirección inicial de la primera instrucción (esto puede establecerse mediante la directiva de origen), y el largo de la instrucción que se está ensamblando. Un procedimiento habitual es efectuar una primera pasada de lectura del código, en la cual no se ensambla, sólo se calculan direcciones y se va llenando la tabla, de este modo todos Leopoldo Silva Bijit

8 los símbolos locales al módulo quedan con sus direcciones, excepto los externos. Luego se efectúa una segunda pasada, en la que va generando el código binario de las instrucciones. Cuando se emplean bibliotecas o diferentes módulos, se traduce el texto assembler a un formato objeto, que en forma binaria contiene los códigos de operación y todos los campos que han podido calcularse, estableciendo algún tipo de marcas en campos que aún no pueden llenarse porque corresponden a símbolos externos; además de esto le agrega la tabla de símbolos del módulo. El ligador (linker) carga todos los módulos objeto, le adiciona los segmentos de código de funciones de biblioteca, y genera una sola tabla de símbolos, con las tablas que vienen en cada módulo objeto, de esta forma puede llenar las direcciones que le faltan en la tabla y luego reescribir los campos incompletos de las instrucciones. Cuando aparece el concepto multitarea, es decir tener varios programas en ejecución, tanto el assembler como el ligador se adaptaron para generar un código final que es relocalizable; es decir, no hay direcciones absolutas en el código binario. De este modo, el cargador (loader) puede depositar el programa el cualquier lugar de la memoria, es el loader el que establece las direcciones físicas que tendrán finalmente las instrucciones de un programa. Esto, a su vez demandó disponer de repertorios con modos de direccionamiento que permitan generar códigos relocalizables. El modo de direccionamiento relativo a PC, para saltos y bifurcaciones tiene esta capacidad. Si se agrega una instrucción assembler, todo el módulo debe ser reensamblado; ya que cambian los campos de direccionamiento de las instrucciones de saltos y bifurcaciones. Así también ocurre si se agregan datos, o se cambia su tamaño; todas las referencias a datos, a través de las instrucciones de carga y almacenamiento se modifican Repeticiones While. La sentencia básica de iteración en C es: mientras se cumpla la condición, realice acción. while (v8 > v0) v0++; Se traduce saltando al código que efectúa la evaluación de la condición; y si el test resulta verdadero, se bifurca al bloque que realiza las acciones que deben repetirse. j test bloque: addi $v0, $v0, 1 Leopoldo Silva Bijit

9 test: bgt $v8, $v0, bloque Las traducciones de los macros a secuencias de instrucciones de máquina es similar al caso analizado antes Do while. La repetición de a lo menos una vez: repita acción mientras condición; Se traduce en: do {v1++;} while (v8>v1); bloque: addi $v1, $v1, 1 L.6: bgt $v8, $v1, bloque Veamos otros ejemplos: El código: while ( R2 >= R4 ) {R2--; R3 = R3 +1;} R5--; En su implementación, lo que importa es formar la condición pedida; esto es R2 >=R4, o R2 < R4. El orden de los operandos en la comparación (slt), depende de la condición. Puede trasladarse según: While: slt $t9, $t2, $t4 # t9 =1 si t2 < t4 y 0 si t2 >= t4 bne $t9, $zero, Endwh # bifurca si es condición de término. addi $t2, $t2,-1 addi $t3, $t3, 1 j While Endwh:addi $t5, $t5, -1 También, sólo usando beq: While: slt $t9, $t2, $t4 # t9 =1 si t2 < t4 y 0 si t2 >= t4 beq $t9, $zero, bloque j Endwh bloque:addi $t2, $t2, -1 addi $t3, $t3, 1 j While Endwh:addi $t5, $t5, -1 Nótese que es más compacto el primer código para el while. Leopoldo Silva Bijit

10 Si se forma R2-R4 >= 0, puede emplearse la bifurcación bgez, para implementar la condición, como se muestra a continuación. sub $t2, $t2, $t4 j test While: addi $t2, $t2,-1 addi $t3, $t3, 1 test : bgez $t2, while # bifurca si se repite el bloque. add $t2, $t2, $t4 Endwh:addi $t5, $t5, -1 Código que es más eficiente, en velocidad, en caso que el bloque se repita un número elevado de veces (ejecuta tres instrucciones por bloque). Además sólo una bifurcación por bloque, lo cual mejora la ejecución en un procesador segmentado (pipeline) como se verá más adelante. Ver ejemplo 3.9 en el texto guía. La codificación correcta de la sentencia while implica el verificar que a medida que se efectúa el bloque repetitivo se vayan modificando algunas variables, de tal modo que la condición deje de ser cierta, en algún momento. Esto evita los lazos infinitos; si por mala codificación se producen, el procesador queda repitiendo permanentemente una secuencia de instrucciones. Esto se denomina hang-up (colgado). En el caso del ejemplo, debe verificarse que R2 disminuye o que R4 aumente, con lo cual deja de ser verdadera la condición (R2 >= R4), dando fin a la repetición For. Una operación frecuente es la repetición de un bloque de instrucciones un número conocido de veces, en los lenguajes de alto nivel suele denominarse for. El lenguaje C, posee una construcción especial para el for, que la hace muy poderosa. Se expresa según: for (inicio; condición; reinicio) bloque; Donde inicio, condición y reinicio son expresiones. La sentencia for tiene la siguiente interpretación: inicio; while (condición) { bloque; reinicio; } Leopoldo Silva Bijit

11 Es la sentencia más poderosa del lenguaje C para las repeticiones. Veamos un ejemplo: for(v8=0; v8<10; v8++) v0--; Se traduce en la secuencia: inicio: move $v8, $0 j test bloque: subu $v0,$v0,1 reinicio: addi $v8, $v8, 1 test: la $t8,10 blt $v8,$t8, bloque Nótese que en el caso del ejemplo (en el cual se compara la variable de control del for con una constante), si el compilador puede determinar que el bloque se realiza al inicio, puede omitirse el salto a test, después del inicio. Un ejemplo típico de for es: for ( i=0 ; i<n ; i++ ){ bloque de repetición }; Se evalúa la condición, luego se realiza el bloque y después se modifica la variable de control, y se vuelve a evaluar la condición. De esta forma, si se inicia la variable de control del for en cero (caso del ejemplo), después de realizado una vez el bloque, la variable se incrementa en uno; y así sucesivamente. Es decir, en el momento de evaluar la condición la variable de control registra el número de veces que se ha realizado el bloque. Si uno forma la expresión: (veces que se ha realizado el bloque)- (valor de la variable de control al evaluar la condición); podrá verificar, mediante razonamiento inductivo, que el valor de ésta es cero. El hecho de que dicha expresión no cambie su valor durante la repetición permite denominarla: invariante del lazo. Concepto que es útil para determinar el número exacto de veces que se desea repetir el bloque, y no una vez más o una vez menos, si se programa descuidadamente. La correcta construcción, implica verificar que desde la expresión de inicio y a medida que se ejecuta la expresión de reinicio se llegue a producir que la condición sea falsa. Si nunca la condición del for se hace falsa, tendremos un lazo infinito. Veremos cómo se compila un lazo regresivo, con las variables en registros: for ( R1=7 ; R1>0 ; R1-- ) R3 = R2+R1; Leopoldo Silva Bijit

12 Si se analiza la siguiente tabla: Veces que se ha Valor variable de control Valor condición realizado el bloque al evaluar condición 0 7 V 1 6 V 2 5 V 3 4 V 4 3 V 5 2 V 6 1 V 7 0 F Invariante del lazo = (veces que se ha realizado el bloque) + (valor de la variable de control al evaluar la condición) = 7 li $t1, 7 # inicio for: slt $t9, $zero, $t1 # t9 = 0 si 0 >= t1 beq $t9, $zero, endfor # condición add $t3, $t2, $t1 # bloque addi $t9, $t9, -1 # reinicio j for Las instrucciones slt y beq pueden reemplazarse por: blez $t1, endfor Los programas de alto nivel, le permiten al programador abstraerse de los saltos y bifurcaciones (algunos incluso le impiden, en prácticas de buena programación, emplear instrucciones de saltos o bifurcaciones). Además, en estos lenguajes, se restringen las posibilidades de saltos a mecanismos de programación estructurada. El compilador genera automáticamente el flujo de ejecución a través de saltos y bifurcaciones. El compilador lcc genera los lazos for con la siguiente codificación: Repasando, la construcción: for(inicio; condición; reinicio) ejecuta la expresión de inicio; luego evalúa la condición, y si es verdadera(valor diferente de cero) ejecuta el bloque asociado; finalmente evalúa la expresión de reinicio y vuelve a Leopoldo Silva Bijit

13 evaluar la condición y así sucesivamente hasta que ésta es falsa(valor cero), situación en que termina el for. Sean las variables locales i y j, y luego una sentencia for: int i, j; for(i=0 ;i>10; i++) j++; La traducción a assembler queda como sigue: #asume i en s8, j en s7, las considera locales. inicio: add $s8, $zero, $zero j condicion bloque: addi $s7, $s7, 1 reinicio: addi $s8, $s8, 1 #i++ for(inicio; condición; reinicio) bloque; inicio bloque condicion: addi $t8, $zero,10 slt $t7, $t8, $s8 # t7=1 si 10<i bne $t7, $zero, bloque endfor: V reinicio Condición F Ejemplo de construcción de sentencia for. La siguiente sentencia for, escribe el valor de i, para los valores que toma i, que son controlados por el for. int main(void) { int i; for(i=0; i < 10; i++) printf(" %d \n",i); return(0); } Si se compila empleando lcc, se obtiene:.set reorder.globl main Leopoldo Silva Bijit

14 .text.text.align 2.ent main main:.frame $sp,24,$31 addu $sp,$sp,-24 #arma el frame de 6 palabras( 6*4 = 24 Bytes).mask 0xc ,-4 sw $30,16($sp) #salva $30 ya que escribe en $30 en la rutina sw $31,20($sp) #salva $31 ya que existe un llamado dentro de la rutina move $30,$0 sp Tope del frame L.2: la $4,L.6 move $5,$30 jal printf L.3: la $30,1($30) la $24,10 blt $30,$24,L.2 offset move $2,$0 #valor de retorno L.1: lw $30,16($sp) #restaura $30 lw $31,20($sp) #restaura $30 addu $sp,$sp,24 #desarma el frame j $31.end main.rdata.align 0 L.6:.byte 32.byte 37.byte 100.byte 32.byte 10.byte 0 Si el programa hubiera sido escrito en assembler, respetando las reglas del compilador lcc, y no empleando macros, y adicionalmente generando las condiciones empleando slt y beq, quedaría como sigue:.globl main.text.align 2 #almacenar con alineamiento de palabras. main: addu $sp,$sp,-24 sw $s8,16($sp) $30 $31 Fondo del frame Leopoldo Silva Bijit

15 sw inicio: add j $ra,20($sp) $s8,$zero,$zero test bloque:la $a0, format #pasa argumentos en registros ai move $a1,$s8 jal printf reinit: addi $s8,$s8,1 #escribe en $s8 test: addi $t8,$zero,10 addi $t7,$zero,1 slt $t6,$s8,$t8 # t6=1 si i<10 beq $t6,$t7,bloque endfor: add $v0,$zero,$zero #retorna resultados en registros vi lw $s8,16($sp) #restaura $s8 lw $ra,20($sp) # addu $sp,$sp,24 j $ra.end main.data.align 0 format: #almacenar con alineamiento de bytes..asciiz " %d \n" Nótese el uso de nombres simbólicos para los registros, para los nombres de los rótulos, el empleo de la directiva.asciiz, que permite describir string en forma legible. Se han agregado comentarios. Los cuatro espacios de palabra en el tope del stack, se reservan para que la rutina que es invocada(en este caso printf) guarde los argumentos a0, a1, a2 y a3. Si se observa el uso de los registros temporales $t8 y $t7, se advierte que se cargan con constantes. Y que estas instrucciones están dentro del bloque que se repite. El programador assembler(y hoy en día casi todos los compiladores) extraen de los bloques de repetición estas recargas de constantes y las dejan fuera de éstos. Se decide dejarlas como variables locales, y para esto se emplean registros s, los que deben salvarse si son modificados por la función. Se logra un programa que se ejecuta más velozmente. Analizando las condiciones del for, éste siempre se realiza la primera vez, lo cual permite eliminar el primer salto a test. Leopoldo Silva Bijit

16 Nótese que no pueden emplearse registros t, ya que no se sabe si la rutina printf los emplea. Pero si se sabe que no son empleados en printf, podrían emplearse; con lo cual se ahorraría salvar y restaurar registros s en el stack..globl main.text.align 2 #almacenar con alineamiento de palabras. main: addu $sp,$sp,-32 sw $s6,16($sp) sw $s7,20($sp) sw $s8,24($sp) sw $ra,28($sp) inicio: add $s8,$zero,$zero #escribe en $s8 addi $s7,$zero,10 addi $s6,$zero,1 bloque:la $a0, format #pasa argumentos en registros ai move $a1, $s8 jal printf reinit: addi $s8,$s8,1 test: slt $t8,$s8,$s7 # t8=1 si i<10 beq $t8,$s6,bloque endfor: add $v0,$zero,$zero #retorna resultados en registros vi lw $s6,16($sp) lw $s7,20($sp) lw $s8,24($sp) #restaura $s8 lw $ra,28($sp) # addu $sp,$sp,32 j $ra.end main.data.align 0 format: #almacenar con alineamiento de bytes..asciiz " %d \n" Si el programador (de main) sabe que tiene disponibles los registros temporales t0, t1, t2 y t4, puede reorganizar aún más el código. Ahora no se requiere disponer de un frame, todas las variables quedan en registros temporales, que no requieren ser salvados. Leopoldo Silva Bijit

17 .globl main.text.align 2 #almacenar instrucciones con alineamiento de palabras. main: add $t3, $zero, $ra #salva $ra en registro temporal $t3 inicio: add $t2, $zero, $zero #$t2 es i addi $t1, $zero, 10 addi $t0, $zero, 1 bloque:la $a0, format #pasa argumentos en registros ai add $a1,$zero,$t2 jal printf reinit: addi $t2, $t2, 1 test: slt $t8, $t2, $t1 # t8=1 si i<10 beq $t8, $t0, bloque endfor: add $v0, $zero, $zero #retorna resultados en registros vi add $ra, $zero, $t3 #recupera $ra. j $ra.end main.data.align 0 #almacenar string con alineamiento de bytes. format:.asciiz " %d \n" 5.4. Expresión condicional. La construcción: Se traduce en: v8= (v7>v6)? v7 : v6; ble $v7, $v6, else move $t8, $v7 b asigna else: move $t8, $v6 asigna: move $v8, $t8 Leopoldo Silva Bijit

18 En lcc no se emplea registros temporales. Las expresiones almacenan temporales en el stack. 5.5 Decisión múltiple. La proposición switch siguiente: Se traduce según: switch (v7) { case 1: case 2: v2++; break; case 3: v3--; break; default: v3=++v5; } la $t8, 1 beq $v7, $t8, case1 la $t8, 2 beq $v7, $t8, case1 la $t8, 3 beq $v7, $t8, case3 b defecto case1: addi $v2, $v2, 1 b salida case3: subu $v3, $v3, 1 b salida defecto: addi $t8, $v5, 1 move $v5, $t8 move $v3, $t8 salida: Se generan bifurcaciones a las acciones de cada caso, de acuerdo al valor de las etiquetas. El caso por defecto, si está presente es un caso más, al cual se salta incondicionalmente al final de los casos presentes. Nótese que el break se traduce como un salto incondicional a la salida. Si no están presentes, se ejecutan las acciones de los casos siguientes. Leopoldo Silva Bijit

19 5.6. Break. Continue. Cuando se encuentra la sentencia break, en las iteraciones: for, while o do, se termina la iteración; tal como lo hace en el switch. Es un salto incondicional a la siguiente sentencia. En assembler esto es más evidente que en C, debido a los saltos explícitos del assembler. Cuando se encuentra la sentencia continue, en las iteraciones: for, while o do, se inicia la siguiente iteración. En el caso del while y do, se salta incondicionalmente al test de la condición; en el caso del for se salta incondicionalmente al texto de reinicio. for(v8=0 ;v8<10 ;v8++ ) { v6++; if(v6>8) break;v5++; } move $30, $0 bloque: addi $v6, $v6, 1 la $t8, 8 ble $v6, $t8, endblk b salida # break endblk: addi $v5, $v5, 1 reinicio: addi $v8, $v8, 1 test: la $t8, 10 blt $v8, $t8, bloque salida: El caso del continue sólo difiere que salta a reinicio, en lugar del salto a la salida del break. for(v8=0 ;v8<10 ;v8++ ) { v6++; if(v6>8) continue;v5++; } move $30, $0 bloque: addi $v6, $v6,1 la $t8, 8 ble $v6, $t8, endblk b reinicio # continue endblk: addi $v5, $v5, 1 reinicio: addi $v8, $v8, 1 test: la $t8, 10 blt $v8, $t8, bloque salida: Leopoldo Silva Bijit

Abstracción de bifurcaciones y saltos.

Abstracció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 detalles

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO311 Estructuras de Computadores Programación Assembler.

UNIVERSIDAD 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 detalles

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

Ejercicios 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 detalles

Creación del ambiente de trabajo.

Creació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 detalles

Operadores. Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++.

Operadores. Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++. Operadores Java es un lenguaje rico en operadores, que son casi idénticos a los de C/C++. Operadores aritméticos Son operadores binarios (requieren siempre dos operandos) que realizan las operaciones aritméticas

Más detalles

Laboratorio 2: Uso de un Simulador MIPS32: PCSpim

Laboratorio 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 detalles

TEMA 5. ESTRUCTURAS DE CONTROL: BUCLES.

TEMA 5. ESTRUCTURAS DE CONTROL: BUCLES. TEMA 5. ESTRUCTURAS DE CONTROL: BUCLES. Una de las características de las computadoras que aumenta considerablemente su potencia es su capacidad para ejecutar una tarea muchas (repetidas) veces con gran

Más detalles

Funciones. Diseño de funciones. Uso de instrucción jal y retorno de subrutina.

Funciones. 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 detalles

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

Tema 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 detalles

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones.

Palabras reservadas de C++ y C. Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones. Palabras reservadas de C++ y C Una palabra reservada no puede declararse como un identificador, esto haría un conflicto entre conectores y funciones. A continuación se muestra el link del listado de palabras

Más detalles

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

Fundamentos 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 detalles

8. Diseño de la codificación binaria del repertorio de Instrucciones.

8. 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 detalles

Procesador MIPS - Registros

Procesador 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 detalles

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

Grupo 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 detalles

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

Ejercicios 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 detalles

Fundamentos y Arquitectura de Computadores (ITTSE UV)

Fundamentos 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 detalles

Laboratorio de Arquitectura de Redes. Sentencias de control en lenguaje C

Laboratorio de Arquitectura de Redes. Sentencias de control en lenguaje C Laboratorio de Arquitectura de Redes Sentencias de control en lenguaje C Sentencias de control en lenguaje C Introducción Sentencia if-else Sentencia switch Sentencia while Sentencia do-while Sentencia

Más detalles

Informática Ingeniería en Electrónica y Automática Industrial

Informática Ingeniería en Electrónica y Automática Industrial Informática Ingeniería en Electrónica y Automática Industrial Sentencias de control en lenguaje Sentencias de control en lenguaje Introducción Sentencia if-else Sentencia switch Sentencia while Sentencia

Más detalles

El repertorio de instrucciones

El 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 detalles

Estructuras de Computadores I Tarea 02 02/99

Estructuras 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 detalles

Fundamentos y Arquitectura de Computadores (ITTSE UV)

Fundamentos 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 detalles

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

Arquitectura 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 detalles

3. Instrucciones: lenguaje de la máquina

3. 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 detalles

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 3. Acciones Estructuradas.

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 3. Acciones Estructuradas. UNIERSIDD TENI EDERIO SNT MRI DEPRTMENTO DE ELETRONI apítulo 3. cciones Estructuradas. 3. cciones Estructuradas Por estructurar se entiende secuenciar las acciones primitivas sobre los datos; es decir:

Más detalles

Arquitectura del MIPS: Introducción

Arquitectura 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 detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java II... 6 Estructuras de control... 7 Estructuras de selección... 8 Sentencia if... 9 Sentencia if - else... 12 Operador condicional...

Más detalles

Pr. Dr. Xavier Bonnaire

Pr. 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 detalles

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

Tema 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 detalles

Unidad 3. Facultad de Ciencias Departamento de Electrónica

Unidad 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 detalles

ESTRUCTURAS DE CONTROL

ESTRUCTURAS DE CONTROL ESTRUCTURAS DE CONTROL En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa. Con las estructuras de control se puede: De

Más detalles

Construyendo Programas más Complejos

Construyendo Programas más Complejos Arquitectura de Ordenadores Construcciones de Alto Nivel en Ensamblador Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Construyendo Programas más

Más detalles

Generación de un ejecutable

Generació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 detalles

MIPS. Universidad de Sonora 2

MIPS. 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 detalles

La Unidad Aritmética

La 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 detalles

Organización de Computadoras. Principios de Conjuntos de Intrucciones

Organizació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 detalles

INTRUCCIONES: LENGUAJE MAQUINA

INTRUCCIONES: 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 detalles

Sesión 11 Implementación de sentencias condicionales

Sesión 11 Implementación de sentencias condicionales INGENIERÍATÉCNICA EN INFORMÁTICA DE GESTIÓN. CURSO 2001-2002 LABORATORIO DE ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES Sesión 11 Implementación de sentencias condicionales INSTRUCCIONES DE COMPARACIÓN Y SALTOS

Más detalles

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 2. Acciones Primitivas.

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 2. Acciones Primitivas. 2. ACCIONES PRIMITIVAS. En los lenguajes de alto nivel existen cuatro instrucciones primitivas que reflejan lo que un computador puede realizar (en este nivel de abstracción). Se describirán las instrucciones

Más detalles

Tema 06: Estructuras y sentencias de control en C

Tema 06: Estructuras y sentencias de control en C Tema 06: Estructuras y sentencias de control en C M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A.

Más detalles

Bus de direcciones. Bus de datos

Bus de direcciones. Bus de datos 1) INTRODUCCIÓN A LA MÁQUINA SENCILLA La máquina sencilla (MS) es un computador concebido para fines exclusivamente didácticos. MS sólo dispone de dos bloques: Unidad Central de Proceso y memoria principal.

Más detalles

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

Estructura 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 detalles

Programación en ensamblador Ejercicios propuestos

Programació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 detalles

Conceptos Programa Programa objeto Pseudocódigo Algoritmos y Diagramas de flujo 1) Finitud 2) Definición 3) Entrada

Conceptos Programa Programa objeto Pseudocódigo Algoritmos y Diagramas de flujo 1) Finitud 2) Definición 3) Entrada Conceptos Programa Se le llama programa a la serie de instrucciones escritas en alguno de los lenguajes, por medio de los cuales se logra que la computadora realice todas las operaciones o decisiones señaladas

Más detalles

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

Sistema 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 detalles

El procesador. Datapath para las instrucciones de brinco

El 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 detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

Más detalles

Programación en Lenguaje C

Programación en Lenguaje C Lenguaje de programación C Programación en Lenguaje C Introducción El Lenguaje de programación C fue implantado por primera vez en los años 70 por Dennis Ritchie para una computadora DEC PDP-11 corriendo

Más detalles

FACULTAD DE INGENIERIA

FACULTAD DE INGENIERIA i FACULTAD DE INGENIERIA AUTORES DEL CONTENIDO INGENIERO ELKIN GERMAN RODRIGUEZ VASQUEZ ID Facebook: www.facebook.com/elkinrodriguezv Correo: elking_r88@hotmail.com INGENIERO ARIEL LEONARDO MOLINA VITERI

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión III La Sintaxis de Java II... 6 Estructuras de Control... 7 Estructuras de Selección... 8 Sentencia

Más detalles

UNIDAD 2: Instrucciones: el lenguaje de las computadoras.

UNIDAD 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 detalles

Organización procesador MIPS

Organizació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 detalles

Tema 3. Estructuras de control

Tema 3. Estructuras de control Tema 3. Estructuras de control 3.1. Secuencial 3.2. Selección 3.3. Repetición 2 Objetivos Objetivos del tema: Conocer y saber la utilidad de las tres estructuras de control (secuencial, alternativa y repetitiva)

Más detalles

Lección 3 Sentencias de control

Lección 3 Sentencias de control 3.1. INTRODUCCIÓN - Hasta aquí: ejecución secuencial de los programas. - Aquí vamos a ver: Lección 3 Sentencias de control Sentencias de control Sentencias condicionales: if- y switch-case Sirven para

Más detalles

Funciones y Datos en Intel 8086

Funciones y Datos en Intel 8086 y Datos en Intel 8086 Departamento de Arquitectura 1 1 Instituto de Computación Facultad de Ingeniería Universidad de la República Arquitectura de Computadoras, 2016 Temas 1 2 Tipos atómicos Tipos estructurados

Más detalles

Arquitectura 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 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 detalles

Diseño de compiladores. Organización de memoria. Organización de memoria. Organización de memoria. Zona de código 04/05/2014 ORGANIZACIÓN DE MEMORIA

Diseño de compiladores. Organización de memoria. Organización de memoria. Organización de memoria. Zona de código 04/05/2014 ORGANIZACIÓN DE MEMORIA Diseño de compiladores Gestión de la memoria / Generación de código ORGANIZACIÓN DE MEMORIA Organización de memoria Depende del tipo de lenguaje (declarativos, imperativos), del compilador y del sistema

Más detalles

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

UNIVERSIDAD 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 detalles

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

Tema 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 detalles

Ejercicios para el 3er parcial

Ejercicios para el 3er parcial Problema 1: Representar la ejecución de las siguientes instrucciones: Add $2, $5, $4 Add $4, $2, $5 Lw $5, 100($2) Add $3, $5, $4 Beq $8, $8, s1 And $1, $2, $3 OR $4, $5, $6 s1: Sub $7, $8, $9 Ejercicios

Más detalles

Puede clasificarse en cuatro componentes básicas la eficiencia de un programa:

Puede clasificarse en cuatro componentes básicas la eficiencia de un programa: 24. Eficiencia. Complejidad temporal. 24. Introducción. La eficiencia de un programa es una medida de la cantidad de recursos que se requieren para producir resultados correctos. Hace algunos años atrás,

Más detalles

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática Programación de Computadores 4 Iteraciones y Decisiones Prof. Javier Cañas Universidad Técnica Federico Santa María Departamento de Informática Contenido 1 Introducción 2 Operadores Relacionales y Lógicos

Más detalles

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina

Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Unidad II: Fundamentos de la Programación Estructurada Algoritmo, Estructuras y Programación I Ing. Marglorie Colina Estructura General de un Programa Zona de ficheros de cabecera de las librerías Zona

Más detalles

Capítulo 4. Control de flujo. Continuar

Capítulo 4. Control de flujo. Continuar Capítulo 4 Control de flujo Continuar Introducción El control de flujo permite encausar a la computadora sobre la ruta que debe seguir al momento de la ejecución de un programa, para ello se apoya en las

Más detalles

Archivo ASM. Es el documento que contiene el código fuente del programa.

Archivo ASM. Es el documento que contiene el código fuente del programa. ESTRUCTURA GENERAL Todo programa en ensamblador debe ser generado con extensión ASM. Al ser ensamblado se generan archivos en código objeto (OBJ) para reconocer los mnemónicos como códigos de operación.

Más detalles

FUNDAMENTOS PARA LA CONSTRUCCIÓN DEL CÓDIGO A PARTIR DEL ALGORITMO

FUNDAMENTOS PARA LA CONSTRUCCIÓN DEL CÓDIGO A PARTIR DEL ALGORITMO FUNDAMENTOS PARA LA CONSTRUCCIÓN DEL CÓDIGO A PARTIR DEL ALGORITMO 3.2 Variables, tipos, expresiones y asignación 3.3 Estructuras de control condicional e iterativo. MODIFICADORES DE ALCANCE CONST Y STATIC

Más detalles

Arquitectura del procesador MIPS R2000

Arquitectura 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 detalles

Práctica 3: Programación en ASM Orga 1

Práctica 3: Programación en ASM Orga 1 Ignacio Eguinoa Organización del Computador I DC - UBA Segundo Cuatrimestre de 2015 Generaciones de lenguajes 1G: Lenguaje de máquina(código binario de operaciones) 2G: Lenguaje Ensamblador(Assembly) (Textual

Más detalles

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo Tema 4 Control de flujo Programación 2015-2016 Programación - Tema 4: Control de Flujo 1 Tema 4. Control de flujo Introducción. Estructuras condicionales. Estructuras de repetición. Programación - Tema

Más detalles

Estructuras de Control (y su forma en Python y en C) Clase 5 Introducción a la Computación Patricia Borensztejn

Estructuras de Control (y su forma en Python y en C) Clase 5 Introducción a la Computación Patricia Borensztejn Estructuras de Control (y su forma en Python y en C) Clase 5 Introducción a la Computación Patricia Borensztejn Estructuras de Control En el modelo de ejecución secuencial que vimos, el procesador repite:

Más detalles

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

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 detalles

Laboratorio 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 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 detalles

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González. Programación Básica Arturo Vega González a.vega@ugto.mx Division de Ciencias e Ingenierías Universidad de Guanajuato Campus León Sesión 5 Universidad de Guanajuato, DCI, Campus León 1 / 31 Universidad

Más detalles

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ; TEMA 5. CONTROL DE FLUJO DEL PROGRAMA 5.1 Sentencias Una sentencia es una expresión seguida de un punto y coma. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ; El ; es obligatorio

Más detalles

Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Tipos de Esquema

Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Esquemas repetitivos en Fortran 90. Tipos de Esquema Los esquemas repetitivos permiten implementar iteraciones del lenguaje algorítmico (mientras, repetir, para, hasta). Podemos dividir los esquemas según: - Se conozcan el número de iteraciones a priori,

Más detalles

Programación. Test Autoevaluación Tema 4

Programación. Test Autoevaluación Tema 4 Programación Test Autoevaluación Tema 4 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.

Más detalles

Plataformas de soporte computacional: arquitecturas avanzadas,

Plataformas 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 detalles

Programación: Estructuras de Control

Programación: Estructuras de Control Programación: 2 Estructuras de Control Contenido 2.1.- Introducción 2.2.- Estructuras de Selección 2.2.1.- Sentencia if 2.2.2.- Sentencia switch 2.3.- Estructuras de Iteración 2.3.1.- Sentencia while 2.3.2.-

Más detalles

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 27. Verificación analítica de programas.

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Programación en Pascal Capítulo 27. Verificación analítica de programas. 27. VERIFICACION ANALITICA DE PROGRAMAS El texto de un programa determina un patrón de conducta para el proceso o computación. Un programa puede originar una cantidad no especificada, quizá infinita de

Más detalles

SPIM: Un simulador del repertorio de instrucciones

SPIM: 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 detalles

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

Organización del Computador 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 detalles

Seguimiento. Organización del Computador I. Gustavo Cairo Carlos A. Di Pietro Carolina Lang. 1 er Cuatrimestre de 2016

Seguimiento. 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 detalles

LENGUAJES DE PROGRAMACIÓN. Solución al Ejercicio de Autocomprobación 1

LENGUAJES DE PROGRAMACIÓN. Solución al Ejercicio de Autocomprobación 1 Solución al Ejercicio de Autocomprobación 1 PREGUNTA 1 (1 punto) Señale razonadamente la veracidad o falsedad de las afirmaciones siguientes: A. La diferencia fundamental entre los lenguajes ensamblador

Más detalles

Esquemas repetitivos en Fortran 90

Esquemas repetitivos en Fortran 90 Los esquemas repetitivos permiten implementar iteraciones del lenguaje algorítmico (mientras, repetir, para, hasta). Podemos dividir los esquemas según: - Se conozcan el número de iteraciones a priori,

Más detalles

Programación Estructurada. Sesión 2:El lenguaje de programación C

Programación Estructurada. Sesión 2:El lenguaje de programación C Programación Estructurada Sesión 2:El lenguaje de programación C Contextualización Una parte importante del lenguaje C son las palabras reservadas, son identificadores con un significado predefinido. Estas

Más detalles

Repertorio de Instrucciones

Repertorio de Instrucciones 1. Introducción. La descripción de un computador digital puede efectuarse mediante la consideración de diferentes niveles de abstracción. La siguiente figura ilustra diversas componentes abstractas: Aplicaciones

Más detalles

Java. Introducción a la Programación Orientada a Objetos

Java. Introducción a la Programación Orientada a Objetos Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código independiente de la arquitectura de la computadora

Más detalles

Preliminares: programación con C++

Preliminares: programación con C++ Preliminares: programación con C++ JUAN CARLOS CONDE RAMÍREZ INTRODUCTION TO PROGRAMMING Archivos y Comentarios Todo programa en lenguaje C++ debe tener la siguiente extensión: file.c, file.cc file.cpp

Más detalles

TEMA 4. ESTRUCTURAS DE CONTROL

TEMA 4. ESTRUCTURAS DE CONTROL M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 4. ESTRUCTURAS DE CONTROL Grado en Ingeniería en Tecnologías Industriales Programación CONTENIDOS 4.1.

Más detalles

Sentencias de control de flujo

Sentencias de control de flujo Bucles Sentencias de control de flujo Departamento de Electrónica Fundación San Valero Bucles Hasta ahora los programas que hemos visto eran lineales. Comenzaban por la primera instrucción y acababan por

Más detalles

Operadores aritméticos

Operadores aritméticos Bloque 3.2 Operadores aritméticos Suma : x + y Resta : x y Multiplicación : x * y División : x / y Módulo : x % y (resto de la división Si los operandos son enteros tipo del resultado

Más detalles

Guía práctica de estudio 05: Estructuras de selección

Guía práctica de estudio 05: Estructuras de selección Guía práctica de estudio 05: Estructuras de selección Elaborado por: M.C. M. Angélica Nakayama C. Ing. Jorge A. Solano Gálvez Autorizado por: M.C. Alejandro Velázquez Mena Guía práctica de estudio 05:

Más detalles

Paradigmas de lenguajes de programación. Introducción a la programación imperativa. Lenguaje C. Programación imperativa

Paradigmas de lenguajes de programación. Introducción a la programación imperativa. Lenguaje C. Programación imperativa Paradigmas de lenguajes de programación Introducción a la programación imperativa Algoritmos y Estructuras de Datos I Paradigma: Definición del modo en el que se especifica el cómputo (que luego es implementado

Más detalles

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN - Introducción - Sintaxis - Semántica básica - Tipos de datos - Expresiones y enunciados - Procedimientos y ambientes - Tipos abstractos de datos y módulos

Más detalles

a) if (i==5){ j=2*k; k=k+1; } else { j=k; k=1; } c) for (i=0, i<5, i++){ j=k+m; m=2*m; } b) if (i<0){ i=i-5; } if (i==0){ i=4; }

a) if (i==5){ j=2*k; k=k+1; } else { j=k; k=1; } c) for (i=0, i<5, i++){ j=k+m; m=2*m; } b) if (i<0){ i=i-5; } if (i==0){ i=4; } Problemas IJVM MIC-1 EC2721 Arquitectura del computador I (Recopilación y adaptación resumida para Oct/2003 de problemas de los profesores Margarita Juanatey, Fidel Gil, Mónica Parada, Osberth De Castro,

Más detalles

Centro Universitario UAEM Zumpango! Ingeniería en Computación! Programación estructurada

Centro Universitario UAEM Zumpango! Ingeniería en Computación! Programación estructurada Centro Universitario UAEM Zumpango!! Agosto 2015 Identificación de la Unidad de Aprendizaje (UA) Nombre UA: Programación esctructurada (L41012) Total de horas a la semana: 6 Créditos: 9 Carácter de la

Más detalles

TEMA 4: Programación estructurada

TEMA 4: Programación estructurada TEMA 4: Programación estructurada 4.1.-Introducción. Teorema de la programación estructurada El principio fundamental de la programación estructurada es que en todo momento el programador pueda mantener

Más detalles