ic - uff parte 1: organização de computadores 7. compilando programas texto base: capítulo 3...
TRANSCRIPT
![Page 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](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/1.jpg)
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
![Page 2: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/2.jpg)
IC - UFF
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
![Page 3: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/3.jpg)
IC - UFF
Algumas instruções
Categoria Instrução Exemplo SignificadoAritmética add add $s1,$s2,$s3 $s1 = $s2 + $s3
subtract sub $s1,$s2,$s3 $s1 = $s2 - $s3Transf. de dados load word lw $s1,100($s2) $s1=memo[$s2+100]
store word sw $s1,100($s2) memo[$s2+100]=$s1
![Page 4: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/4.jpg)
IC - UFF
Formato das instruções
Formato tipo Rop rs rt rd shamt funct
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
Formato tipo Iop rs rt endereço
6 bits 5 bits 5 bits 16 bits
Campo Significadoop código da operaçãors registro fonte do primeiro operandort registro fonte do segundo operandord registro destino do operando
shamt número de bits deslocadosfunct função; indica a variante do código de operação
![Page 5: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/5.jpg)
IC - UFF
Um pequeno segmento em C
Variáveis a e colocadas nos registradores $s1 $s5 pelo compilador
Código C Código MIPS
a = b + c;d = a – e;
![Page 6: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/6.jpg)
IC - UFF
Um pequeno segmento em C
Variáveis a e colocadas nos registradores $s1 $s5 pelo compilador
Código C Código MIPS
a = b + c; add $s1,$s2,$s3d = a – e; sub $s4,$s1,$s5
![Page 7: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/7.jpg)
IC - UFF
Um pouco mais de complexidade
Variáveis f j em $s0 $s4
Código C Código MIPS
f = (g + h) – (i + j);
![Page 8: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/8.jpg)
IC - UFF
Um pouco mais de complexidade
Variáveis f j em $s0 $s4
Código C Código MIPS
f = (g + h) – (i + j); add $t0,$s1,$s2add $t1,$s3,$s4sub $s0,$t0,$t1
![Page 9: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/9.jpg)
IC - UFF
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
Código C Código MIPS
g = h + A[8];
![Page 10: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/10.jpg)
IC - UFF
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
Código C Código MIPS
g = h + A[8]; lw $t0,32($s3)add $s1,$s2,$t0
?
![Page 11: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/11.jpg)
IC - UFF
Ainda outro array
A é um array de 100 posições; h está em $s2; endereço de base de A está em $s3
Código C Código MIPS
A[12] = h + A[8];
![Page 12: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/12.jpg)
IC - UFF
Ainda outro array
A é um array de 100 posições; h está em $s2; endereço de base de A está em $s3
Código C Código MIPS
A[12] = h + A[8]; lw $t0,32($s3)add $t0,$s2,$t0sw $t0,48($s3)
![Page 13: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/13.jpg)
IC - UFF
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
Código C Código MIPS
g = h + A[i];
![Page 14: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/14.jpg)
IC - UFF
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
Código C Código MIPS
g = h + A[i]; add $t1,$s4,$s4add $t1,$t1,$t1add $t1,$t1,$s3lw $t0,0($t1)add $s1,$s2,$t0
![Page 15: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/15.jpg)
IC - UFF
Outras instruções
Categoria Instrução Exemplo SignificadoSalto condicional beq beq $s1,$s2,L if($s1== $s2) go to L
bne bne $s1,$s2,L if($s1!= $s2) go to LSalto incond. j j End go to End
![Page 16: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/16.jpg)
IC - UFF
Tomando decisões
i e j estão em $s3 e $s4; f, g e h estão em $s0, $s1 e $s2
Código C Código MIPS
if (i == j) f = g + h;else f = g - h;
![Page 17: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/17.jpg)
IC - UFF
Tomando decisões
i e j estão em $s3 e $s4; f, g e h estão em $s0, $s1 e $s2
Código C Código MIPS
if (i == j) bne $s3,$s4,Else f = g + h; add $s0,$s1,$s2else j Exit f = g - h; Else: sub $s0,$s1,$s2
Exit:
![Page 18: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/18.jpg)
IC - UFF
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:
Loop: g = g + A[i];i = i + j;if (i != h) go to Loop;
![Page 19: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/19.jpg)
IC - UFF
Código do exemplo do Loop
Loop: add $t1, $s3, $s3add $t1, $t1, $t1add $t1, $t1, $s5lw $t0, 0($t1)add $s1, $s1, $t0add $s3, $s3, $s4bne $s3, $s2, Loop
![Page 20: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/20.jpg)
IC - UFF
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:
while (save[i] == k) i = i + j;
![Page 21: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/21.jpg)
IC - UFF
Código do exemplo com while
Loop: add $t1, $s3, $s3add $t1, $t1, $t1add $t1, $t1, $s6lw $t0, 0($t1)bne $t0, $s5, Exitadd $s3, $s3, $s4j Loop
Exit:
![Page 22: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/22.jpg)
IC - UFF
Mais algumas instruções
Categoria Instrução Exemplo SignificadoSalto condicional slt slt $s1,$s2,$s3 if($s2<$s3) $s1=1;
else $s1=0Salto incond. j r j $t0 go to (Reg)
![Page 23: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/23.jpg)
IC - UFF
E o switch?
Variáveis f a k estão de $s0 a $s5; $t2 contém 4; $zero = 0
switch (k) {case 0: f = i + j; break;case 1: f = g + h; break;case 2: f = g - h; break;case 3: f = i - j; break;
}
![Page 24: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/24.jpg)
IC - UFF
Código para o switchslt $t3, $s5, $zerobne $t3, $zero, Exitslt $t3, $s5, $t2beq $t3, $zero, Exitadd $t1, $s5, $s5add $t1, $t1, $t1add $t1, $t1, $t4lw $t0, 0($t1) # ($t0)=JumpTable[k]jr $t0
L0: add $s0, $s3, $s4j Exit
L1: add $s0, $s1, $s2j Exit
L2: sub $s0, $s1, $s2j Exit
L3: sub $s0, $s3, $s4Exit:
obs.: os endereços dos rótulos L0 L3 encontram-se emquatro palavras seqüenciais começando no endereçoindicado em $t4
![Page 25: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/25.jpg)
IC - UFF
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
![Page 26: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/26.jpg)
IC - UFF
Procedures: um caso simples
int proc_simples (int g, int h, int i, int j){
int f;
f = (g + h) – (i + j);return f;
}
![Page 27: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/27.jpg)
IC - UFF
Código MIPS: proc_simplesproc_simples:
sub $sp, $sp, 12sw $t1, 8($sp)sw $t0, 4($sp)sw $s0, 0($sp)add $t0, $a0, $a1add $t1, $a2, $a3sub $s0, $t0, $t1add $v0, $s0, $zerolw $s0, 0($sp)lw $t0, 4($sp)lw $t1, 8($sp)add $sp, $sp, 12jr $ra
![Page 28: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/28.jpg)
IC - UFF
Recursividade
Cálculo de fatorialint fat (int n){
if (n < 1)return (1);
elsereturn (n * fat(n-1));
}
![Page 29: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/29.jpg)
IC - UFF
Código MIPS: fatorialfat:
sub $sp, $sp, 8sw $ra, 4($sp)sw $a0, 0($sp) # salva nslt $t0, $a0, 1beq $t0, $zero, L1 # se n>=1, vá p/ L1add $v0, $zero, 1add $sp, $sp, 8jr $ra
L1: sub $a0, $a0, 1 # n = n - 1jal fat # chama fat(n-1)lw $a0, 0($sp)lw $ra, 4($sp)addi $sp, $sp, 8mult $v0, $a0, $v0 # retorna n*fat(n-1)jr $ra
![Page 30: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/30.jpg)
IC - UFF
Arrays x ponteiros
clear1 (int array[], int size){
int i;for (i = 0; i < size; i++)
array[i] = 0;}
clear2 (int *array, int size){
int *p;for (p = &array[0]; p <&array[size]; p++)
*p = 0;}
![Page 31: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/31.jpg)
IC - UFF
Código clear1 e clear2
move $t0, $zero move $t0, $a0loop1: add $t1, $t0, $t0 loop2: sw $zero, 0($t0)
add $t1, $t1, $t1 addi $t0, $t0, 4add $t2, $a0, $t1 add $t1, $a1, $a1sw $zero, 0($t2) add $t1, $t1, $t1addi $t0, $t0, 1 add $t2, $a0, $t1slt $t3, $t0, $a1 slt $t3, $t0, $t2bne $t3, $zero, loop1 bne $t3, $zero, loop2
![Page 32: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/32.jpg)
IC - UFF
Um pouco mais rápido ...
move $t0, $zero move $t0, $a0loop1: add $t1, $t0, $t0 add $t1, $a1, $a1
add $t1, $t1, $t1 add $t1, $t1, $t1add $t2, $a0, $t1 add $t2, $a0, $t1sw $zero, 0($t2) loop2: sw $zero, 0($t0)addi $t0, $t0, 1 addi $t0, $t0, 4slt $t3, $t0, $a1 slt $t3, $t0, $t2bne $t3, $zero, loop1 bne $t3, $zero, loop2
![Page 33: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/33.jpg)
IC - UFF
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
![Page 34: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/34.jpg)
IC - UFF
Transformando *.c em *.exeprograma C
programafonte
![Page 35: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/35.jpg)
IC - UFF
Transformando *.c em *.exeprograma C
compilador
programa assembly
![Page 36: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/36.jpg)
IC - UFF
Transformando *.c em *.exeprograma C
compilador
programa assembly
montador
módulo objeto
linguagem demáquina!
![Page 37: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/37.jpg)
IC - UFF
Transformando *.c em *.exeprograma C
compilador
programa assembly
montador
módulo objeto routina de biblioteca
linguagem demáquina!
![Page 38: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/38.jpg)
IC - UFF
Transformando *.c em *.exeprograma C
compilador
programa assembly
montador
módulo objeto routina de biblioteca
podemos ter váriosmódulos objeto evárias rotinas de
biblioteca
![Page 39: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/39.jpg)
IC - UFF
Transformando *.c em *.exeprograma C
compilador
programa assembly
montador
módulo objeto
ligador
routina de biblioteca
módulo executável
linguagem demáquina!
![Page 40: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/40.jpg)
IC - UFF
Transformando *.c em *.exeprograma C
compilador
programa assembly
montador
módulo objeto
ligador
routina de biblioteca
módulo executável
carregador
memória
![Page 41: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/41.jpg)
IC - UFF
Olhando cada fase . . .
Identificação dos arquivos: 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
![Page 42: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/42.jpg)
IC - UFF
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
![Page 43: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/43.jpg)
IC - UFF
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
![Page 44: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/44.jpg)
IC - UFF
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
![Page 45: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/45.jpg)
IC - UFF
Um arquivo objeto
CabeçalhoNome Procedure A
Tamanho do texto 10016
Tamanho dos dados 2016
Segmento de texto Endereço Instrução0 lw $a0, 0($gp)4 jal 0... ...0 (X)Segmento de dados... ...
Inf. de relocação Endereço Tipo de instrução Dependência0 lw X4 jal B
Tabela de símbolos Rótulo EndereçoX -B -
![Page 46: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/46.jpg)
IC - UFF
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
![Page 47: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/47.jpg)
IC - UFF
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
![Page 48: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/48.jpg)
IC - UFF
Um programa na memória
$sp Pilha
Dados dinâmicos
Dados estáticos
Texto$pc
PCB
![Page 49: IC - UFF Parte 1: Organização de Computadores 7. Compilando programas Texto base: capítulo 3 Computer Organization and Design: The Hardware/Software Interface](https://reader036.vdocuments.mx/reader036/viewer/2022062623/552fc0f9497959413d8b697e/html5/thumbnails/49.jpg)
IC - UFF
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