TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

A Arquitetura de Computadores

Por:   •  21/8/2020  •  Trabalho acadêmico  •  1.245 Palavras (5 Páginas)  •  212 Visualizações

Página 1 de 5

Aluno: Jean Michel Fernandes Carvalho

Matrícula: 20181101516

Engenharia da Computação

Arquitetura dos Computadores

Rio de Janeiro

Junho de 2020

Universidade Veiga de Almeida

Professor André Lucio de Oliveira

QUESTÃO 1 – Utilizando os conceitos sobre a linguagem de máquina da arquitetura

MIPS [Organização e Arquitetura (Patterson e Henessy) - Capítulo 2] vistos nas

aulas, implemente um programa com as seguintes características (3,0):

A) Implementar a versão do programa em C, que deve ter:

● Uma função/procedimento que será acionada pelo main;

● Manipular um vetor de números inteiros dentro desta função;

● Fazer algum cálculo matemático dentro desta função, utilizando este

vetor;

● Este programa deverá solicitar alguma informação do usuário;

● Este programa deverá imprimir algum resultado de saída;

B) Implementar a versão deste programa em Assembly MIPS, utilizando a

ferramenta MARS [http://courses.missouristate.edu/KenVollmar/MARS/]

<<OBS-1>>: O programa em C deverá ser colocado aqui neste arquivo .doc, com

as respostas das demais questões. Já o programa em Assembly MIPS, deverá ser

colocado aqui neste .doc e ser enviado por e-mail com o arquivo extensão .asm

(extensão utilizada pelo MARS).

<<OBS-2>>: Não é permitido entregar um programa já visto em sala de aula.

<<OBS-3>>: Não é permitido entregar um programa igual ao dos colegas de turma.

<<OBS-4>>: O aluno que fizer um programa recursivo correto poderá ganhar até

1,0 ponto extra nesta atividade.

A)

#include <stdio.h>

void somamult(int v[], int *soma, int *mult){

*soma=v[0]+v[1];

*mult=v[0]*v[1]

}

void print(int soma, int mult){

printf("valor multiplicacao: %d\n",mult);

printf("valor soma: %d\n",soma);

}

int main(){

int v[2], mult, soma;

scanf("%d", &v[0]);

scanf("%d", &v[1]);

somamult(v, &soma, &mult);

print(soma, mult);

return 0;

}

B)

.data

vet:.space 8 # Vetor de 2 "words

p:.asciiz "\n"

vm:.asciiz "valor multiplicacao: "

vs:.asciiz "valor soma: "

.text

main:

addi $t0,$zero,0

li $v0, 5

syscall

sw $v0,vet($t0)

addi $t0, $t0, 4

li $v0, 5

syscall

sw $v0,vet($t0)

addi $t0,$zero,0

lw $s0, vet($t0)

addi $t0, $t0, 4

lw $s1 ,vet($t0)

jal somamult

j print

somamult:

mul $s2,$s0,$s1

add $s3,$s0,$s1

jr $ra

print:

li $v0, 4 #print mult

la $a0, vm

syscall

li $v0, 1 #valor mult

move $a0, $s2

syscall

li $v0, 4 #print pulo

la $a0, p

syscall

li $v0, 4 #print soma

la $a0, vs

syscall

li $v0, 1 #valor soma

move $a0, $s3

syscall

li $v0, 4 #print pulo

la $a0, p

syscall

QUESTÃO 2 – A seguir pode ser verificado um programa escrito na linguagem

Assembly da arquitetura MIPS. Considerando que $a0, $a1, $a2 e $a3 são

registradores que contém os valores de quatro variáveis de um programa de alto

nível, escreva o respectivo código em alto nível. Utilize a linguagem C (1,5).

main:

jal ex1

ex1:

subi $sp,$sp,12

sw $t1, 8($sp)

sw $t0, 4($sp)

sw $s0, 0($sp)

add $t0, $a0, $a1

add $t1, $a2, $a3

sub $s0, $t0, $t1

...

Baixar como (para membros premium)  txt (8.8 Kb)   pdf (52.6 Kb)   docx (553.6 Kb)  
Continuar por mais 4 páginas »
Disponível apenas no TrabalhosGratuitos.com