Trabalho 2 - Software Básico

Aritmética de números em representação de ponto flutuante


Objetivo

O objetivo deste trabalho é implementar funções para soma, subtração e conversão de números em notação ponto flutuante IEEE 754 precisão simples, ou seja, o tipo float do C. Essas funções devem ser implementadas manipulando-se somente a representação binária dos números, sem o uso das instruções e registradores do co-processador de ponto flutuante.

O trabalho deve ser desenvolvido em assembler. As funções devem seguir os seguintes protótipos:

/* Retorna a+b */
unsigned int addf (float a, float b);

/* Retorna a-b */
unsigned int subf (float a, float b);

/* converte de formato float para int */
int f2i (float a);

/* converte de formato int para float */
unsigned int i2f (int a);

As funções devem retornar seus resultados sempre em %eax; por isso, mesmo as funções que retornam números em ponto flutuante têm o tipo de retorno declarado como unsigned int. Esse unsigned int é sempre a representação de um número float. Todas as funções devem tratar corretamente (quando possível) todas os casos do padrão IEEE 754 (+/- inf, NaN, números denormalizados).

Entrega

O produto deste trabalho deve ser um arquivo em assembler com nome "trab2.s" definindo apenas as quatro funções acima.

O prazo de entrega é dia 21/11. Os trabalhos perderão um ponto por cada dia de atraso.

Regras gerais