• Home
  • Chat IA
  • Guru IA
  • Tutores
  • Central de ajuda
Home
Chat IA
Guru IA
Tutores

·

Engenharia Elétrica ·

Arquitetura de Computadores

Envie sua pergunta para a IA e receba a resposta na hora

Recomendado para você

Atividade sobre Arquiteturas Contemporâneas

1

Atividade sobre Arquiteturas Contemporâneas

Arquitetura de Computadores

UESPI

3 Avaliação Parcial

3

3 Avaliação Parcial

Arquitetura de Computadores

UESPI

Arquitetura de Sistemas Computacionais

2

Arquitetura de Sistemas Computacionais

Arquitetura de Computadores

UESPI

Tarefa 06 - Arquiteturas Modernas

4

Tarefa 06 - Arquiteturas Modernas

Arquitetura de Computadores

UESPI

Arquiteturas de Sistemas Computacionais

2

Arquiteturas de Sistemas Computacionais

Arquitetura de Computadores

UESPI

Trabalho Arquitetura de Sistemas Computacionais

21

Trabalho Arquitetura de Sistemas Computacionais

Arquitetura de Computadores

UESPI

Texto de pré-visualização

UNIVERSIDADE ESTADUAL DO PIAUÍ CENTRO DE TECNOLOGIA E URBANISMO DEPARTAMENTO DE ENGENHARIA ELÉTRICA DISCIPLINA ARQUITETURA DE SISTEMAS COMPUTACIONAIS DOCENTE ATOS APOLLO SILVA BORGES 2ª Lista de Exercícios 1 Levando em consideração o seguinte código Java e o seu respectivo código Assembly suponha que após o condicional ifelse seja adicionada a seguinte linha de código k i j Qual seria o novo código Assembly 2 Apresente duas implementações em Assembly diferentes para o seguinte código i k n 5 3 Dê o código Java que produziu o seguinte código IJVM ILOAD j ILOAD n ISUB BIPUSH 7 ISUB DUP IADD ISTORE i 4 Quanto tempo em nanosegundos uma máquina de 25 GHz baseada no MIC1 levará para executar o seguinte código i j k 5 Explique a implementação da instrução IFCMPEQ detalhando a função de cada linha de código MAL que compõe essa instrução 6 Escreva o código em linguagem MAL que implementa uma nova função IJVM A função se chamará POPTWO e terá como objetivo remover duas palavras do topo da pilha 7 Faça a implementação em linguagem de montagem IJVM do seguinte código Java int votos 126 201 112 declaração de um vetor com três elementos if votos0 votos1 compara posição 0 do vetor com posição 1 vencedor votos0 declara posição 0 vencedora else caso posição 1 seja maior que posição 0 if votos1 votos2 compara posição 1 com posição 2 vencedor votos1 declara posição 1 vencedora else caso posição 2 seja maior que posição 1 vencedor votos2 declara posição 2 vencedora Arquitetura de computadores 2º código Assembly modificado LOAD j i j k LOAD k IADD ISTORE i LOAD i ifi 3 BIPUSH 3 IFICMPEQ L1 LOAD j else j j 1 BIPUSH 1 ISUB ISTORE j GOTO L2 L1 BIPUSH 0 if k 0 ISTORE k LOAD i k i j nova linha LOAD j ISUB ISTORE k L2 As instruções adicionadas funcionam da seguinte forma LOAD i carrega o conteúdo da variável local i e o coloca no topo da pilha LOAD j carrega o conteúdo da variável local j e também o põe no topo da pilha ISUB retira os dois valores do topo da pilha realiza a subtração i j e empilha o resultado ISTORE K retira o resultado do topo da pilha e armazena na variável local k 2º Implementação 1 i k n 5 LOAD k carrega k LOAD n carrega n IADD k n BIPUSH 5 empurra 5 IADD k n 5 ISTORE i armazena em i Esta implementação os valores k e n são carregados primeiro e somados Em seguida a constante 5 é empurrada para a pilha usando BIPUSH e o resultado anterior é somado com este literal O valor final é armazenado na variável i Implementação 2 i k n 5 LOAD n carrega n BIPUSH 5 empurra 5 IADD n 5 LOAD k carrega k IADD n 5 k ISTORE i armazena em i Nesta segunda versão a constante 5 é somada primeiro com n e o resultado é então somado com k 3º LOAD j carrega j LOAD n carrega n ISUB j n BIPUSH 7 empurra 7 ISUB j n 7 DUP duplica o resultado IADD soma resultado resultado ISTORE i armazena em i i 2 j n 7 4º dado código i j k LOAD j carrega j LOAD k carrega k IADD j k ISTORE i armazena em i frequência máquina 25 GHz 25 109 duração do ciclo 1 25 109 014 nanossegundos ciclos por instrução 8 microinstruções 8 ciclos total de instruções 4 total de ciclos 4 8 32 ciclos tempo total de execução 32 014 448 nanossegundos A instrução IFCMPER label é utilizada na linguagem IJVM para realizarem comparações entre dois valores que estão no topo da pilha Caso esses valores sejam iguais o controle de fluxo é desviado para o endereço especificado por label Essa operação é essencial para implementar estruturas de controle como if while e for na IJVM Na arquitetura MIC1 toda instrução IJVM é decodificada em uma sequência de microinstruções escritas em MAL que controlam os registradores barramentos e unidades funcionais de forma mais granular Como a comparação é feita entre dois valores da pilha é necessário 1 Pegar e desempilhar os dois valores 2 Realizar a subtração entre eles 3 Avaliar se o resultado é igual a zero 4 Caso positivo realizar o salto condicional código MAL típico MAR SP MDR MMAR SP SP1 H MDR MAR SP MDR MMAR SP SP1 ALU HMDR IF ALU0 THEN PC MBRUPC descrição MAR SP O endereço do topo da pilha é armazenado no registrador de endereço de memória MAR MDR MMAR O valor armazenado no topo da pilha é carregado da memória para o registrador de dados MDR SP SP1 O ponteiro da pilha é incrementado removendo o valor usado H MDR O valor retirado da pilha é transferido para o registrador auxiliar H MAR SP O registrador de endereço agora aponta para o novo topo da pilha o segundo valor a ser comparado MDR MMAR carrega o segundo valor para o registrador de dados SP SP1 Remove também este segundo valor da pilha ALU H MDR A unidade lógica e aritmética realiza a subtração entre os dois valores IF ALU0 THEN PC MBRU PC Se a subtração resultar em zero ou seja se os valores forem iguais o contador de programa PC recebe o endereço do desvio somando o valor imediato MBRU ao PC atual 6º código MAL da função NOPTOP SP SP1 SP SP1 SP SP1 descarta o valor atual do topo da pilha incrementando o ponteiro para o próximo valor Ao repetir a operação duas vezes dois elementos são eficientemente removidos da pilha sem a necessidade de mover ou sobrescrever dados na memória 7º código IJVM ILOAD 0 base de vetos BIPUSH 0 IALOAD vetos0 ILOAD 0 BIPUSH 1 IALOAD vetor 1 IFICMPGT L1 se vetos0 vetos1 vai para L1 j else ILOAD 0 BIPUSH 1 IALOAD vetos 1 ILOAD 0 BIPUSH 2 IALOAD vetos2 IFICMPGT L2 se vetos 1 vetos 2 vai para L2 j imediata vetos 2 LOAD 0 31PUSH 2 IALOAD ISTORE 1 GOTO FIM L2 LOAD 0 N1PUSHT 1 IALOAD ISTORE 1 GOTO FIM LI LOAD 0 31PUSHT 0 IALOAD ISTORE 1 FIM j fim do códígo A IJVM utiliza o comando IALOAD para acessar elementos de um vetor Essa instrução examina duas variáveis do topo da pilha a base do vetor ou seja a referência armazenada em uma variável local e o índice O elemento localizado no endereço base índice é então empilhado compara notas0 e notas1 utilizando IFICMPGT se notas0 notas1 armazena notas0 em renecedor denha para L1 caso contrário compara notas1 com notas2 se notas1 notas2 armazena notas1 em renecedor denha para L2 caso contrário armazena notas2 em renecedor Os rótulos L1 L2 e FIM representam pontos de umic usado para organizar o fluxo de controle renum lendo a estrutura condicioal aninhado no eo digojava

