Академический Документы
Профессиональный Документы
Культура Документы
ELECTROTCNICA E DE COMPUTADORES
FACULDADE DE CINCIAS E TECNOLOGIA UNIVERSIDADE DE COIMBRA
Sistemas de Microprocessadores
ssh mips1.labs.deec.uc.pt (se estiver dentro da LAN do DEEC) ssh mips2.deec.uc.pt (se estiver for da LAN do DEEC) ssh mips2.labs.deec.uc.pt (se estiver dentro da LAN do DEEC)
conforme o servidor em que for trabalhar. Se for utilizador Windows, dever instalar os clientes ssh e sftp grtis PuTTY (http://www.putty.org/) e WinSCP (http://winscp.net), respectivamente. Estes clientes fazem exactamente o mesmo que os comandos Linux/Mac, mas usando uma interface com janelas. Como vai estar a trabalhar num servidor remoto, s tem controlo por linha de comando de terminal (no h rato). Assim, e de forma a editar os seus ficheiros de cdigo, dever usar uma das seguintes estratgias: 1. Pode editar os ficheiros localmente com o seu editor preferido (e usando rato), e transferi-los de e para o MIPS usando sftp. O WinSCP, inclusivamente, tem um editor de texto simples que actualiza remotamente o ficheiro em edio sempre que fizer save basta fazer double-click no ficheiro em causa na janela do WinSCP para o comear a editar. 2. Ter simultaneamente abertos dois terminais. Um terminal para comandos (gcc, correr executveis, etc.), e o outro terminal para editar ficheiros. Ter que usar um editor de texto localmente instalado. Recomendamos o emacs (ver comandos em material de apoio).
SMP-MEEC
Pg. 1/4
Lab1 SMP
DEEC-FCTUC
4. Realizao do trabalho
Para este trabalho dever ter os ficheiros sum_v1.c e sum_v2.c, bem como todo o restante material de apoio. 1) Analise, compile e teste sum_v1.c no PC do laboratrio utilizando a flag -o para definir o nome do ficheiro de sada (neste caso um executvel). Por segurana deve guardar os seus trabalhos no servidor dos alunos no final da aula. 2) Agora utilize o compilador gcc com as flags '-E', '-S' e '-c'. No primeiro caso, algo ser escrito no ecr, enquanto nos restantes os resultados sero guardados nos ficheiros sum_v1.s e sum_v1.o, respectivamente, na mesma directoria que o ficheiro original. Leia o que aparecer no ecr e abra esses ficheiros com o editor de texto, verificando o seu contedo com ateno. Consulte os slides para conseguir explicar os resultados que obteve. 3) Concentremo-nos agora no ficheiro sum_v1.s. Edite o ficheiro e localize a instruo addu. Troque addu por subu e guarde as alteraes. Compile o ficheiro modificado at ao fim. Corra o executvel e explique os resultados observados. 4) O cdigo em sum_v1.c faz uso das funes printf() e scanf() das livrarias standard do C. Consulte as man pages (http://linuxmanpages.com/man3, que contm o ndice geral, http://linuxmanpages.com/man3/printf.3.php e tambm
SMP-MEEC
Pg. 2/4
Lab1 SMP
DEEC-FCTUC
http://linuxmanpages.com/man3/scanf.3.php) para saber mais sobre estas funes. Altere o programa de forma ao resultado da soma ser escrito em hexadecimal. Faa a soma de dois nmeros negativos e explique o valor em hexadecimal que v impresso no ecr (representao em complementos de 2). 5) Analise, compile e teste sum_v2.c. Observe as diferenas que existem entre o cdigofonte dos dois programas. 6) Imagine que pretende disponibilizar a funo soma() para ser utilizada por mltiplos programas. Para tal deve criar um header file soma.h com a declarao da funo, e soma.c com o cdigo da funo: soma.h:
int soma(int
soma.c:
, int
);
sum_v3: sum_v3.o soma.o gcc -o sum_v3 sum_v3.o soma.o sum_v3.o: sum_v3.c soma.h gcc -c sum_v3.c soma.o: soma.c gcc -c soma.c
SMP-MEEC
Pg. 3/4
Lab1 SMP
DEEC-FCTUC
Crie o makefile com as linhas acima indicadas, grave com o nome makefile, e teste com o comando make. (Para mais informaes sobre o uso da ferramenta Make, consulte http://mrbook.org/tutorials/make/ e http://en.wikipedia.org/wiki/Makefile.)
9) Faa agora uma funo adicional, como fez para a soma, incluindo ficheiro de cdigofonte e respectivo header file. Esta funo dever receber um valor como argumento e escrever no ecr a sua converso para hexadecimal. Modifique agora o cdigo sum_v3.c (e o makefile) de forma a escrever no ecr cada uma das parcelas e o resultado da soma em hexadecimal. 10) Da mesma forma, acrescente agora uma nova funo (sempre com cdigo-fonte em ficheiro separado) que implemente uma potncia, c=ab, recorrendo a um ciclo. Faa trs verses diferentes dessa funo, cada uma usando um tipo de ciclo diferente (for, while e do-while).
SMP-MEEC
Pg. 4/4