Una expresión es falsa si su valor es cero; verdadera si es diferente de cero.
|
|
- Roberto Valdéz Rodríguez
- hace 5 años
- Vistas:
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.
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 detallesUNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO311 Estructuras de Computadores Programación Assembler.
2. Creación del ambiente de trabajo. Una vez instalado el compilador cruzado lcc, éste queda en C:\Program Files\lcc\4.1 Conviene crear una subcarpeta para colocar los ejemplos. Sea ésta ej. En la carpeta
Más detallesEjercicios del Tema 3. Fundamentos de la programación en ensamblador
Ejercicios del Tema 3. Fundamentos de la programación en ensamblador Ejercicio 1. Dada la siguiente expresión de un lenguaje de alto nivel int a = 6; int b = 7; int c = 3; int d; d = (a+b) * (a+b); Indique
Más detallesCreación del ambiente de trabajo.
Capítulo 2. 1 Creación del ambiente de trabajo. Una vez instalado el compilador cruzado lcc, éste queda en C:\Program Files\lcc\4.1 Conviene crear una subcarpeta para colocar los ejemplos. Sea ésta ej.
Más detallesOperadores. 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 detallesLaboratorio 2: Uso de un Simulador MIPS32: PCSpim
Laboratorio 2: Uso de un Simulador MIPS32: PCSpim Objetivos. Dominar el uso de un simulador assembler y herramientas para la depuración de programas. Analizar la creación de frames en la invocación de
Más detallesTEMA 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 detallesFunciones. Diseño de funciones. Uso de instrucción jal y retorno de subrutina.
MIPS Funciones 1 Funciones Diseño de funciones. Uso de instrucción jal y retorno de subrutina. Se suelen denominar funciones, procedimientos, subrutinas, subprogramas a las estructuras que emplean los
Más detallesTema 3 (III) Fundamentos de la programación en ensamblador
Tema 3 (III) Fundamentos de la programación en ensamblador Grupo ARCOS Estructura de Computadores Grado en Ingeniería Informática Universidad Carlos III de Madrid Contenido } Fundamentos básicos de la
Más detallesPalabras 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 detallesFundamentos de los Computadores Grado en Ingeniería Informática
Repaso Arquitectura MIPS Fundamentos de los Computadores Grado en Ingeniería Informática Arquitectura MIPS Registros Instrucciones Organización de memoria Formato de las instrucciones Modos de direccionamiento
Más detalles8. Diseño de la codificación binaria del repertorio de Instrucciones.
8. Diseño de la codificación binaria del repertorio de Instrucciones. Se desea elegir los códigos binarios de las instrucciones. Esta parte, en forma indirecta especifica lo que debe realizar un programa
Más detallesProcesador MIPS - Registros
MIPS Microprocessor without Interlocked Pipeline Stages Surgió a comienzos de los 80 en Stanford. Sintetiza las principales ideas de RISC. Arquitectura eficiente y simple. 1 Procesador MIPS - Registros
Más detallesGrupo de Arquitectura y Tecnología de Computadores (ARCOS)
Grupo de Arquitectura y Tecnología de Computadores (ARCOS) http://arcos.inf.uc3m.es/~ec 2 http://arcos.inf.uc3m.es/~ec 4 http://arcos.inf.uc3m.es/~ec 5 http://arcos.inf.uc3m.es/~ec 6 Código fuente en
Más detallesEjercicios del Tema 3. Fundamentos de la programación en ensamblador
Ejercicios del Tema 3. Fundamentos de la programación en ensamblador Ejercicio 1. Escriba un programa en ensamblador del MIPS 32 para calcular la suma de los 100 primeros números naturales. El programa
Más detallesFundamentos y Arquitectura de Computadores (ITTSE UV)
REGISTROS DEL MIPS32 Nombre Código del Uso común registro $zero 0 El contenido de este registro siempre es nulo $v0 - $v1 2 3 Valores de retorno para las llamadas al sistema $a0 - $a3 4 7 Argumentos para
Más detallesLaboratorio 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 detallesInformá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 detallesEl repertorio de instrucciones
El repertorio de instrucciones Montse Bóo Cepeda Este trabajo está publicado bajo licencia Creative Commons Attribution- NonCommercial-ShareAlike 2.5 Spain. Estructura del curso 1. Evolución y caracterización
Más detallesEstructuras de Computadores I Tarea 02 02/99
Estructuras de Computadores I Tarea 02 02/99 1. Dada la secuencia de bits: 0011 0100 0101 0101 0100 0011 0100 0010 Qué representa, asumiendo que es: a. Un número entero en complemento dos. b. Fracción
Más detallesFundamentos y Arquitectura de Computadores (ITTSE UV)
Fundamentos y Arquitectura de Computadores (ITTSE UV) F. Micó REGISTROS DEL MIPS R2000/R3000 Nombre Código del Uso registro $zero 0 Valor constante 0 $v0 - $v1 2 3 Valores de retorno para las llamadas
Más detallesArquitectura 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 detalles3. Instrucciones: lenguaje de la máquina
3. Instrucciones: lenguaje de la máquina Fundamentos de Computadores Ingeniería de Telecomunicación Raúl Durán Díaz Departamento de Automática Escuela Politécnica Superior Curso académico 2009 2010 Raúl
Más detallesUNIVERSIDAD 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 detallesArquitectura del MIPS: Introducción
Arquitectura del MIPS: Introducción Montse Bóo Cepeda Este trabajo está publicado bajo licencia Creative Commons Attribution- NonCommercial-ShareAlike 2.5 Spain. Estructura del curso 1. Evolución y caracterización
Más detallesCentro 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 detallesPr. Dr. Xavier Bonnaire
Pr. Dr. Xavier Bonnaire Slide 1 Pr. Dr. Xavier Bonnaire - Universidad Tecnica Federico Santa María Temario Introducción Estructura Básica de un Computador Lenguaje de Máquina Básico Instrucciones para
Más detallesTema 3 (I) Fundamentos de la programación en ensamblador
Tema 3 (I) Fundamentos de la programación en ensamblador Grupo ARCOS Estructura de Computadores Grado en Ingeniería Informática Universidad Carlos III de Madrid Contenidos 1. Fundamentos básicos de la
Más detallesUnidad 3. Facultad de Ciencias Departamento de Electrónica
Universidad Autónoma de San Luis Potosí Facultad de Ciencias Departamento de Electrónica Unidad 3 Instrucciones: Lenguaje de la Computadora Dra. Ruth M. Aguilar Ponce Primavera Unidad 3 Operaciones del
Más detallesESTRUCTURAS 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 detallesConstruyendo 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 detallesGeneración de un ejecutable
ASSEMBLER Generación de un ejecutable Programa de alto nivel Programa Compiler Assembler Linker Archivo Ejecutable Programa en lenguaje assembler Archivo Fuente Assembler Archivo Objeto Archivo Fuente
Más detallesMIPS. Universidad de Sonora 2
MIPS MIPS (Microprocessor without Interlocked Pipeline Stages) es una familia de microprocesadores RISC desarrollada por MIPS Technologies desde 1981 y por Imagination Technologies desde 2012. Principio
Más detallesLa Unidad Aritmética
Prof. Rodrigo Araya E. raraya@inf.utfsm.cl Universidad Técnica Federico Santa María Departamento de Informática Valparaíso, 1 er Semestre 2006 1 2 3 4 5 En este capítulo profundizaremos la aritmética computacional
Más detallesOrganización de Computadoras. Principios de Conjuntos de Intrucciones
Organización de Computadoras Principios de Conjuntos de Intrucciones Clasifición de las ISA Secuencia de Código para C = A + B Stack Acumulador Registro (Reg-Mem) Registro (load-store) Push A Load A Load
Más detallesINTRUCCIONES: LENGUAJE MAQUINA
INTRUCCIONES: LENGUAJE MAQUINA 1.- INTRODUCCION Conceptos importantes Instrucción: Orden al hardware del Computador Repertorio de Instrucciones Lenguaje Máquina (ML) Lenguaje Ensamblador (AL) Lenguaje
Más detallesSesió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 detallesUNIVERSIDAD 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 detallesTema 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 detallesBus 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 detallesEstructura de Computadores 2 [08/09] Entrada/Salida en procesadores MIPS
Estructura de Computadores 2 [08/09] Entrada/Salida en procesadores MIPS GAC: Grupo de Arquitectura de Computadores Dpt. Electrónica e Sistemas. Universidade da Coruña. Bibliografía Computer Organization
Más detallesProgramación en ensamblador Ejercicios propuestos
Programación en ensamblador Ejercicios propuestos Ejercicio 1. Dada la siguiente expresión de un lenguaje de alto nivel int a = 6; int b = 7; int c = 3; int d; d = (a+b) * (a+b); Indique un fragmento de
Más detallesConceptos 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 detallesSistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria
1.2. Jerarquía de niveles de un computador Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria Es un sistema tan complejo
Más detallesEl procesador. Datapath para las instrucciones de brinco
El procesador Datapath para las instrucciones de brinco Instrucciones de brinco Dos tipos de instrucciones de brincos: 1. Brinco condicional. beq $t0, $t1, Etiqueta ; if t0 == t1 goto Etiqueta 2. Brinco
Más detallesTodo 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 detallesProgramació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 detallesFACULTAD 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 detallesCentro 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 detallesUNIDAD 2: Instrucciones: el lenguaje de las computadoras.
UNIDAD 2: Instrucciones: el lenguaje de las computadoras. 2.1 Introducción Para comandar una computadora se le debe hablar en su lenguaje. Las palabras del lenguaje de una máquina son llamadas instrucciones,
Más detallesOrganización procesador MIPS
Organización procesador MIPS Organización MIPS Memoria CPU Registros FPU Registros Alu Mul Div Hi Lo U. Aritmética Traps Manejo de Memoria Organización MIPS Unidad Aritmética y Lógica (ALU). Unidad Aritmética
Más detallesTema 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 detallesLecció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 detallesFunciones 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 detallesArquitectura de Computadores y laboratorio Clase 15: Arquitectura MIPS Pt.3. Departamento de Ingeniería de Sistemas Universidad de Antioquia 2011 2
Arquitectura de Computadores y laboratorio Clase 15: Arquitectura MIPS Pt.3 Departamento de Ingeniería de Sistemas Universidad de Antioquia 2011 2 Instrucciones de control de flujo Arquitectura de Computadores
Más detallesDiseñ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 detallesUNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO311 Estructuras de Computadores
6.5. Comunicación de las funciones con su entorno. Hasta el momento se ha conceptualizado una subrutina como un segmento de código que ocurre a menudo en un programa. La idea puede flexibilizarse y aumentar
Más detallesTema 3 (III) Fundamentos de la programación en ensamblador
Tema 3 (III) Fundamentos de la programación en ensamblador Grupo ARCOS Estructura de Computadores Grado en Ingeniería Informática Universidad Carlos III de Madrid Contenidos } Fundamentos básicos de la
Más detallesEjercicios 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 detallesPuede 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 detallesProgramació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 detallesAlgoritmo, 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 detallesCapí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 detallesArchivo 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 detallesFUNDAMENTOS 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 detallesArquitectura del procesador MIPS R2000
Arquitectura del procesador MIPS R2000 Aula Virtual IS09 Sergio Barrachina Mir Área de Arquitectura y Tecnología de Computadores Dpt. de Ingeniería y Ciencia de los Computadores Universidad Jaume I Índice
Más detallesPrá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 detallesTema 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 detallesEstructuras 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 detallesELO311 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 detallesLaboratorio 1 y 2: Programación en C, Assembler MIPS, y uso de Simulador MIPS32: PCSpim
Laboratorio 1 y 2: Programación en C, Assembler MIPS, y uso de Simulador MIPS32: PCSpim Objetivos. Estudiar algunos aspectos básicos de la programación en lenguaje C, y ambientes de programación integrados
Más detallesProgramcaió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 detallesTEMA 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 detallesEsquemas 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 detallesProgramació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 detallesPlataformas de soporte computacional: arquitecturas avanzadas,
Plataformas de soporte computacional: arquitecturas avanzadas, sesión Diego R. Llanos, Belén Palop Departamento de Informática Universidad de Valladolid {diego,b.palop}@infor.uva.es Índice. Arquitectura
Más detallesProgramació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 detallesUNIVERSIDAD 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 detallesSPIM: Un simulador del repertorio de instrucciones
SPIM: Un simulador del repertorio de instrucciones Por M. C. Felipe Santiago E. Para el curso: Arquitectura de Computadoras 1. Introducción SPIM es un simulador creado por el Dr. James Larus, graduado
Más detallesOrganización del Computador I Verano. MIPS (2 de 2) Basado en el capítulo 2 del libro de Patterson y Hennessy
Organización del Computador I Verano MIPS (2 de 2) Basado en el capítulo 2 del libro de Patterson y Hennessy Verano 2014 Profesora Borensztejn Arquitectura MIPS (R2000) Registros Formato de Instrucción
Más detallesSeguimiento. Organización del Computador I. Gustavo Cairo Carlos A. Di Pietro Carolina Lang. 1 er Cuatrimestre de 2016
La Máquina ORGA1: Arquitectura y Seguimiento Organización del Computador I Gustavo Cairo Carlos A. Di Pietro Carolina Lang Departamento de Computación - FCEyN UBA 1 er Cuatrimestre de 2016 Outline Arquitectura
Más detallesLENGUAJES 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 detallesEsquemas 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 detallesProgramació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 detallesRepertorio 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 detallesJava. 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 detallesPreliminares: 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 detallesTEMA 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 detallesSentencias 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 detallesOperadores 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 detallesGuí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 detallesParadigmas 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 detallesTema 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 detallesa) 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 detallesCentro 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 detallesTEMA 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