Skip to content

Laboratório 7

Objetivo

O objetivo desta atividade é exercitar o uso de instruções aritméticas e a manipulação de entrada e saída utilizando o conjunto de instruções da arquitetura RISC-V.

Nesta atividade, você deve escrever um programa em linguagem assembly RISC-V que calcula suas coordenadas geográficas em um plano bidimensional, com base no tempo atual e nas mensagens recebidas de 3 satélites

sat

Para simplificar o exercício, assume-se que o satélite A está posicionado na origem do plano cartesiano (0, 0), enquanto B e C estão posicionados em (0, YB) e (XC, 0), respectivamente. Os satélites enviam continuamente mensagens com um carimbo de tempo através de ondas que se propagam em todas as direções a uma velocidade de 3 x 108 m/s. Em um determinado momento TR, você recebe uma mensagem de cada satélite contendo os carimbos de tempo TA, TB e TC. Supondo que todos os relógios estão perfeitamente sincronizados, imprima suas coordenadas (x, y) no plano cartesiano. Note que a formulação utilizada neste exercício não é realista

Entrada

  • Linha 1 - Coordenadas XC e YB. Os valores estão em metros, representados por inteiros de 4 dígitos na base decimal e precedidos por um sinal (+ ou -).
  • Linha 2 - Tempos TR, TA, TB e TC. Os valores estão em nanossegundos, representados por inteiros de 4 dígitos na base decimal.

Saída

Suas coordenadas: (x, y). Os valores estão em metros, aproximados, representados por inteiros de 4 dígitos na base decimal e precedidos por um sinal (+ ou -).

Exemplos

Input Output
-0100 +0700 -0088 +0016
2300 2000 0000 2240
Input Output
-2042 +1042 -0902 -0215
9913 6823 4756 6047
Input Output
+0280 -2168 +0989 -1626
9550 3207 5791 3638
Input Output
+0965 -2491 -0065 -1941
9357 2884 7511 2033
Input Output
+1337 -0656 +1255 -2381
9133 0162 2023 1192

Dicas

  • Valores múltiplos escritos ou lidos na mesma linha serão separados por um único espaço

  • Cada linha termina com um caractere de nova linha \n

  • Para este exercício, soluções aproximadas são aceitas com um erro absoluto menor que 10

  • O uso do mesmo método utilizado no lab anterior com mais iterações (por exemplo, 21 iterações) é recomendado. Outros métodos de aproximação da raiz quadrada podem ser usados, contanto que:

  • Utilize apenas números inteiros. Números de ponto flutuante ou a instrução de raiz quadrada do RISC-V não podem ser usados

  • É melhor trabalhar com distâncias em metros e tempo em nanossegundos, para que os valores de entrada fornecidos não causem overflow ao usar o método proposto e uma boa precisão possa ser alcançada

  • Há muitas maneiras de resolver este exercício. Aqui, propomos uma abordagem que utiliza a equação de um círculo. Dado que dA, dB e dC são as distâncias entre sua posição e os satélites A, B e C, respectivamente:

  • Usando as Equações 1 e 2:

Tip

Para encontrar o valor correto de x, você pode tentar ambos os valores possíveis na Equação 3 e verificar qual está mais próximo de satisfazer a equação.

Entrega

O código deve ser testado no seguinte link o report gerado deve ser submetido no Classroom com o nome de {SeuRA}_lab7.report

Warning

Esta é uma atividade que deve ser realizada programando-se em linguagem de montagem - A submissão de programas em linguagem de programação de alto nível, como C, ou de programas gerados por ferramentas de compilação, serão considerados como fraude