domingo, octubre 30, 2005

Ejemplo Generar Código Spim

Ejemplo Generar Código Spim

Utilizando gramáticas (cup) para realizar cálculos matemáticos (suma, resta, multiplicación, división) hemos de generar código que se pueda ejecutar en Spim (este código se almacena en un archivo compatible con el emulador Spim).
Primero construí una clase que me maneja los registros ($t0...$t9) que serán utilizados en Spim, luego dentro de la gramática y verificando que operación se este realizando se convierte la operación matemática en código Spim.

Ej.: si se esta verificando la expresión “2+5”, en código Spim seria “add $t0, $t1, $t2”, donde “$t0” guarda la suma de los dos números y “$t1, $t2” son los números respectivamente.

El manejador de registros cuanta con funciones tales como: obtener un registro libre y el de liberar una lista de registros. Para saber si existe disponible un registro la clase cuanta con dos estructuras (ArrayList), una estructura que mantiene un valor booleano (false indicando que esta disponible, true indicando que esta no disponible), la otra estructura mantiene la lista de registros ($t0...$t9). Al final si todo resulto bien obtendremos un archivo con el código que fue generado por la gramática el cual podremos ejecutar en Spim.

Nota: cuando liberamos registros se le manda un parámetro, el cual es un ArrayList. Este mantendrá los registros que han sido utilizados hasta el momento.

public class ClsRegistros {
    private ArrayList Free = new ArrayList();
    private ArrayList Reg = new ArrayList();
    
    public ClsRegistros() { }
    
    public void initReg() {
        Free.clear(); Reg.clear();
        for (int i=0;i<10;i++){
           Free.add( String.valueOf(false) );
           Reg.add("$t"+i);
        }        
    }    
    public String getFreeReg(){
        String freeReg="";
        for (int i=0;i<10;i++){
            if ( !Boolean.valueOf( Free.get(i).toString() ).booleanValue() ) {
                Free.set(i, String.valueOf(true));
                freeReg = Reg.get(i).toString();
                break;
            }
        }
        if ( freeReg=="" ) { System.out.println("No hay registros disponibles.");}
        return freeReg;
    }

    public void setFreeReg( ArrayList regs ) {
        for (int i=0;i<regs.size();i++) {
            int index = Reg.indexOf(regs.get(i));
            Free.set(index, String.valueOf(false));
        }
    }    
}

sábado, octubre 22, 2005

Laboratorio SPIM

Laboratorio SPIM

Para realizar la modificación de poder multiplicar los dos números ingresados, se debe aplicar lo siguiente:

mul $s2,$s0,$s1

En donde, $s2 guarda el resultado de la multiplicación y $s0 y $s1 guarda los números ingresados por el usuario.

Para verificar que numero es menor de los dos, se hace la utilización de la siguiente instrucción:

blt $s0, $s1, menor
add $s2,$zero,$s1
b endif
menor: add $s2,$zero,$s0
endif:

La instrucción blt hace la comparación $s0<$s1, si la cumple nos movemos a la etiqueta “menor”  en donde guardamos el valor del primer numero indicando que ese fue el menor, para luego mandarlo a imprimir. En caso contrario no nos movemos a la etiqueta y guardamos el segundo número indicando que ese es el menor, luego nos movemos a la etiqueta “endif” la cual continúa con el programa

domingo, octubre 16, 2005

Telecomunicaciones

Esta carrera me llama mucho la atención ya que se relaciona en el modelado, simulación y análisis de sistemas de comunicaciones. Así también como el diseño, construcción, operación y mantenimiento de redes de comunicaciones. Me parece muy conveniente esta carrera ya que con la base de Ingeniería de Sistema puedo relacionar y llegar a aprender a diseñar, desarrollar e implementar programas de comunicación que yo mismo podría construir. Y lo que es realmente extraordinario como desarrollar interfases para acoplar equipos de radio con equipos de cómputo y sistemas telefónicos, por Ej.: me llamo la atención una herramienta muy utilizada que es el MSN Messenger, tengo una amiga que vive en Japón, platico bastante con ella, pero lo increíble es la rapidez con que los mensajes se trasmiten, es casi nula la diferencia de cómo estar platicando con alguien de mi mismo país, así como poder al mismo tiempo enviar video, sonido y transmisión de data, me gustaría mucho entender el funcionamiento que existe detrás de todo eso y de muchas otras cosas mas (la parte de software y la parte de hardware).

El campo de trabajo actual y potencial del ingeniero en telecomunicaciones es muy amplio e incluye, entre otras, las siguientes áreas: sistemas telefónicos, redes digitales de servicios integrados, sistemas satelitales, radio y microondas, redes de área local y expandida, sistemas basados en fibra óptica, redes de computadoras y de teleinformática, sistemas de transmisión analógica, digital, satelital y áreas de radiocomunicación.

Campo Laboral

El Técnico en Telecomunicaciones puede prestar servicios en empresas de telecomunicaciones, de computación, de transmisión de datos y todo tipo de empresas de comunicaciones tanto de las áreas del sector privado como público. En sí, en cualquier área que requiera de los servicios de un especialista en sistema de telecomunicaciones.

En fin me parece una interesante carrera en donde puedo extender mis conocimientos y así como también aplicar mis conocimientos con el fin de llegar a un nivel de vida social adecuado.