PDF Google Drive Downloader v1.1


Báo lỗi sự cố

Nội dung text Resumen Parcial II Angel Carrero v1.pdf

Universidad Metropolitana Departamento de Gestión de Proyectos y Sistemas Organización del Computador Prof. Rafael Matienzo Resumen Parcial II Por Ángel Carrero Caracas, 02 de octubre de 2023.
Operaciones Lógicas Li $t1 1011 Li $t2 1101 • AND: and $t3, $t1, $t2 # ($t3= 1001) • OR: or $t3, $t1, $t2 # ($t3= 1111) • XOR: xor $t3, $t1, $t2 # ($t3= 0110) • NOT: not $t1 # ($t3= 0100) Usos • Prender un bit sin molestar al vecino (OR) • Apagar un bit sin molestar al vecino (AND) • Complementar un bit sin molestar al vecino (EXOR) • Preguntar un bit sin molestar al vecino Para averiguar el valor de un bit (apagando los vecinos) se hace and con 0...010...0 y luego se pregunta: Si salta con beqz ese bit estaba apagado (Branch if Equal Zero) Si salta con bnez ese bit estaba prendido (Branch if Not Equal Zero) Shifts 1 Su función es desplazar los bits dentro de un registro. Los bits que estaban el extremo hacia el cual se hace el movimiento se pierden. Clasificación • Según el sentido del desplazamiento: LEFT y RIGHT • Según el rol del primer bit: Aritmético y Lógico En MIPS R2000 El procesador MIPS R2000 solo tiene las siguientes operaciones: • sra (Shift Right Aritmethic) • srl (Shift Right Logical) • sll (Shift Left Logical)
1 El uso de shifts y de operaciones lógicas será clave para el ejercicio práctico del parcial. Ejemplos Shift Lógico: Mueve los bits hacia la izquierda, los que no se pueden mover, se eliminan (sll de 3 posiciones). |b b b b b b b b| → |b b b b b 0 0 0| Shift Aritmético: Lo mismo, pero el bit de signo no se elimina, para que no se altere el valor (sll de 3 posiciones). |b b b b b b b b| → |b b b b b 0 0 0| Traductores de Programas Programa Traductor: Es cualquier programa que toma como entrada un texto escrito en un lenguaje de programación, llamado fuente, y da como salida otro texto en un lenguaje, denominado objeto. Nos interesan los traductores que convierten lenguajes de alto nivel (Python, Java, JavaScript...) a código en lenguaje de bajo nivel (Assembler o código de máquina). Tipos de Traductores Ensamblador Inicialmente, la programación consistía en indicar a la máquina un conjunto de códigos numéricos binarios que señalaban a los circuitos de la máquina los estados correspondientes a cada operación. Estos códigos son a lo que se hace referencia como lenguaje de máquina. Por ser tan complicado, se comenzaron a construir “claves” que representan estos códigos únicos. Este conjunto de “claves” es lo que ahora se conoce como lenguaje de Assembler. El ensamblador se encarga de traducir el lenguaje de Assembler a código de máquina. Desventajas • Dada su correspondencia estrecha con las operaciones elementales de las máquinas, las instrucciones de los lenguajes ensambladores obligan a programar cualquier función de una manera minuciosa e iterativa. • Adicionalmente, al estar basados en una codificación del lenguaje de máquina (que varía dependiendo de la arquitectura del procesador) implica que cada arquitectura de procesador tiene en cierto sentido su propio lenguaje de ensamblaje. (No obstante, es común ver similitudes entre lenguajes de ensamblaje incluso si son de distintos procesadores). • Sin embargo, se debe considerar que normalmente, cuanto menor es el nivel de expresión de un lenguaje de programación, mayor rendimiento se obtiene en el uso de los recursos físicos (hardware).
Compilador Es un programa traductor que lee archivos en código fuente escrito en un lenguaje de alto nivel y como salida escribe archivos en código objeto. Difiere a los ensambladores en una característica muy importante. El ensamblador posee control total sobre el código objeto. Es decir, a partir del código escrito en lenguaje ensamblador se tiene una trazabilidad directa y transparente al código objeto generado. Contrariamente, el código escrito en lenguajes de alto nivel es sujeto a un conjunto de transformaciones invisibles e inalterables. El compilador toma el archivo con el código fuente y lo traduce completamente al lenguaje objeto. Interpretador NO es un programa traductor estrictamente. No traduce código en lenguaje fuente al lenguaje objeto2 en su totalidad en ningún momento. Traduce sentencia a sentencia cada una de las instrucciones establecidas en un lenguaje de alto nivel. Python es un lenguaje que es compilado. Son menos eficientes que los compiladores. Implica un costo de memoria el tener en ejecución constantemente el interpretador, así como un coste de tiempo el estar traduciendo línea por línea. Linker Es importante entender cuenta que no todo el código fuente de nuestro programa debe estar en el mismo archivo de código fuente. Es posible tener distintos archivos con código fuente y tener compilación por separado. Donde cada archivo se compila independientemente uno de otro. Sin embargo, es necesario que todos estos archivos generados en código objeto se enlacen entre sí en un único archivo ejecutable. Esto último es trabajo del linker. En otras palabras, el linker es el encargado de unir todos los archivos del programa en uno solo para ser ejecutado.

Tài liệu liên quan

x
Báo cáo lỗi download
Nội dung báo cáo



Chất lượng file Download bị lỗi:
Họ tên:
Email:
Bình luận
Trong quá trình tải gặp lỗi, sự cố,.. hoặc có thắc mắc gì vui lòng để lại bình luận dưới đây. Xin cảm ơn.