Organização Básica de computadores e linguagem de montagem

Documentos relacionados
Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

Introdução à Computação: Máquinas Multiníveis

Introdução (Aula 2) Introdução Arquitetura de Hardware. Organização Estruturada de Computadores. Introdução Conceitos (2) Introdução Conceitos (1)

Getting Started. Pedro Garcia de Janeiro de Assembly Working Party

PROGRAMAÇÃO I. Introdução

Nível do Conjunto de Instruções Prof. Edson Pedro Ferlin

Introdução. (Aula 2) Organização Estruturada de Computadores

Prof. Eliezer Soares Flores 1 / 22

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

Organização de Computadores

Linguagens de Programação Classificação

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 06

AJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:

ARQUITECTURA DE COMPUTADORES 2013/2014 2º SEMESTRE

Arquitetura e Organização de computadores

Programação Estruturada

Infraestrutura de Hardware. Funcionamento de um Computador

PONTIFÍCIA UNIVERSIDADE CATÓLICA DO RIO GRANDE DO SUL FACULDADE DE INFORMÁTICA

Aula Introdutória. Arquitetura e Organização de Computadores

Aula 2 - Programação de Computadores - CI208 1/21

Arquitectura e Organização de Computadores

Aula Fev-07 Arquitectura de Computadores 2006/07

Linguagens de Programação

Arquitetura de Computadores

SEL-614 MICROPROCESSADORES E APLICAÇÕES. Adilson Gonzaga

MICROPROCESSADORES II (EMA911915) SUB-ROTINAS E PILHA 2 O SEMESTRE / 2018

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Arquitectura e Organização de Computadores

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Organização de Sistemas de Computadores

Gerência de Memória Memória Virtual e Paginação

Existem três categorias principais de linguagem de programação: linguagem de máquina, linguagens assembly e linguagens de alto nível.

Fundamentos de Programação 1

Ordem de Bytes: Big Endian e Little Endian

Microprocessadores CPU. Unidade de Controle. Prof. Henrique

Infra- Estrutura de Hardware

Introdução à Computação

Algoritmos Computacionais

Arquitetura e Organização de Computadores

SSC304 Introdução à Programação Para Engenharias

AJProença, Sistemas de Computação, UMinho, 2017/18 1

ARQUITETURA DE COMPUTADORES

GFM015 Introdução à Computação

Algoritmos. Prof. Jonatas Bastos Site:

Infra-Estrutura de Software. Introdução

Sâmia Rodrigues Gorayeb. Arquitetura de Computadores Linguagem de Máquina

EA876 - Introdução a Software de Sistema

Lic. Engenharia de Sistemas e Informática

Arquitetura do SET de instruções Instruction SET. CISC vs RISC. What s assembly as to do with it?

Computadores de Programação (DCC/UFRJ)

Programação de Computadores IV. Introdução a Linguagens de Programação Simone Martins SLIDES CEDIDOS POR BRUNO MARQUES 1

UMA HIERARQUIA DE MEMÓRIA PARA UM MODELO RTL DO PROCESSADOR RISC-V SINTETISÁVEL EM FPGA

EL68E Sistemas Embarcados Programação Assembly Prof. Douglas Renaux (Out/2014)

Introdução à Computação para Engenharia MAC2166 Prof. Dr. Paulo Miranda IME-USP. Aula 1 Introdução à Computação

III.2 - Princípios de Arquitetura

Gerenciamento de memória

Informática I. Aula 14. Aula 14-10/10/2007 1

Aula 06 - Máquina Multinível e Von Neumann

Arquiteturas RISC e CISC. Adão de Melo Neto

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

Programação de Microprocessadores. Programação de Microprocessadores SEL-433 APLICAÇÕES DE MICROPROCESSADORES I

Organização e Arquitetura de Computadores I

Linguagem de Montagem e Assembly. André Luiz da Costa Carvalho

PLANEJAMENTO DAS DISCIPLINAS DE SISTEMAS DIGITAIS NA EC3. Workshop de Graduação do PCS Prof. Edson S. Gomi 31 de julho de 2018

Linguagem de Montagem Assembly

Sistemas Operacionais João Bosco T. Junior. Sistemas Operacionais João Bosco Junior - V1.3

Apresentação. Informação geral + Conceitos iniciais

MC-102 Aula 01. Instituto de Computação Unicamp

Introdução a Programação de Jogos

SSC0112 Organização de Computadores Digitais I - Turma 2

Infraestrutura de Hardware. Desempenho

As 5 partes fundamentais. Linguagem de Programação Pinagem Características Elétricas Ambiente de Desenvolvimento Integrado - IDE

Programação ao nível da máquina

Intel x AT&T - recapitulação

