PUCRS - INSTITUTO DE INFORMÁTICA
ARQUITETURA DE COMPUTADORES I - TURMA 138
Prof. Eduardo Augusto Bezerra 17/11/97 PROVA P4
NOME DO ALUNO : __________________________________________________________
1. Considerando o programa abaixo, preencha a tabela com informações a respeito do total de bytes ocupados no segmento de memória indicado, antes da execução da instrução localizada no label indicado (o valor a ser atribuído para cada resposta correta encontra-se dentro da respectiva célula da tabela). (4,0 pontos)
.data
x: .byte 0
y: .word 0, 1
.text
.globl __start
__start: addi $4, $0, 3
jal aa
add $4, $0, $2
L1: addi $2, $0, 1
syscall
addiu $v0, $0, 10
syscall
#####################################
aa: subiu $29, $29, 12
L2: sw $31, 4($29)
sw $30, 0($29)
addiu $30, $29, 8
sw $4, 0($30)
addi $4, $0, 256
jal malloc
addi $2, $0, 1
addi $3, $0, 2
L3: jal bb
L4: lw $2, 0($30)
lw $31, 4($29)
lw $30, 0($29)
L5: addiu $29, $29, 12
L6: jr $31
#####################################
bb: subu $29, $29, 20
sw $2, 16($29)
sw $3, 12($29)
sw $31, 4($29)
sw $30, 0($29)
addiu $30, $29, 8
sw $4, 0($30)
add $2, $0, $2
subu $3, $3, $2
beq $3, $0, L7
# ATENÇÃO !! Chamada recursiva a bb
jal bb
L7: addi $4, $0, 100
jal malloc
lw $30, 0($29)
lw $31, 4($29)
lw $3, 12($29)
lw $2, 16($29)
addiu $29, $29, 20
jr $31
#####################################
malloc: addi $2, $0, 9
add $4, $0, $4
syscall
jr $31
Label |
Pilha |
Heap (variáveis dinâmicas) |
L1 |
(0,1) |
(0,1) |
L2 |
(0,2) |
(0,2) |
L3 |
(0,3) |
(0,3) |
L4 |
(0,4) |
(0,3) |
L5 |
(0,4) |
(0,4) |
L6 |
(0,4) |
(0,4) |
L7 |
(0,2) |
(0,3) |
2. Para o programa em C abaixo, forneça o código equivalente em assembly para o MIPS, sem utilização de registradores para representar as variáveis (deverão ser definidas posições de memória para armazenamento das variáveis). (3,0 pontos)
struct MYSTRUCT {
int i, j;
int x[20];
} st1, st2, *ptr;
void main()
{
st1.i = 5;
st1.x[0] = st1.i;
}
3. Escreva um programa em assembly para o MIPS que calcule o somatório dos primeiros 20 valores inteiros positivos de 32 bits existentes a partir da posição IniNumeros da memória. O resultado deverá ser armazenado no registrador $2. O programa deverá estar inteiramente comentado de forma a facilitar sua compreensão. (3,0 pontos)
Atenção !!! A compreensão do enunciado faz parte da avaliação.
Vale dúvida: |
? |
? |
? |