Escolar Documentos
Profissional Documentos
Cultura Documentos
computadores e linguagem de
montagem
1o Semestre de 2012
Regras do Curso
http://www.ic.unicamp.br/~edson/disciplinas/mc404/2012-1s/
Porque Aprender Linguagem de Montagem
• 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
Problemas
Algoritmos
Linguagem de alto nível
Instruction Set Architecture (ISA)
Microarchitecture
Circuitos
Níveis de
Dispositivos
Abstração
* Cortesia do Prof. Mário Cortes
Resolução de problemas com Computadores
Problema
MC102 e MC202
Projeto de Software:
escolher algoritmos and estrutura de dados
Algoritmo
Programação:
implementar o projeto com uma linguagem
Programa
Compilação/Interpretação:
converter linguagem para instruções de
Instr Set
máquina
Architecture
MC404 e MC910
* Cortesia do Prof. Mário Cortes
Resolução de problemas com Computadores
Instr Set
Architecture
MC722
Projeto de Processadores:
escolher estruturas para implementar ISA
Microarch
MC602
Projeto de Circuitos Lógicos:
projeto a nível de gates e componentes
Circuitos
Projeto VLSI:
desenvolver e fabricar dispositivos e
circuitos integrados
Dispositivos
MC922
* Cortesia do Prof. Mário Cortes
Conceitos Básicos: Computadores
Dados de
Saída, ou dados
Processador
Entrada
processados
Conceitos Básicos: Computadores
Programa
Dados de
Saída, ou dados
Processador
Entrada
processados
Conceitos Básicos: Computadores
Linguagem de Máquina
01010101!
10001001!
11100101!
01101011!
01000101!
00001100!
01110001!
Dados de
Saída, ou dados
Processador
Entrada
processados
Conceitos Básicos: Linguagens de Programação
Programa fonte
Linguagem de Máquina
?
01010101!
int func(int a)! 10001001!
{! 11100101!
return a*113;! 01101011!
01000101!
}! 00001100!
01110001!
Dados de
Processador
Saída, ou dados
Entrada
processados
Conceitos Básicos: Linguagens de Programação
Programa fonte
C/C++/Java
Pascal/etc...
Compilador (gcc, ...)
Linguagem de Montagem
Linguagem de Máquina
Dados de
Processador
Saída, ou dados
Entrada
processados
Conceitos Básicos: Linguagens de Programação
Linguagem de
Código binário (0s e 1s)
Máquina
Conceitos Básicos: Linguagens de Programação
Programa fonte na linguagem C
int func_1(int a, int b, int c) !
{!
Programa fonte
return (a + (113 * b)) * c;!
}!
Linguagem de
Desmontador
Linguagem de
Máquina
Montagem anotada
objdump –D arquivo.o
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 !
Conceitos Básicos: Linguagens de Programação
Programa fonte na linguagem C
int func_1(int a, int b, int c) !
{!
return (a + (113 * b)) * c;!
}!
Leitura
- Capítulo 1.2 do livro do Patterson e
Hennessy (Computer Organization and
Design)
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