Envie sua pergunta para a IA e receba a resposta na hora

Recomendado para você

Atividade sobre Arquiteturas Contemporâneas

1

Atividade sobre Arquiteturas Contemporâneas

Arquitetura de Computadores

UESPI

3 Avaliação Parcial

3

3 Avaliação Parcial

Arquitetura de Computadores

UESPI

Arquitetura de Sistemas Computacionais

2

Arquitetura de Sistemas Computacionais

Arquitetura de Computadores

UESPI

Tarefa 06 - Arquiteturas Modernas

4

Tarefa 06 - Arquiteturas Modernas

Arquitetura de Computadores

UESPI

Arquiteturas de Sistemas Computacionais

2

Arquiteturas de Sistemas Computacionais

Arquitetura de Computadores

UESPI

Trabalho Arquitetura de Sistemas Computacionais

21

Trabalho Arquitetura de Sistemas Computacionais

Arquitetura de Computadores

UESPI

Texto de pré-visualização

UNIVERSIDADE ESTADUAL DO PIAUÍ CENTRO DE TECNOLOGIA E URBANISMO DEPARTAMENTO DE ENGENHARIA ELÉTRICA DISCIPLINA ARQUITETURA DE SISTEMAS COMPUTACIONAIS DOCENTE ATOS APOLLO SILVA BORGES 2ª Lista de Exercícios 1 Levando em consideração o seguinte código Java e o seu respectivo código Assembly suponha que após o condicional ifelse seja adicionada a seguinte linha de código k i j Qual seria o novo código Assembly 2 Apresente duas implementações em Assembly diferentes para o seguinte código i k n 5 3 Dê o código Java que produziu o seguinte código IJVM ILOAD j ILOAD n ISUB BIPUSH 7 ISUB DUP IADD ISTORE i 4 Quanto tempo em nanosegundos uma máquina de 25 GHz baseada no MIC1 levará para executar o seguinte código i j k 5 Explique a implementação da instrução IFCMPEQ detalhando a função de cada linha de código MAL que compõe essa instrução 6 Escreva o código em linguagem MAL que implementa uma nova função IJVM A função se chamará POPTWO e terá como objetivo remover duas palavras do topo da pilha 7 Faça a implementação em linguagem de montagem IJVM do seguinte código Java int votos 126 201 112 declaração de um vetor com três elementos if votos0 votos1 compara posição 0 do vetor com posição 1 vencedor votos0 declara posição 0 vencedora else caso posição 1 seja maior que posição 0 if votos1 votos2 compara posição 1 com posição 2 vencedor votos1 declara posição 1 vencedora else caso posição 2 seja maior que posição 1 vencedor votos2 declara posição 2 vencedora Arquitetura de computadores 2º código Assembly modificado LOAD j i j k LOAD k IADD ISTORE i LOAD i ifi 3 BIPUSH 3 IFICMPEQ L1 LOAD j else j j 1 BIPUSH 1 ISUB ISTORE j GOTO L2 L1 BIPUSH 0 if k 0 ISTORE k LOAD i k i j nova linha LOAD j ISUB ISTORE k L2 As instruções adicionadas funcionam da seguinte forma LOAD i carrega o conteúdo da variável local i e o coloca no topo da pilha LOAD j carrega o conteúdo da variável local j e também o põe no topo da pilha ISUB retira os dois valores do topo da pilha realiza a subtração i j e empilha o resultado ISTORE K retira o resultado do topo da pilha e armazena na variável local k 2º Implementação 1 i k n 5 LOAD k carrega k LOAD n carrega n IADD k n BIPUSH 5 empurra 5 IADD k n 5 ISTORE i armazena em i Esta implementação os valores k e n são carregados primeiro e somados Em seguida a constante 5 é empurrada para a pilha usando BIPUSH e o resultado anterior é somado com este literal O valor final é armazenado na variável i Implementação 2 i k n 5 LOAD n carrega n BIPUSH 5 empurra 5 IADD n 5 LOAD k carrega k IADD n 5 k ISTORE i armazena em i Nesta segunda versão a constante 5 é somada primeiro com n e o resultado é então somado com k 3º LOAD j carrega j LOAD n carrega n ISUB j n BIPUSH 7 empurra 7 ISUB j n 7 DUP duplica o resultado IADD soma resultado resultado ISTORE i armazena em i i 2 j n 7 4º dado código i j k LOAD j carrega j LOAD k carrega k IADD j k ISTORE i armazena em i frequência máquina 25 GHz 25 109 duração do ciclo 1 25 109 014 nanossegundos ciclos por instrução 8 microinstruções 8 ciclos total de instruções 4 total de ciclos 4 8 32 ciclos tempo total de execução 32 014 448 nanossegundos A instrução IFCMPER label é utilizada na linguagem IJVM para realizarem comparações entre dois valores que estão no topo da pilha Caso esses valores sejam iguais o controle de fluxo é desviado para o endereço especificado por label Essa operação é essencial para implementar estruturas de controle como if while e for na IJVM Na arquitetura MIC1 toda instrução IJVM é decodificada em uma sequência de microinstruções escritas em MAL que controlam os registradores barramentos e unidades funcionais de forma mais granular Como a comparação é feita entre dois valores da pilha é necessário 1 Pegar e desempilhar os dois valores 2 Realizar a subtração entre eles 3 Avaliar se o resultado é igual a zero 4 Caso positivo realizar o salto condicional código MAL típico MAR SP MDR MMAR SP SP1 H MDR MAR SP MDR MMAR SP SP1 ALU HMDR IF ALU0 THEN PC MBRUPC descrição MAR SP O endereço do topo da pilha é armazenado no registrador de endereço de memória MAR MDR MMAR O valor armazenado no topo da pilha é carregado da memória para o registrador de dados MDR SP SP1 O ponteiro da pilha é incrementado removendo o valor usado H MDR O valor retirado da pilha é transferido para o registrador auxiliar H MAR SP O registrador de endereço agora aponta para o novo topo da pilha o segundo valor a ser comparado MDR MMAR carrega o segundo valor para o registrador de dados SP SP1 Remove também este segundo valor da pilha ALU H MDR A unidade lógica e aritmética realiza a subtração entre os dois valores IF ALU0 THEN PC MBRU PC Se a subtração resultar em zero ou seja se os valores forem iguais o contador de programa PC recebe o endereço do desvio somando o valor imediato MBRU ao PC atual 6º código MAL da função NOPTOP SP SP1 SP SP1 SP SP1 descarta o valor atual do topo da pilha incrementando o ponteiro para o próximo valor Ao repetir a operação duas vezes dois elementos são eficientemente removidos da pilha sem a necessidade de mover ou sobrescrever dados na memória 7º código IJVM ILOAD 0 base de vetos BIPUSH 0 IALOAD vetos0 ILOAD 0 BIPUSH 1 IALOAD vetor 1 IFICMPGT L1 se vetos0 vetos1 vai para L1 j else ILOAD 0 BIPUSH 1 IALOAD vetos 1 ILOAD 0 BIPUSH 2 IALOAD vetos2 IFICMPGT L2 se vetos 1 vetos 2 vai para L2 j imediata vetos 2 LOAD 0 31PUSH 2 IALOAD ISTORE 1 GOTO FIM L2 LOAD 0 N1PUSHT 1 IALOAD ISTORE 1 GOTO FIM LI LOAD 0 31PUSHT 0 IALOAD ISTORE 1 FIM j fim do códígo A IJVM utiliza o comando IALOAD para acessar elementos de um vetor Essa instrução examina duas variáveis do topo da pilha a base do vetor ou seja a referência armazenada em uma variável local e o índice O elemento localizado no endereço base índice é então empilhado compara notas0 e notas1 utilizando IFICMPGT se notas0 notas1 armazena notas0 em renecedor denha para L1 caso contrário compara notas1 com notas2 se notas1 notas2 armazena notas1 em renecedor denha para L2 caso contrário armazena notas2 em renecedor Os rótulos L1 L2 e FIM representam pontos de umic usado para organizar o fluxo de controle renum lendo a estrutura condicioal aninhado no eo digojava

Sua Nova Sala de Aula

Sua Nova Sala de Aula

Empresa

Central de ajuda Contato Blog

Legal

Termos de uso Política de privacidade Política de cookies Código de honra

Baixe o app

4,8
(35.000 avaliações)
© 2025 Meu Guru®