Roteiro de Aulas - Software Básico

11/08

Apresentação do Curso

referência: Aho & Ullman, 4.2.

13/08

Arquitetura Típica de uma Máquina

Elementos Básicos

CPU

Memória Principal

Memória Secundária

referência: Aho & Ullman, 4.3, 4.4.

18/08

Representação de Dados Básicos

Inteiros

referência: Patterson & Hennessy, 4.1, 4.2, 4.3.

obs: Não se deter nas referências a instruções da linguagem de máquina!

20/08

Representação de Dados Básicos (cont)

Operações bit a bit

Operações bit a bit em C

exercícios

  1. Que número na base 10 é representado por CA (hex), interpretado
    1. como número inteiro sem sinal?
    2. como inteiro em complemento a 2?
  2. Converter 45 e -113 da base 10 para a representação em complemento a 2, somar as representações e converter de volta para a base 10.
  3. No exemplo discutido em sala, da variável flags, verificar:
    1. Se a variável não é global nem externa.
    2. Se a variável é global mas não é externa.

referência: Patterson & Hennessy, 4.4.

25/08

Representação de Dados Básicos (cont)

Representação em ponto flutuante: padrão IEEE 754

referência: Patterson & Hennessy, 4.8, até pag. 283, e pags 304-305.

Discussão do exercício 3 da aula de 20/08

27/08

Representação de Dados Básicos (cont)

Representação de caracteres

Exercícios

  1. Suponha que temos uma variável unsigned int cabecalho, de 16 bits, com as informações: crie código C para:
    1. Extrair tamanho do pacote (atribua a uma outra variável inteira)
    2. Mudar para indicar que não exige ACK
    3. Testar se pacote exige ACK
    4. Extrair contador
    5. Zerar contador
    6. Incrementar contador (não se preocupe em detectar overflow, mas use os itens anteriores de forma a garantir que não se estraga o campo de tamanho caso ocorra overflow!)
  2. Represente o número -0,375 (base 10) em ponto flutuante IEEE 754, precisão simples. Dê o resultado em hexa.
  3. Qual o número na base 10 representado pelo ponto flutuante (IEEE 754) C0A0 0000 (hexa)?
  4. Como ficaria a representação da cadeia de caracteres 'ada', em C, em uma máquina com palavra de 32 bits:
    1. little-endian
    2. big-endian

1/09

Representação de Dados (cont)

Linguagem Assembly: a linguagem MIPS

Registradores

Operações Aritméticas

Operações de Transferência de Dados

referência: Patterson & Hennessy, 3.1, 3.2, 3.3.

3/09

Instruções MIPS e Representação de Mecanismos de C (cont)

Arrays e ponteiros em C e tradução para assembly

Representação de Intruções MIPS

importante: Não há distinção entre instruções e dados para a máquina! A sequÊncia de endereços usados como ponteiros para instruções e os dados usados nas instruções é que determinam o que é instrução e o que é dado!

referências: Patterson & Hennessy, 3.4, K&R, capítulo 5.

8/09

Instruções para Tomada de Decisão

  1. código gerado para um if simples
  2. código gerado para um if-then-else
  3. código gerado para while e do ... while
  4. comandos break e continue
  5. código gerado para um for
  6. código gerado para um switch

exercícios:

Suponha que as variáveis f, g, h, i, j e k estão armazenadas nos registradores $s0 .. $s5.

  1. Mostrar o código MIPS que seria gerado para
    do
      f = f+g;
      if (f > i) break;
      g = g-k;
    while (g > 0);
    
  2. Supondo que o endereço de a está armazenado em $s6, mostrar o código MIPS que seria gerado para
    while (i < j)
      a[i] = j;
    

referências: Patterson & Hennessy, 3.5.

10/09

Instruções MIPS e Representação de Mecanismos C (cont)

Chamadas de Funções

referências: Patterson & Hennessy, 3.6.

15/09

Instruções MIPS e Representação de Mecanismos C (cont)

Funções e Procedimentos

referências: Patterson & Hennessy, A.6 e A.10.

Last update: Tue Sep 15 15:43:48 EST 1998 by Noemi