21
Organização Básica de computadores e linguagem de montagem 1 o Semestre de 2012 Prof. Edson Borin

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) !

Embed Size (px)

Citation preview

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) !

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) !

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) !

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) !

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) !

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) !

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) !

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) !

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) !

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) !

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) !

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) !

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) !

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) !

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) !

_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) !

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) !

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) !

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) !

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) !

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) !

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