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

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

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

Apresentações semelhantes


Apresentação em tema: "IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface."— Transcrição da apresentação:

1 IC - UFF 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

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

3 IC - UFF Algumas instruções

4 IC - UFF Formato das instruções

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

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

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

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

9 IC - UFF Um operando em memória l 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

10 IC - UFF Um operando em memória l 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 ?

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

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

13 IC - UFF Array com índice variável l 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

14 IC - UFF Array com índice variável l 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

15 IC - UFF Outras instruções

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

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

18 IC - UFF Loop e índice variável l 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:

19 IC - UFF Código do exemplo do Loop

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

21 IC - UFF Código do exemplo com while

22 IC - UFF Mais algumas instruções

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

24 IC - UFF Código para o switch

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

26 IC - UFF Procedures: um caso simples

27 IC - UFF Código MIPS: proc_simples

28 IC - UFF Recursividade l Cálculo de fatorial

29 IC - UFF Código MIPS: fatorial

30 IC - UFF Arrays x ponteiros

31 IC - UFF Código clear1 e clear2

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

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

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

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

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

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

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

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

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

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

42 IC - UFF Montagem l 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 l Tabela de símbolos: associação entre rótulos e seus endereços

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

44 IC - UFF Arquivo objeto (cont.) l Tabela de símbolos: símbolos que não foram resolvidos (referências externas) l 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

45 IC - UFF Um arquivo objeto

46 IC - UFF Ligação l Compilação separada: necessidade do ligador l Ligador pega um programa objeto e produz um módulo carregável l Ligação dinâmica em tempo de carregamento: incorporação de novas versões; compartilhamento de código l 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

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

48 IC - UFF Um programa na memória

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


Carregar ppt "IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface."

Apresentações semelhantes


Anúncios Google