Академический Документы
Профессиональный Документы
Культура Документы
ESTRUCTURA DE COMPUTADORES
PRCTICAS DE LABORATORIO
Actualizado: 30/09/03
Prctica 1
NDICE
1 2
4 5
6 7
Objetivos ................................................................................................................................................................... 3 Arquitectura del procesador DLX ............................................................................................................................. 3 2.1 Modos de direccionamiento............................................................................................................................. 4 2.2 Formato de las instrucciones............................................................................................................................ 5 2.3 Repertorio de instrucciones DLX .................................................................................................................... 5 Lenguaje ensamblador DLX ..................................................................................................................................... 8 3.1 Sintaxis de las expresiones .............................................................................................................................. 8 3.2 Directivas......................................................................................................................................................... 8 El simulador WinDLX .............................................................................................................................................. 9 4.1 Descripcin general del entorno de simulacin ............................................................................................. 10 Traps........................................................................................................................................................................ 22 5.1 Trap #1 Abrir un archivo ............................................................................................................................... 23 5.2 Trap #2 Cerrar un archivo.............................................................................................................................. 24 5.3 Trap #3 Leer un bloque de un archivo ........................................................................................................... 24 5.4 Trap #4 Escribir un bloque en un archivo...................................................................................................... 25 5.5 Trap #5 Enviar informacin al dispositivo de salida ..................................................................................... 25 Realizacin prctica ................................................................................................................................................ 26 Defensa y entrega de la memoria ............................................................................................................................ 26
Estructura de Computadores
Prctica 1
1 Objetivos
Los objetivos que se pretenden alcanzar en esta primera prctica de la asignatura Estructura de Computadores son, bsicamente, dos: a) Familiarizar al alumno con la arquitectura del procesador DLX, un procesador RISC de tipo carga/almacenamiento, que se estudia en el libro Arquitectura de Computadores de Pattersson y Hennessy y b) introducir al alumno en el uso del entorno de simulacin WinDLX que simula el pipeline de dicho procesador con capacidades para cargar, depurar y ejecutar programas escritos en lenguaje ensamblador. Una vez realizada esta prctica el alumno habr adquirido los suficientes conocimientos y destreza para realizar sin dificultad las tareas bsicas asociadas al desarrollo de software (edicin, ejecucin y depuracin) en lenguaje ensamblador del procesador DLX. Esta prctica se considera como prembulo para la segunda prctica en la que se estudia la tcnica de la segmentacin aplicada a la ejecucin de instrucciones.
El diseo de los procesadores con esta filosofa hace que las diferencias entre ellos sean mnimas en cuanto a la arquitectura del repertorio de instrucciones. As, por ejemplo, las arquitecturas de los procesadores DLX y MIPS son similares existiendo slo ligeras diferencias. Seguidamente resumimos las caractersticas ms importantes de la arquitectura del procesador DLX: La arquitectura DLX tiene 32 registros de propsito general (GPR) de 32 bits. Son referenciados como R0, R1, ... R31; el valor de R0 siempre es 0. Adicionalmente, hay un conjunto de registros de punto flotante (FPR), que se pueden utilizar como registros de simple precisin (F0, F1, F2, ....F31) de 32 bits, o como parejas par-impar que contienen valores de doble precisin (D0, D2, D4, D30) de 64 bits. El registro de estado FPSR (Floating Point Status Register) se utiliza para comparaciones y excepciones de FP. Todas las transferencias al y del registro de estado se realizan a travs de los GPR; hay una instruccin de salto que examina el bit de comparacin del registro FPSR. El registro Di est formado por la pareja Fi+1:Fi. Arquitectura de carga-almacenamiento: Slo dispone de instrucciones del tipo load y store para acceder a memoria. Todas las instrucciones de la ALU son instrucciones registro-registro, es decir, los operandos de las instrucciones aritmtico-lgicas han de estar en registros. Unidades funcionales separadas: o Una unidad principal de enteros: Manipula todas las cargas y almacenamiento en ambos conjuntos de registros (enteros y punto flotante), todas las operaciones enteras (excepto la multiplicacin y la divisin) y los saltos. o Multiplicador Punto Flotante (PF) y entero. o Divisor PF y entero La memoria es direccionable por bytes en el modo Big Endian con una direccin de 32 bits. Todas las referencias a memoria se realizan a travs de instrucciones de carga-almacenamiento entre memoria y los GPR
Estructura de Computadores
Prctica 1
o FPR. Los accesos que involucran los GPR pueden realizarse a un byte, a media palabra, o a una palabra. Los FPR se pueden cargar y almacenar con palabras en simple o doble precisin (utilizando registros Di). Todos los accesos a memoria deben estar alineados. Conjunto reducido de instrucciones. Hay cuatro clases de instrucciones: o Carga y almacenamiento. o Operaciones ALU del tipo aritmtico-lgicas sobre enteros. o Instrucciones de control: saltos (condicionales) y bifurcaciones. o Instrucciones de punto flotante. Estructura segmentada. La ejecucin de una instruccin se divide en cinco etapas. Dichas etapas, convenientemente interconectadas, forman el cauce o pipeline del procesador y son las siguientes: o Etapa IF: Bsqueda de instruccin o Etapa ID: Decodificacin de instruccin o Etapa EX: Ejecucin (operacin ALU o clculo de la direccin efectiva). Esta etapa puede realizarse en diferentes unidades, segn la instruccin sea una operacin de enteros (intEX), o flotantes donde se distingue entre: suma (faddEX), multiplicacin FP y enteros (fmulEX) y divisin FP y enteros (fdivEX). o Etapa MEM: Lectura o escritura de datos en memoria o Etapa WB (write back): Almacenamiento de los resultados de la instruccin en los registros correspondientes. La escritura en los registros se realiza en la primera mitad del ciclo de reloj, de forma que una instruccin que simultneamente se encuentra en la etapa de ID puede tomar el valor de los registros en la segunda mitad del ciclo, sin necesidad de utilizar la tcnica de cortocircuito o anticipacin de los datos (forwarding) para adelantar el dato y resolver, as, el riesgo del dato. Todas las etapas ocupan un ciclo de reloj, salvo las de ejecucin de punto flotante (faddEX, fmulEX, fdivEX) que tardan ms de un ciclo en ejecutarse.
Estructura de Computadores
Prctica 1
Formato R (Registro) op rs1 rs2 rd func Instrucciones tipo R 6 bits 5 bits 5 bits 5 bits 11 bits Todas las instrucciones DLX de 32 bits 000000 01010 11111 00011 00000 100000 0x015f1820 add R3,R10,R31 Operaciones de ALU registro-registro: rd <- rs1 op rs2; el campo de func indica la operacin a realizar por el camino de datos. Formato I (Inmediato) op rs1 rd Inmediato Instruciones de carga e inmediatas 6 bits 5 bits 5 bits 16 bits Todas las instrucciones DLX de 32 bits 100011 00011 00101 0000000000100000 0x8c650020 lw $5,32($3) Carga y almacenamiento de bytes, palabras y medias palabras; todos los inmediatos ( rd <- rs1 op inmediato); saltos condicionales (rs1 es el registro, rd no usado); saltos indirectos por registro jr y salta y enlaza por registro jalr (rd=0; rs1 =destino; inmediato=0). Formato J (Jump) op Direccin objetivo Instrucciones de bifurcacin 6 bits 26 bits Todas las instrucciones DLX de 32 bits 000010 11111111111111111111110100 0x0bfffff4 0x10c: j 0x100 Bifurcacin j; bifurcacin y enlace jal; trap y retorno de excepcin rfe.
Instruccin LB Rd,Adr LBU Rd,Adr LH Rd,Adr LHU Rd,Adr LW Rd,Adr LF Fd,Adr LD Dd,Adr SB Adr,Rs SH Adr,Rs SW Adr,Rs SF Adr,Fs SD Adr,Fs MOVI2FP Fd,Rs
Estructura de Computadores
Prctica 1
MOVI2FP Rd,Fs MOVF Fd,Fs MOVD Dd,Ds MOVI2S SR,Rs MOVS2I Rs,SR
Move 32 bits from FP registers to integer registers Copy one Floating point register to another register Copy a double-precision pair to another pair Copy a register to a special register (not implemented!) Copy a special register to a GPR (not implemented!)
Instruccin ADD Rd,Ra,Rb ADDI Rd,Ra,Imm ADDU Rd,Ra,Rb ADDUI Rd,Ra,Imm SUB Rd,Ra,Rb SUBI Rd,Ra,Imm SUBU Rd,Ra,Rb SUBUI Rd,Ra,Imm MULT Rd,Ra,Rb MULTU Rd,Ra,Rb DIV Rd,Ra,Rb DIVU Rd,Ra,Rb AND Rd,Ra,Rb ANDI Rd,Ra,Imm OR Rd,Ra,Rb ORI Rd,Ra,Imm XOR Rd,Ra,Rb XORI Rd,Ra,Imm LHI Rd,Imm SLL Rd,Rs,Rc SRL Rd,Rs,Rc SRA Rd,Rs,Rc SLLI Rd,Rs,Imm SRLI Rd,Rs,Imm SRAI Rd,Rs,Imm S__ Rd,Ra,Rb S__I Rd,Ra,Imm S__U Rd,Ra,Rb S__UI Rd,Ra,Imm NOP
Instrucciones aritmticas y lgicas Significado de la instruccin Add Add immediate (all immediates are 16 bits) Add unsigned Add unsigned immediate Subtract Subtract immediate Subtract unsigned Subtract unsigned immediate Multiply signed Multiply unsigned Divide signed Divide unsigned And And immediate Or Or immediate Xor Xor immediate LOad high immediate - loads upper half of register with immediate Shift left logical hift right logical Shift right arithmetic Shift left logical 'immediate' bits Shift right logical 'immediate' bits Shift right arithmetic 'immediate' bits Set conditional: "__" may be EQ, NE, LT, GT, LE or GE Set conditional immediate: "__" may be EQ, NE, LT, GT, LE or GE Set conditional unsigned: "__" may be EQ, NE, LT, GT, LE or GE Set conditional unsigned immediate: "__" may be EQ, NE, LT, GT, LE or GE No operation
Instruccin BEQZ Rt,Dest BNEZ Rt,Dest BFPT Dest BFPF J JR JAL JALR TRAP RFE Dest Dest Rx Dest Rx Imm Dest
Instrucciones de salto y bifurcacin Significado de la instruccin Branch if GPR equal to zero; 16-bit offset from PC Branch if GPR not equal to zero; 16-bit offset from PC Test comparison bit in the FP status register (true) and branch; 16bit offset from PC Test comparison bit in the FP status register (false) and branch; 16bit offset from PC Jump: 26-bit offset from PC Jump: target in register Jump and link: save PC+4 to R31; target is PC-relative Jump and link: save PC+4 to R31; target is a register Transfer to operating system at a vectored address; see Traps. Return to user code from an execption; restore user mode (not implemented!)
Estructura de Computadores
Prctica 1
Instruccin ADDD Dd,Da,Db ADDF Fd,Fa,Fb SUBD Dd,Da,Db SUBF Fd,Fa,Fb MULTD Dd,Da,Db MULTF Fd,Fa,Fb DIVD Dd,Da,Db DIVF Fd,Fa,Fb CVTF2D Dd,Fs CVTD2F Fd,Ds CVTF2I Fd,Fs CVTI2F Fd,Fs CVTD2I Fd,Ds CVTI2D Dd,Fs __D Da,Db __F Fa,Fb
Instrucciones de operaciones en punto flotante Significado de la instruccin Add double-precision numbers Add single-precision numbers Subtract double-precision numbers Subtract single-precision numbers. Multiply double-precision Floating point numbers Multiply single-precision Floating point numbers Divide double-precision Floating point numbers Divide single-precision Floating point numbers Converts from type single-precision to type double-precision Converts from type double-precision to type single-precision Converts from type single-precision to type integer Converts from type integer to type single-precision Converts from type double-precision to type integer Converts from type integer to type double-precision Double-precision compares: "__" may be EQ, NE, LT, GT, LE or GE; sets comparison bit in FP status register Single-precision compares: "__" may be EQ, NE, LT, GT, LE or GE; sets
Estructura de Computadores
Prctica 1
3.2 Directivas
Las directivas de un programa ensamblador son instrucciones que controlan diversos aspectos de funcionamiento del programa ensamblador. Por tanto, no son instrucciones para el procesador sino para el programa (ensamblador) que traduce los mnemnicos de las instrucciones a lenguaje mquina (unos y ceros). La sintaxis de una directiva es: .directiva [parmetros] Mientras el ensamblador procesa un fichero fuente, los datos e instrucciones ensambladas (traducidas a lenguaje mquina) son colocadas en memoria utilizando dos punteros: uno para datos y otro para instrucciones. El puntero que se utiliza en cada momento viene determinado por la directiva ms recientemente utilizada: .DATA o .TEXT. Por defecto, el cdigo del programa se carga a partir de la direccin dada por la variable $TEXT (con valor inicial 0x100) y los datos a partir de la direccin dada por la variable $DATA (con valor inicial 0x1000).
Causa que el siguiente cdigo (o dato) sea cargado en una direccin de memoria mltiplo de 2n (por ejemplo, align 2 significa que comienza en la siguiente direccin de memoria mltiplo de 4). Almacena en memoria las "strings" mostradas en la lnea como una lista de caracteres. Similar a la directiva .ascii, excepto que cada string se termina con el carcter null (byte 0) que indica el final de la string. Almacena secuencialmente en memoria los bytes listados en la lnea. Causa que el siguiente dato sean almacenado en el segmento de datos de la memoria (DATA). Si se especifica la direccin, los datos sern cargados a partir de dicha direccin; en caso contrario, se utilizar el ltimo valor del puntero de datos ($DATA).
Estructura de Computadores
Prctica 1
.text [address]
.word word1,word2,...
Almacena secuencialmente en memoria los "nmeros" listados en la lnea, como nmeros en punto flotante de doble precisin. Declara el smbolo label como global de modo que pueda ser referenciado por otros mdulos que se carguen despus de este fichero. Se utiliza para reservar espacio de memoria. Mueve el puntero de almacenamiento actual (cdigo o datos, $TEXT o $DATA) size bytes adelante. Causa que el siguiente cdigo sea almacenado en el rea de texto o cdigo de memoria (TEXT). Si se especifica la direccin, el cdigo ser cargado a partir de dicha direccin; en caso contrario, se utilizar el ltimo valor del puntero de datos ($TEXT). Almacena secuencialmente en memoria las palabras (words) listadas en memoria.
4 El simulador WinDLX
WinDLX (Windows De LuXe) es un simulador del pipeline del procesador DLX (procesador RISC similar al procesador MIPS) que ser utilizado en las prcticas correspondientes al primer mdulo del temario de la asignatura, dedicado a la mejora del rendimiento a travs de la tcnica de segmentacin. Este simulador desarrollado por el Departamento de Diseo-VLSI de la Universidad de Tecnolgica de Viena (http://ftp.vlsivie.twien.ac.at) funciona bajo el entorno Microsoft Windows, y permite el procesamiento de programas escritos en ensamblador de DLX, mostrando toda la informacin relevante de la CPU: estado del pipeline, banco de registros, memoria, estadsticas, etc.. Su versatilidad posibilita la modificacin de la estructura y tiempos de latencia del pipeline de la CPU y del tamao de la memoria. Tambin, proporciona el soporte necesario para la realizacin de llamadas al sistema a travs de TRAPs que constituyen el interfaz entre los programas DLX y el sistema de entrada/salida (abrir, cerrar, leer y escribir un archivo y visualizacin en pantalla). Existen varias razones que justifican el uso de un simulador frente a un computador real que disponga del chip procesador en cuestin. Entre ellas, cabe destacar: Las estaciones de trabajo no siempre estn disponibles. La evolucin tecnolgica hace que un computador quede obsoleto en slo algunos aos lo que conduce a estaciones de trabajo (computadores) ms rpidos y con mejores prestaciones (piense en el mercado de los ordenadores personales). Otra razn importante es la tendencia a desarrollar computadores ms rpidos utilizando tcnicas de diseo que permiten la ejecucin de varias instrucciones concurrentemente. Esto hace que una arquitectura (procesador) sea ms difcil de entender y programar en lenguaje ensamblador. Mejores entornos de programacin que una mquina real. Los simuladores pueden proporcionar mejores entornos para programar a bajo nivel (lenguaje ensamblador) que los de una mquina real debido a que pueden detectar errores y tener mejores prestaciones. Por ejemplo, el simulador WinDLX tiene un interfaz de ventanas que es mejor que muchos depuradores de mquinas reales. Los simuladores son una herramienta muy til para el estudio de los computadores y de los programas que en l se ejecutan. Debido a que son implementados en software (no silicio), los simuladores son fcilmente modificables con objeto de aadirles nuevas instrucciones, construir nuevos sistemas o, simplemente, para adquirir o recolectar datos. Proporciona ciclos de edicin, ensamblado, carga y ejecucin ms cortos que si se utiliza placas de prototipo especialmente diseadas para el aprendizaje (educativas). En muchos casos, los simuladores se distribuyen como software gratis, especialmente los desarrollados en entornos acadmicos y de investigacin.
Estructura de Computadores
Prctica 1
Por ejemplo, en la figura podemos apreciar que la ventana de estadstica est seleccionada, y que la ltima opcin del men tambin corresponde a estadsticas donde se nos permite activar diversas opciones de visualizacin de las mismas.
Estructura de Computadores
10
Prctica 1
Reset All o Esta opcin ejecuta todas las acciones de "Reset DLX" y, adems, inicializa a cero la memoria y borra los smbolos excepto $TEXT y $DATA que mantienen su valor. Load Code or Data o Cuando se selecciona esta opcin aparece un cuadro de dilogo. En l se pueden seleccionar los mdulos de programa (ficheros con extensin .S) que se quieren cargar en el simulador. Despus de realizar la carga de los programas se tiene la posibilidad de ejecutar un Reset-DLX. Si nos equivocamos al seleccionar un mdulo podemos borrar la seleccin pulsando el botn de delete. Se pueden cargar mltiples mdulos y usar variables globales. Quit WINDLX o Si seleccionamos esta opcin, se nos preguntar para confirmar alguna de las siguientes operaciones: guardar configuracin, salir del programa o cancelar operacin.
Estructura de Computadores
11
Prctica 1
Estructura de Computadores
12
Prctica 1
Estructura de Computadores
13
Prctica 1
Display: Permite la creacin de forma dinmica de hasta 10 ventanas en las que se visualiza contenidos de memoria en varios tipos y formatos. La activacin de esta opcin da lugar a la presentacin de una ventana como la mostrada en la figura en la que se configuran determinadas caractersticas de la visualizacin de contenidos de memoria.
Change: Mediante esta opcin se puede cambiar o modificar el contenido de una posicin de memoria. Symbols: Permite la manipulacin de smbolos (visualizar, definir, cambiar y borrar) a travs de una ventana de dilogo.
Estructura de Computadores
14
Prctica 1
Floating Point Stages: En este comando se define el nmero de unidades funcionales y sus latencias. Memory size: Permite modificar el tamao de la memoria disponible: mnimo 512 bytes y mximo 16Mb. Symbolic Addresses: Cuando se visualiza contenidos de memoria, la informacin de los smbolos se presentan como smbolo+desplazamiento o slo por su direccin en hexadecimal. Absolute Cycle Count: Si se habilita esta opcin los ciclos se cuentan desde 0, reiniciando el procesador y las estadsticas. Enable Fordwarding: Permite activar o desactivar el mecanismo de adelantamiento de datos. Load: Carga un fichero de configuracin del procesador. Los contenidos de memoria y los smbolos permanecen sin cambios. Save: Permite guardar la configuracin actual del procesador en un archivo con la extensin .WDC. Si no se especifica el nombre se utiliza por defecto WINDLX.WDC. El almacenamiento de la configuracin puede realizarse al finalizar la sesin de trabajo con el simulador o mediante este comando.
Estructura de Computadores
15
Prctica 1
Adems de los registros de propsito general y el conjunto de registros de punto flotante, el procesador dispone de un conjunto de registros de propsito especial que son los siguientes: FPSR (Floating-Point Status Register). Es un registro de estado de 1 bit de longitud, utilizado para comparaciones y excepciones en punto flotante. Todos los movimientos desde y hacia este registro se realizan a travs de los registros de propsito general. PC (Program Counter). Registro cuyo contenido apunta siempre a la siguiente instruccin a ejecutar. Las instrucciones de salto y bifurcacin pueden cambiar el contenido de este registro. IMAR (Instruction Memory Address Register). Este registro es inicializado con el contenido del PC en la etapa IF y tiene conexin directa con la memoria mientras que el PC no. IR (Instruction Register): En la etapa IF este registro se carga con la instruccin que llega de la memoria y que ser la prxima instruccin en ejecutarse. A, B. Son registros que se encuentran a la salida del banco de registros. En la etapa ID son cargados con valores ledos de los registros y son luego operandos para la ALU en la siguiente etapa del pipeline, EX. En WinDLX , adems existen dos pseudo-registros AH y BHI que contienen los 32 bits superiores para valores de punto flotante de doble precisin. BTA (Branch Target Address). En la etapa ID, la direccin de salto/bifurcacin es calculada y escrita en este registro. ALU (Arithmetic Logical Unit). El resultado de una operacin realizada por la ALU es transferido a este registro. DMAR (Data Memory Address Register). La direccin de memoria a la que se va acceder es transferida a este registro en la etapa EX. En la etapa MEM se accede a la direccin de memoria especificada por este registro.
Estructura de Computadores
16
Prctica 1
SDR (Store Data Register). El dato que se va a escribir en memoria mediante la instruccin store es escrito previamente en este registro. En WINDLX existe un pseudo-registro llamado SDRHI que contiene los 32 bits ms significativos para valores de punto flotante de doble precisin. LDR (Load Data Register). El dato que es ledo de memoria se almacena en este registro. Al igual que en algunos registros anteriores, existe un pseudo-registro llamado LDRHI que contiene los 32 bits ms significativos para valores de punto flotante de doble precisin.
Estructura de Computadores
17
Prctica 1
Por ltimo, decir que desde el men Code podemos iniciar la ejecucin del programa desde una direccin determinada y definir y borrar puntos de parada o breakpoints.
Estructura de Computadores
18
Prctica 1
Las detenciones del pipeline (stalls) son representadas en cajas coloreadas en el color asociado a la etapa detenida. La etiqueta que aparece en interior de las cajas proporciona ms informacin sobre el tipo de detencin: R-Stall (RAW): Una flecha roja indica la instruccin que est provocando la detencin del cauce. T-Stall: Esta detencin slo se produce ante una instruccin de TRAP. La instruccin de TRAP permanece en la etapa de IF hasta que no queden ms instrucciones en el pipeline. W-Stall (WAW): Una flecha roja indica la instruccin que causa la detencin. En el WinDLX estas detenciones slo se pueden producen para las instrucciones en punto flotante no en las de aritmtica entera. S-Stall (Structural Stall): Se producen cuando no hay suficientes recursos hardware para ejecutar el conjunto de instrucciones residentes en el pipeline. Stall: Cuando una instruccin de punto flotante est en la etapa de MEM, la prxima instruccin ser detenida en la etapa intEX etiquetndola com la palabra Stall. El men Clock Diagran Cycle contiene los siguientes comandos: Display Fordwarding: Visualiza la anticipacin de los datos con una flecha verde. Display Cause of Stalls: Si se selecciona esta opcin la instruccin que provoca la detencin es marcada con una flecha roja. Delete History: Borra el historial de instrucciones ejecutadas Set History Length: Selecciona el tamao de la historia a visualizar que ha de estar entre 0 y 100.
Estructura de Computadores
19
Prctica 1
Estructura de Computadores
20
Prctica 1
Estructura de Computadores
21
Prctica 1
5 Traps
Los traps son el interfaz entre los programas DLX y el sistema de entrada/salida. Hay cinco traps definidos en WinDLX: Trap #0: Fin del programa. Trap #1: Abrir un archivo. Trap #2: Cerrar un archivo. Trap #3: Leer un bloque de un archivo. Trap #4: Escribir un bloque en un archivo. Trap #5: Formatear y enviar informacin hacia la salida estndar.
Para todos los traps se cumple lo siguiente: Representan respectivamente las llamadas al sistema UNIX/DOS de la biblioteca de funciones C: open(), close(), read(), write() y printf(). Los descriptores de archivo 0, 1 y 2 estn reservados para stdin, stdout y stderr. La entrada y la salida hacia la ventana I/O puede ser controlada con estos descriptores. La direccin del primer parmetro requerido por una llamada al sistema debe almacenarse en el registro R14. Los siguientes argumentos se situarn en la direccin R14+4, R14+8, etc. De acuerdo a lo anterior todos los parmetros tienen que ser de 32 bits de longitud, excepto los nmeros en doble precisin que son de 64 bits. El resultado es devuelto en R1 Si durante la ejecucin de una llamada al sistema ocurre un error, el registro R1 es asignado a 1 y si al smbolo _errno se le asigna el valor A, entonces el cdigo de error es almacenado en la direccin de memoria A y la simulacin continuar; en caso contrario, la simulacin ser abortada.
A continuacin se detallan las llamadas al sistema tomadas directamente de la ayuda de WinDLX (men help)
Estructura de Computadores
22
Prctica 1
FileName: Par:
FileDescr:
Estructura de Computadores
23
Prctica 1
1.
File descriptor of the file to be closed. Zero is returned in register R1, if it was successful, -1 otherwise.
r14,FileDescr>>16 r14,r14,FileDescr&0xffff 2
The actual number of bytes read is returned in register R1. Example: .data Buffer: .space 500 Par: ;File descriptor, Adr. of buffer, size of block .space 4 .word Buffer .word 500 .text ;... lhi addui trap
r14,Par>>16 r14,r14,Par&0xffff 3
Estructura de Computadores
24
Prctica 1
The actual number of bytes written is returned in register R1. Example: .data Buffer: .space 500 Par: ;File descriptor, Adr. of buffer, size of block .space 4 .word Buffer .word 500 .text ;... lhi addui trap
r14,Par>>16 r14,r14,Par&0xffff 4
The number of bytes transferred to stdout is returned in register R1. Example: .data .asciiz "Pi=%f, N=%d\n" .align 2 ;Adr. of format string, values .word FormatStr .double 3.141592654 .word 17 .text ;... lhi addui trap
FormatStr: Par:
r14,Par>>16 r14,r14,Par&0xffff 5
Estructura de Computadores
25
Prctica 1
6 Realizacin prctica
La actividad prctica a realizar consiste en la realizacin de pequeos programas que demuestre que comprende y sabe utilizar el lenguaje ensamblador y el entorno de simulacin objeto de esta prctica. Los programas a desarrollar son los siguientes: 1. 2. 3. Programa para sumar dos nmeros enteros (positivos o negativos!) suministrados por el usuario por teclado y mostrar el resultado en pantalla. Programa que lea una string desde el teclado, convierta las maysculas a minsculas y las minsculas a maysculas y visualice el resultado de la conversin por pantalla. Programa para calcular el producto escalar de dos vectores suministrados en un fichero cuyo nombre lo suministra el usuario por teclado. Una lnea por vector y terminada en retorno de carro. Los elementos de los vectores estarn separados por una coma (,). Una vez realizado el producto escalar visualizar los elementos de los vectores y el resultado.
Estructura de Computadores
26