Projeto de ensino MONITORIA NÃO-SUBSIDIADA Fundamentos de Organização de Computadores

ORGANIZAÇÃO DE COMPUTADORES

Introdução à Computação MAC0110

Pilha de execução Volnys Borges Bernal Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP

Computadores e Programação (DCC/UFRJ)

Programação de Computadores:

CI212 Organização e Arquitetura de Computadores

INF A: Introdução à programação

Introdução à Programação Aula 02. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Programação de Computadores I

Organização e Arquitetura de Computadores I

Montador (assembler)

Introdução a Computação

Ferramentas Programação. UDESC - Prof. Juliano Maia 1

Conjunto de Instruções. Alisson Brito

CPU. Funções: Componentes: Processamento; Controle. UC (Unidade de Controle); Registradores; ALU s, FPU s etc. Arquitetura de Computadores 3

Sistemas Operacionais

Bruno Ribeiro da Silva. A adaptação de um sistema operacional para a execução em uma diferente arquitetura

Introdução à Programação de Computadores Fabricação Mecânica

SSC0112 Organização de Computadores Digitais I

Aula de hoje. Programação. Comunicação com computadores. Comunicação com computadores. Comunicação com computadores. Comunicação com computadores

Representação de Dados (inteiros não negativos)

Nível da Arquitetura do Conjunto das Instruções

Transcrição:

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

Regras do Curso http://www.ic.unicamp.br/~edson/disciplinas/mc404/2012-1s/

Porque Aprender Linguagem de Montagem Permite compreender o funcionamento de uma CPU Utilizado na: Programação de máquinas baseadas em microcontroladores. 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)

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.

Conceitos Básicos

Resolução de problemas com Computadores Problemas Algoritmos Linguagem de alto nível Instruction Set Architecture (ISA) Microarchitecture Circuitos Níveis de Abstração Dispositivos * Cortesia do Prof. Mário Cortes

Resolução de problemas com Computadores Problema Algoritmo Programa Instr Set Architecture MC102 e MC202 Projeto de Software: escolher algoritmos and estrutura de dados Programação: implementar o projeto com uma linguagem Compilação/Interpretação: converter linguagem para instruções de máquina MC404 e MC910 * Cortesia do Prof. Mário Cortes

Resolução de problemas com Computadores Instr Set Architecture Microarch Circuitos Dispositivos MC722 Projeto de Processadores: escolher estruturas para implementar ISA MC602 Projeto de Circuitos Lógicos: projeto a nível de gates e componentes Projeto VLSI: desenvolver e fabricar dispositivos e circuitos integrados MC922 * Cortesia do Prof. Mário Cortes

Conceitos Básicos: Computadores Máquinas para manipular informações (ou dados) Dados de Entrada Processador Saída, ou dados processados

Conceitos Básicos: Computadores Máquinas para manipular informações (ou dados) Programa Dados de Entrada Processador Saída, ou dados processados

Conceitos Básicos: Computadores Linguagem de Máquina 01010101! 10001001! 11100101! 01101011! 01000101! 00001100! 01110001! Dados de Entrada Processador Saída, ou dados processados

Conceitos Básicos: Linguagens de Programação Programa fonte Linguagem de Máquina int func(int a)! {! return a*113;! }!? 01010101! 10001001! 11100101! 01101011! 01000101! 00001100! 01110001! Dados de Entrada Processador Saída, ou dados processados

Conceitos Básicos: Linguagens de Programação Máquinas para manipular informações (ou dados) Programa fonte C/C++/Java Pascal/etc... Compilador (gcc,...) Linguagem de Montagem Montador (as,...) Linguagem de Máquina Dados de Entrada Processador Saída, ou dados processados

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 Ling. de baixo nível Sequência de instruções, registradores, posições de memória,... Dependente de máquina Linguagem de Máquina Código binário (0s e 1s)

Conceitos Básicos: Linguagens de Programação Programa fonte na linguagem C Programa fonte int func_1(int a, int b, int c)! {! return (a + (113 * b)) * c;! }! Linguagem de Montagem Linguagem de Montagem do x86 _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 Linguagem de Montagem Montador 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!! 01010101! 10001001! 11100101! 01101011! 01000101! 00001100! 01110001! 00000011! 01000101! 00001000! 00001111! 10101111! 01000101! 00010000! 01011101! 11000011!

Conceitos Básicos: Linguagens de Programação Linguagem de Montagem Montador 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!! 01010101! 10001001! 11100101! 01101011! 01000101! 00001100! 01110001! 00000011! 01000101! 00001000! 00001111! 10101111! 01000101! 00010000! 01011101! 11000011!

Conceitos Básicos: Linguagens de Programação Linguagem de Máquina Desmontador Linguagem de 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;! }! Linguagem de Montagem do ARM _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 x86 _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 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