Вы находитесь на странице: 1из 6

Practica No 6

Anngy Nathalia Gomez Avila – 2161343

Maria Fernanda Vera Negrón - 2161326

1. Utilice el código de “Hola Mundo” en C y usando únicamente la opción de


optimización por defecto, indique que pasa, explicando cada línea de
instrucción importante, cuando se traduce hacia el ensamblador.
Código en C:
#include <studio.h>
{
int main()
{ printf(“Hola Mundo”);
return 0;
}

En Assembly analizaremos:
 printf(“Hola Mundo”);
 return 0;

Movz $31,$31,$0 El contenido del registro se


mueve al registro especificado.
si el registro es mayor o igual a
cero y guarda la dirección de
devolución en $ 31

lw $2,%got($LC0)($28) Se carga una palabra en un


registro de la dirección
especificada.
addiu $4,$2,%lo($LC0) Agrega un registro y un valor
inmediato de signo extendido y
almacena el resultado en un
registro
lw $2,%call16(printf)($28) Se carga una palabra en un
registro de la dirección
especificada.

move $25,$2 El contenido del registro se mueve


al registro especificado

move $sp,$fp El contenido del registro se mueve


al registro especificado

lw $31,28($sp) Se carga una palabra en un


registro de la dirección
especificada

lw $fp,24($sp) Se carga una palabra en un


registro de la dirección
especificada

addiu $sp,$sp,32// Agrega un registro y un valor


inmediato de signo extendido y
almacena el resultado en un
registro

j Salta a la dirección calculada y


almacena la dirección de
devolución en $31

return 0; Agrega a nuestro código


Assembly

2. Haga lo mismo con un programa para sumar dos números enteros menores
que 100.

#include<stdio.h>
#include<math.h>
int main()
{
int a=30,b=20,m=0;
if(a>=0 && a<100 && b>=0 && b<100)
{
m=a+b;
printf("nnt Resultado de la suma:%d",m);
}
return 0;
}

.file 1""
.section .mdebug.abi32
.previous
.nan legacy
.module fp=32
.module nooddspreg
.abicalls
.rdata
.align2
$LC0:
.ascii "Holamundo.\000"
.text
.align2
.globlmain
.set nomips16
.set nomicromips
.ent main
.type main, @function //Características de la frase
main:
.frame$fp,32,$31 # vars= 0, regs= 2/0, args=
16, gp= 8 //
.mask 0xc0000000,-4
.fmask0x00000000,0
3. Ahora con un programa en C para calcular los números primos hasta 1000
y mire que pasa. Juegue con las opciones de optimización del compilador.
Inclusive si salen warnings o errores, explique por que pasa eso y en que
modo de optimización.
4. Responda las siguientes preguntas:

 ¿Qué es compilar?

La palabra compilar significa traducir un código de programación que ha sido


escrito en un lenguaje de alto nivel a código ejecutable por la máquina. Esto se
realiza para que la maquina entienda y pueda ejecutar las sentencias por lo tanto
se deben traducir estas sentencias e instrucciones a código binario para que la
maquina pueda comprenderlo y ejecutarlo.

 ¿Cuál es la función del compilador?

Los compiladores son programas que cumplen la tarea de realizar la


traducción del código fuente de un programa, el cual fue creado por
medio de un lenguaje de programación, a lenguaje de maquina el cual
es el único lenguaje que entienden los procesadores de los
computadores.

Los compiladores se dividen en dos partes, la primera es lo que se llama


el front end la cual es la encargada de analizar y comprobar la validez
del código fuente y en base a esto crear los valores de la tabla de
símbolos. La segunda parte se llama back end en esta parte se genera
el código de máquina, el cual es creado de acuerdo a lo analizado en el
front end para una plataforma en especifico

 ¿Todos los compiladores son iguales?

Cada compilador es diferente debido a que cada uno de ellos funciona


de manera diferente y genera un lenguaje de maquina distinto el cual
puede variar en su tamaño, dimensión, optimización entre otros.

 ¿Qué hace o a que se refiere las opciones de compilación? ¿Cuál es la


diferencia entre ellas?
Se refiere a las opciones con las que se puede modificar el
comportamiento del compilador tanto como su optimización, definición
de símbolos, la opción de depuración, código en varios ficheros y paso
de argumentos a un programa. la diferencia entre ellas es que cada uno
de estas opciones deja modificar una característica en específico como
lo es la optimización que ayuda a que se obtenga un mejor rendimiento
y ya dependiendo del compilador me brinda más opciones como lo
pueden ser herramientas gráficas.

Вам также может понравиться