organização básica de computadores e linguagem de...
TRANSCRIPT
![Page 1: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/1.jpg)
Organização Básica de computadores e linguagem de
montagem
1o Semestre de 2012
Prof. Edson Borin
![Page 2: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/2.jpg)
Regras do Curso
http://www.ic.unicamp.br/~edson/disciplinas/mc404/2012-1s/
![Page 3: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/3.jpg)
Porque Aprender Linguagem de Montagem
• Permite compreender o funcionamento de uma CPU
• Utilizado na: • Programação de máquinas baseadas em micro-
controladores. • Programação de sistemas embarcados (embedded systems) • Programaçao de trechos críticos (tempo e/ou memória) • Acesso a recursos não disponíveis em alto nível
• OBS.: A linguagem de montagem é absolutamente ligada ao hardware, depende de cada máquina específica (diferentemente das linguagens de alto nível)
![Page 4: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/4.jpg)
Porque Aprender Linguagem de Montagem
• Permite entender como programas escritos em linguagens de alto nível, como C ou Java, são traduzidos para a linguagem de máquina.
![Page 5: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/5.jpg)
Conceitos Básicos
![Page 6: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/6.jpg)
Resolução de problemas com Computadores
Problemas
Linguagem de alto nível
Instruction Set Architecture (ISA)
Microarchitecture
Circuitos
Dispositivos
Algoritmos
* Cortesia do Prof. Mário Cortes
Níveis de Abstração
![Page 7: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/7.jpg)
MC404 e MC910
MC102 e MC202
Compilação/Interpretação: converter linguagem para instruções de
máquina
Problema
Algoritmo
Programa
Projeto de Software: escolher algoritmos and estrutura de dados
Programação: implementar o projeto com uma linguagem
Instr Set Architecture
Resolução de problemas com Computadores
* Cortesia do Prof. Mário Cortes
![Page 8: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/8.jpg)
MC722
MC602
MC922
Microarch
Circuitos
Instr Set Architecture
Projeto de Processadores: escolher estruturas para implementar ISA
Projeto de Circuitos Lógicos: projeto a nível de gates e componentes
Dispositivos
Projeto VLSI: desenvolver e fabricar dispositivos e
circuitos integrados
Resolução de problemas com Computadores
* Cortesia do Prof. Mário Cortes
![Page 9: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/9.jpg)
Conceitos Básicos: Computadores
Máquinas para manipular informações (ou dados)
Processador Dados de Entrada
Saída, ou dados processados
![Page 10: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/10.jpg)
Conceitos Básicos: Computadores
Processador Dados de Entrada
Saída, ou dados processados
Programa
Máquinas para manipular informações (ou dados)
![Page 11: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/11.jpg)
Conceitos Básicos: Computadores
Processador Dados de Entrada
Saída, ou dados processados
Linguagem de Máquina
01010101!10001001!11100101!01101011!01000101!00001100!01110001!
![Page 12: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/12.jpg)
Conceitos Básicos: Linguagens de Programação
Linguagem de Máquina
01010101!10001001!11100101!01101011!01000101!00001100!01110001!
int func(int a)!{! return a*113;!}!
Processador Dados de Entrada
Saída, ou dados processados
Programa fonte
?
![Page 13: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/13.jpg)
Conceitos Básicos: Linguagens de Programação
Máquinas para manipular informações (ou dados)
Processador Dados de Entrada
Saída, ou dados processados
Programa fonte C/C++/Java Pascal/etc...
Linguagem de Montagem
Compilador (gcc, ...)
Montador (as, ...)
Linguagem de Máquina
![Page 14: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/14.jpg)
Conceitos Básicos: Linguagens de Programação
Programa fonte Ling. de alto nível (Java, ...) Laços, variáveis, objetos, ... Independente de máquina
Linguagem de Montagem
Linguagem de Máquina
Ling. de baixo nível Sequência de instruções, registradores, posições de memória, ... Dependente de máquina
Código binário (0s e 1s)
![Page 15: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/15.jpg)
_func_1:! push %ebp! mov %esp, %ebp! imul $113, 12(%ebp), %eax! add 8(%ebp), %eax! imul 16(%ebp), %eax! pop %ebp! ret!!
int func_1(int a, int b, int c) !{! return (a + (113 * b)) * c;!}!
Linguagem de Montagem do x86
Programa fonte
Linguagem de Montagem
Programa fonte na linguagem C
Conceitos Básicos: Linguagens de Programação
![Page 16: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/16.jpg)
01010101!10001001!11100101!01101011!01000101!00001100!01110001!00000011!01000101!00001000!00001111!10101111!01000101!00010000!01011101!11000011!
Montador Linguagem de Montagem
Linguagem de Máquina
_func_1:! push %ebp! mov %esp, %ebp! imul $113, 12(%ebp), %eax! add 8(%ebp), %eax! imul 16(%ebp), %eax! pop %ebp! ret!!
Conceitos Básicos: Linguagens de Programação
![Page 17: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/17.jpg)
01010101!10001001!11100101!01101011!01000101!00001100!01110001!00000011!01000101!00001000!00001111!10101111!01000101!00010000!01011101!11000011!
_func_1:! push %ebp! mov %esp, %ebp! imul $113, 12(%ebp), %eax! add 8(%ebp), %eax! imul 16(%ebp), %eax! pop %ebp! ret!!
Montador Linguagem de Montagem
Linguagem de Máquina
Conceitos Básicos: Linguagens de Programação
![Page 18: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/18.jpg)
00000000 <_func_1>:! 0: 55 push %ebp! 1: 89 e5 mov %esp,%ebp! 3: 6b 45 0c 71 imul $0x71,0xc(%ebp),%eax! 7: 03 45 08 add 0x8(%ebp),%eax! a: 0f af 45 10 imul 0x10(%ebp),%eax! e: 5d pop %ebp! f: c3 ret !
Desmontador Linguagem de Montagem anotada
Linguagem de Máquina
Conceitos Básicos: Linguagens de Programação
objdump –D arquivo.o
![Page 19: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/19.jpg)
int func_1(int a, int b, int c) !{! return (a + (113 * b)) * c;!}!
Linguagem de Montagem do x86
Programa fonte na linguagem C
_func_1:! rsb r3, r1, r1, asl #3! add r1, r1, r3, asl #4! add r1, r1, r0! mul r0, r2, r1! bx lr!!
Linguagem de Montagem do ARM
_func_1:! push %ebp! mov %esp, %ebp! imul $113, 12(%ebp), %eax! add 8(%ebp), %eax! imul 16(%ebp), %eax! pop %ebp! ret!!
Conceitos Básicos: Linguagens de Programação
![Page 20: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/20.jpg)
Conceitos Básicos: Linguagens de Programação
Leitura - Capítulo 1.2 do livro do Patterson e
Hennessy (Computer Organization and Design)
![Page 21: Organização Básica de computadores e linguagem de montagemedson/disciplinas/mc404/2012-1s/slides/mc404_1... · • Programaçao de trechos críticos (tempo e/ou memória) !](https://reader030.vdocuments.com.br/reader030/viewer/2022021621/5c04591909d3f2093a8b9011/html5/thumbnails/21.jpg)
Atividade de Laboratório • Objetivos:
• Familiarização com as ferramentas e o ambiente de trabalho GNU/Linux.
• Ferramentas
• Compilador: gcc
• Montador: as
• Ligador: ld
• Make