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

O Plano de Ensino

Por:   •  24/9/2020  •  Ensaio  •  1.652 Palavras (7 Páginas)  •  132 Visualizações

Página 1 de 7

Ao desenvolver esta atividade e devolvê-la com as respostas, o estudante está ciente que ela deverá ser desenvolvida individualmente sob compromisso de honra.

Obviamente, está permitida a consulta de recursos disponibilizados no ambiente virtual e quaisquer outras que o estudante encontrar (lembre-se sempre de beber da fonte, quando possível).

Além disso, não é somente permitido, como é esperado que os estudantes troquem ideias entre si, mas sem prejuízo ao aprendizado que só é alcançado pelo esforço próprio.

Por ocasião da primeira atividade apresentada à turma, a citação abaixo será apresentada somente esta vez. Passo a vocês a responsabilidade e tenho confiança que vocês responderão à altura.

“Chamamos de ética o conjunto de coisas que as pessoas fazem quando todos estão olhando. O conjunto de coisas que as pessoas fazem quando ninguém está olhando chamamos de caráter.”

Oscar Wilde


Tarefa 1 - Pseudo-instruções (0,5)

Coloque o código abaixo em um arquivo com extensão asm e abra no MARS.

.data

STR1:.asciiz "FIM"

.text

main:li $s0, 50

R1:        ble $s0, $zero, R2

addi $s0, $s0, -1

j R1

R2:        la $a0, STR1

addi $v0, $zero, 4

syscall

No código, temos as seguintes pseudo-instruções:

  • li (load immediate):
  • li $s0, 50 # $s0 recebe 50
  • ble (branch if less or equal):
  • ble $s0, $zero, R2 # desvia se o conteúdo de $s0 for menor ou igual a zero.
  • la (load address):
  • la $a0, STR1 # coloca o endereço (número de 32 bits) de STR1 em $a0

Explique como cada uma delas é executada usando instruções reais.

li

addiu $s0, $zero, 50               #s0 <- 50

ble

slt $at, $zero, $s0
beq $at, $zero, R2                  #se s0<=0, vá para R2

la

lui $at, 0x1001                       #bits[31:16] de &STR1
ori $a0, $at, 0x0000                #bits[15:0] de &STR, daí: a0 <- &[STR1]


Tarefa 2 - Engenharia reversa (0,9)

Engenharia reversa é uma arte.

Analise o código da tarefa 1 e escreva o equivalente em linguagem C.

Resposta:

main() {
        int x = 50;
        while(x > 0) {
                x--;
        }
        printf(“FIM”);
}


Tarefa 3 - Formatos de instrução e endereçamentos (1,0)

Localize as instruções addi e j no código.

Para cada uma delas, informe:

  • formato usado (tipo R, I ou J)
  • o valor de cada um  seus campos

-> addi ( instrução 0x2210ffff -> 0010 0010 0001 0000 1111 1111 1111 1111 )

TIPO

OP CODE (6 bits)

RS (5 bits)

RT (5 bits)

CONSTANTE (16 bits)

I

8

16

16

-1


-> j ( instrução 0x08100001-> 0000 1000 0001 0000 0000 0000 0000 0001 ) ->

[0000 0000 0100 0000 0000 0000 0000 0100] = 0x0040 0004

Legendas de cores:
- pseudoEndereço (26bits) <<2 (pois instruções no MIPS32 sempre terminam com os 2 bits finais =0)

- 4 bits mais altos de PC (que chega aqui valendo 0x0040000C)

TIPO

OP CODE (6 bits)

ENDEREÇO (26 bits)

J

2

0x00400004


Localize a instrução de desvio condicional.

Apresente o valor do último campo e explique-o.

Resposta: instrução beq = 0x10200002
             Último campo 2, é o número de instruções que serão saltadas a partir de (PC+4), caso (conteúdo de $at) = 0.

Localize a instrução de salto.

Apresente o valor do último campo e como ele se relaciona com 0x00400004

Resposta: resposta acompanha a resolução acima feita para instrução j - jump


Tarefa 4 - Escovando bits com instruções lógicas (1,2)

Em várias situações temos informações que apresentam apenas dois valores e é preferível guardar em apenas um bit e não em um byte ou palavra.

Suponha que em uma certa tecnologia de rede, um pacote deve ser marcado como “elegível para descarte” se a fila no roteador estiver acima de um certo limite. Caso contrário, o pacote não somente não será marcado, como a marcação será removida.

Assim, crie um código que coloque 1 no bit30 de do registrador $s0 se $s1<$s2 e 0 caso contrário.

$s0

b31

b30

b29

...

b2

b1

b0

Teste para os 4 casos:

  • $s0 = 0xFFFF1234, $s1 = 100, $s2=200
  • $s0 = 0x0FFF1234, $s1 = 100, $s2=200
  • $s0 = 0xFFFF1234, $s1 = 200, $s2=100
  • $s0 = 0x0FFF1234, $s1 = 200, $s2=100

Código: fiz para os 4 casos: basta mudar valor de $s0 de(0xffff1234 para 0x0fff1234); e alternar $s1 e $s2 entre 100 e 200.

...

Baixar como (para membros premium)  txt (6.4 Kb)   pdf (288.7 Kb)   docx (557.1 Kb)  
Continuar por mais 6 páginas »
Disponível apenas no TrabalhosGratuitos.com