A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Parte 1: Organização de Computadores

Apresentações semelhantes


Apresentação em tema: "Parte 1: Organização de Computadores"— Transcrição da apresentação:

1 Parte 1: Organização de Computadores
7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface J.L. Hennessy e D.A. Patterson IC - UFF

2 MIPS: Visão do programador
Alguns registradores (32 bits) $s0 - $s7: uso geral, preservados $t0 - $t9: temporários, não preservados $sp: apontador de pilha, preservado $ra: endereço de retorno, preservado $a0 - $a3: argumentos, não preservados $v0 - $v1: valores de retorno, não preservados IC - UFF

3 Algumas instruções IC - UFF

4 Formato das instruções
IC - UFF

5 Um pequeno segmento em C
Variáveis a  e colocadas nos registradores $s1  $s5 pelo compilador IC - UFF

6 Um pequeno segmento em C
Variáveis a  e colocadas nos registradores $s1  $s5 pelo compilador IC - UFF

7 Um pouco mais de complexidade
Variáveis f  j em $s0  $s4 IC - UFF

8 Um pouco mais de complexidade
Variáveis f  j em $s0  $s4 IC - UFF

9 Um operando em memória A é um array de 100 posições; g e h estão em $s1 e $s2; endereço de base de A está em $s3 IC - UFF

10 Um operando em memória A é um array de 100 posições; g e h estão em $s1 e $s2; endereço de base de A está em $s3 ? IC - UFF

11 Ainda outro array A é um array de 100 posições; h está em $s2; endereço de base de A está em $s3 IC - UFF

12 Ainda outro array A é um array de 100 posições; h está em $s2; endereço de base de A está em $s3 IC - UFF

13 Array com índice variável
A é um array de 100 posições; g, h e i estão em $s1, $s2 e $s4; endereço de base de A está em $s3 IC - UFF

14 Array com índice variável
A é um array de 100 posições; g, h e i estão em $s1, $s2 e $s4; endereço de base de A está em $s3 IC - UFF

15 Outras instruções IC - UFF

16 Tomando decisões i e j estão em $s3 e $s4; f, g e h estão em $s0, $s1 e $s2 IC - UFF

17 Tomando decisões i e j estão em $s3 e $s4; f, g e h estão em $s0, $s1 e $s2 IC - UFF

18 Loop e índice variável A é um array de 100 posições; g, h, i e j estão em $s1, $s2, $s3 e $s4; endereço de base de A está em $s5. Ex: IC - UFF

19 Código do exemplo do Loop
IC - UFF

20 Evitando o go to: while save é um array; i, j e k estão em $s3, $s4 e $s5; base de save está em $s6. Ex: IC - UFF

21 Código do exemplo com while
IC - UFF

22 Mais algumas instruções
IC - UFF

23 E o switch? Variáveis f a k estão de $s0 a $s5; $t2 contém 4; $zero = 0 IC - UFF

24 Código para o switch IC - UFF

25 Utilizando procedures
Alocação de registros para passagem de parametros e valores $a0 - $a3: passagem de argumentos $v0 - $v1: retorno de valores $ra: endereço de retorno nova instrução: jal ProcedureAddress (salva endereço da próxima instrução em $ra) mais parametros/valores: uso da pilha IC - UFF

26 Procedures: um caso simples
IC - UFF

27 Código MIPS: proc_simples
IC - UFF

28 Recursividade Cálculo de fatorial IC - UFF

29 Código MIPS: fatorial IC - UFF

30 Arrays x ponteiros IC - UFF

31 Código clear1 e clear2 IC - UFF

32 Um pouco mais rápido ... IC - UFF

33 Pseudo-instruções A linguagem de montagem pode ter instruções que não sejam implementadas em hardware: pseudo-instruções Exemplo: move $t0, $t1 # $t0  $t1 ( a MIPS!) add $t0, $zero, $t1 # equivalente ao move IC - UFF

34 Transformando *.c em *.exe
programa C programa fonte IC - UFF

35 Transformando *.c em *.exe
programa C compilador programa assembly IC - UFF

36 Transformando *.c em *.exe
programa C compilador programa assembly linguagem de máquina! montador módulo objeto IC - UFF

37 Transformando *.c em *.exe
programa C compilador programa assembly linguagem de máquina! montador módulo objeto routina de biblioteca IC - UFF

38 Transformando *.c em *.exe
programa C compilador podemos ter vários módulos objeto e várias rotinas de biblioteca programa assembly montador módulo objeto routina de biblioteca IC - UFF

39 Transformando *.c em *.exe
programa C linguagem de máquina! compilador programa assembly módulo executável montador ligador módulo objeto routina de biblioteca IC - UFF

40 Transformando *.c em *.exe
programa C compilador programa assembly montador módulo objeto ligador routina de biblioteca módulo executável carregador memória IC - UFF

41 Olhando cada fase . . . Identificação dos arquivos: Compilação
Unix: arq.c, arq.s, arq.o, a.out MS-DOS: arq.c, arq.asm, arq.obj, arq.exe Compilação código objeto pode ser produzido diretamente fases IC - UFF

42 Montagem Transforma um programa em linguagem de montagem em um programa objeto: instruções de máquina, dados e informações para colocação das instruções em memória Tabela de símbolos: associação entre rótulos e seus endereços IC - UFF

43 Arquivo objeto (e.g., Unix)
Cabeçalho: tamanho e posição dos componentes do arquivo objeto Segmento de texto: código de máquina Segmento de dados: dados estáticos e dinâmicos Inf. de relocação: identifica instruções e palavras de dados que dependem de endereços absolutos quando programa é carregado IC - UFF

44 Arquivo objeto (cont.) Tabela de símbolos: símbolos que não foram resolvidos (referências externas) Informação para depuração: possibilita associação entre instruções em C e instruções de máquina; facilita a leitura de estruturas de dados IC - UFF

45 Um arquivo objeto IC - UFF

46 Ligação Compilação separada: necessidade do ligador
Ligador pega um programa objeto e produz um módulo carregável Ligação dinâmica em tempo de carregamento: incorporação de novas versões; compartilhamento de código Ligação dinâmica em tempo de execução: só aloca memória p/ o que for usado; instalação de módulos não existentes quando da programação da aplicação IC - UFF

47 Carregamento Definição de endereçamento: carregamento absoluto
limitado: problema com modificações carregamento relocável problema: memória virtual (swapping) carregamento dinâmico em tempo de execução IC - UFF

48 Um programa na memória IC - UFF

49 Leitura suplementar Apêndice A, itens A1 até A6, Computer Organization and Design: The Hardware/Software Interface, J.L. Hennessy e D.A. Patterson Apêndice 7A, Operating Systems: Internals and Design Principles, W. Stallings IC - UFF


Carregar ppt "Parte 1: Organização de Computadores"

Apresentações semelhantes


Anúncios Google