1
Arquitetura de Computadores
UERJ
57
Arquitetura de Computadores
UERJ
2
Arquitetura de Computadores
UERJ
1
Arquitetura de Computadores
UERJ
1
Arquitetura de Computadores
UERJ
1
Arquitetura de Computadores
UERJ
1
Arquitetura de Computadores
UERJ
1
Arquitetura de Computadores
UERJ
19
Arquitetura de Computadores
UERJ
1
Arquitetura de Computadores
UERJ
Texto de pré-visualização
Exercıcios de Arquitetura de Computadores I Assembler de MIPS III Prof Bernardo Costa 1 210 Implemente o seguinte codigo C em MIPS supondo que set array seja a primeira chamada de funcao int i void setarrayint num int array10 for i0 i10 i arrayi comparenumi int compareint a int b if subab 0 return 1 else return 0 int subint a int b return ab 2 237 A traducao MIPS do segmento C ou Java abaixo secao 26 Compilando um loop while em C utiliza um desvio condicional e um jump incondicional a cada passada de loop Somente compiladores fracos produziriam um codigo com este trabalho adicional do loop Supondo que este codigo esteja em Java nao C reescreva o codigo Assembler para que utilize no maximo um desvio ou jump a cada passada de loop Alem disso acrescente codigo para realizar a verificacao do Java para ındice fora dos limites e garantir que este codigo use no maximo um desvio ou jump a cada passada do loop quantas instrucoes sao executadas antes e depois da otimizacao se a quantidade de iteracoes do loop for 10 e o valor de i nunca estiver fora dos limites Dica considere que o registrador s3 s5 s6 e s7 sao respectivamente os valores de i k endereco base do vetor save e o tamanho de save savelength em Java trecho while while savei k i 1 trecho asm da secao 26 Loop sll t1 s3 2 Registrador temporario t1 4 i add t1 t1 s6 t1 endereco savei lw t0 0t1 Registro temporario t0 savei bne t0 s5 Exit va para Exit se savei k addi s3 s3 1 i i 1 j Loop va para Loop Exit 3 238 Considere o fragmento de codigo Java abaixo Suponha que a e b seja arrays de palavras e que o endereco base de a esteja em a0 e o endereco base de b esteja em a1 O registrador t0 esta associado a variavel i e o registrador s0 ao valor de c Vocˆe tambem pode considerar que quaisquer constantes de endereco de que precise estejam disponıveis para serem lidas da memoria Escreva o codigo para MIPS Quantas instrucoes sao executadas durante a execucao deste codigo se nao houver excecoes de array fora dos limites Quantas referˆencias aos dados de memoria serao feitas durante a execucao for i0 i100 i ai bi c 1
1
Arquitetura de Computadores
UERJ
57
Arquitetura de Computadores
UERJ
2
Arquitetura de Computadores
UERJ
1
Arquitetura de Computadores
UERJ
1
Arquitetura de Computadores
UERJ
1
Arquitetura de Computadores
UERJ
1
Arquitetura de Computadores
UERJ
1
Arquitetura de Computadores
UERJ
19
Arquitetura de Computadores
UERJ
1
Arquitetura de Computadores
UERJ
Texto de pré-visualização
Exercıcios de Arquitetura de Computadores I Assembler de MIPS III Prof Bernardo Costa 1 210 Implemente o seguinte codigo C em MIPS supondo que set array seja a primeira chamada de funcao int i void setarrayint num int array10 for i0 i10 i arrayi comparenumi int compareint a int b if subab 0 return 1 else return 0 int subint a int b return ab 2 237 A traducao MIPS do segmento C ou Java abaixo secao 26 Compilando um loop while em C utiliza um desvio condicional e um jump incondicional a cada passada de loop Somente compiladores fracos produziriam um codigo com este trabalho adicional do loop Supondo que este codigo esteja em Java nao C reescreva o codigo Assembler para que utilize no maximo um desvio ou jump a cada passada de loop Alem disso acrescente codigo para realizar a verificacao do Java para ındice fora dos limites e garantir que este codigo use no maximo um desvio ou jump a cada passada do loop quantas instrucoes sao executadas antes e depois da otimizacao se a quantidade de iteracoes do loop for 10 e o valor de i nunca estiver fora dos limites Dica considere que o registrador s3 s5 s6 e s7 sao respectivamente os valores de i k endereco base do vetor save e o tamanho de save savelength em Java trecho while while savei k i 1 trecho asm da secao 26 Loop sll t1 s3 2 Registrador temporario t1 4 i add t1 t1 s6 t1 endereco savei lw t0 0t1 Registro temporario t0 savei bne t0 s5 Exit va para Exit se savei k addi s3 s3 1 i i 1 j Loop va para Loop Exit 3 238 Considere o fragmento de codigo Java abaixo Suponha que a e b seja arrays de palavras e que o endereco base de a esteja em a0 e o endereco base de b esteja em a1 O registrador t0 esta associado a variavel i e o registrador s0 ao valor de c Vocˆe tambem pode considerar que quaisquer constantes de endereco de que precise estejam disponıveis para serem lidas da memoria Escreva o codigo para MIPS Quantas instrucoes sao executadas durante a execucao deste codigo se nao houver excecoes de array fora dos limites Quantas referˆencias aos dados de memoria serao feitas durante a execucao for i0 i100 i ai bi c 1