Uma abordagem para o ensino de linguagem de montagem, arquitetura e organização de computadores Edson Borin e Rafael Auler Instituto de Computação Universidade Estadual de Campinas {edson,auler}@ic.unicamp.br Agenda • Motivação e conteúdo da disciplina • Abordagem desenvolvida Uma abordagem para o ensino de linguagem de montagem, arquitetura e organização de computadores Edson Borin Unicamp 2 Resolução de Problemas com Computadores Problema/Solução Algoritmos Programa em Ling. de alto nível Programa em Ling. de Montagem Micro-operações, sinais de controle Circuitos Dispositivos Uma abordagem para o ensino de linguagem de montagem, arquitetura e organização de computadores Edson Borin Unicamp 3 Resolução de Problemas com Computadores Problema/Solução Algoritmos Programa em Ling. de alto nível Programa em Ling. de Montagem Arquitetura Micro-operações, sinais de controle Circuitos Dispositivos Uma abordagem para o ensino de linguagem de montagem, arquitetura e organização de computadores Edson Borin Unicamp 4 Resolução de Problemas com Computadores Problema/Solução Algoritmos Ling. de Montagem e Org. Básica de Computadores Programa em Ling. de alto nível Arquitetura Micro-operações, sinais de controle Programa em Ling. de Montagem Circuitos Dispositivos Uma abordagem para o ensino de linguagem de montagem, arquitetura e organização de computadores Edson Borin Unicamp 5 Linguagem de Montagem e Organização de Computadores • Visão geral sobre organização de computadores • Programação em Linguagem de Montagem • Conceitos de arquitetura de computadores Uma abordagem para o ensino de linguagem de montagem, arquitetura e organização de computadores Edson Borin Unicamp 6 Linguagem de Montagem e Organização de Computadores • Curso com 60h: 30h teoria + 30h prática • Ementa – Introdução à organização de computadores – Representação de informações na memória – Estudo do conjunto de instruções de processadores – Desenvolvimento, implementação e testes de programas usando linguagem de montagem. Uma abordagem para o ensino de linguagem de montagem, arquitetura e organização de computadores Edson Borin Unicamp 7 Abordagem desenvolvida 3 partes: 1) O computador IAS 2) Linguagem de montagem do ARM 3) Código de Sistema e Programação de Periféricos Uma abordagem para o ensino de linguagem de montagem, arquitetura e organização de computadores Edson Borin Unicamp 8 Parte I: O Computador IAS Organização muito simples • Permite programação em linguagem de máquina (binário e hexadecimal) • Permite entender como a unidade de controle coordena os componentes da máquina para executar as instruções • Modelo de execução parecida com a dos computadores modernos: arquitetura von Neumann. Uma abordagem para o ensino de linguagem de montagem, arquitetura e organização de computadores Edson Borin Unicamp 9 Parte I: O Computador IAS Uma abordagem para o ensino de linguagem de montagem, arquitetura e organização de computadores Edson Borin Unicamp 10 Parte I: O Computador IAS Ao final da parte I: • Visão geral da organização de computadores • Representação e armazenamento de instruções e dados durante a execução de programas • Processo de execução de instruções • Controle de fluxo de execução • Conceitos básicos de linguagem de máquina e de montagem • Processo de montagem em dois passos Uma abordagem para o ensino de linguagem de montagem, arquitetura e organização de computadores Edson Borin Unicamp 11 Parte II: Ling. de Montagem do ARM • Aprofundar o conhecimento de linguagem de montagem usando o ISA de uma arquitetura mais sofisticada • Conversão de programas em ling. de alto nível para linguagem de baixo nível • Memórias modernas (endereçadas a byte) e representação de dados na memória – little-endian vs big-endian Uma abordagem para o ensino de linguagem de montagem, arquitetura e organização de computadores Edson Borin Unicamp 12 Parte II: Ling. de Montagem do ARM • flags, transbordamento, execução condicional, • sub-rotinas e pilha do programa • Política de uso de registradores – ABI: registradores callee-save, caller-save – Ligar programas com código gerado pelo compilador • Passagem de parâmetros por valor e referência • Alocação de dados na pilha • Placa com processadores ARM! Uma abordagem para o ensino de linguagem de montagem, arquitetura e organização de computadores Edson Borin Unicamp 13 Parte III: Código de Sistema e Programação de Periféricos • Chamadas de Sistema • Código de Sistema • Programação de periféricos: UART, GPT, controlador de interrupções • Interrupções, exceções • Trabalho: Escalonador de tarefas preemptivo Uma abordagem para o ensino de linguagem de montagem, arquitetura e organização de computadores Edson Borin Unicamp 14 Materiais • Simulador IAS – Apostila do IAS • Placa i.MX53 (ARM) – 3 placas rodando Linux conectadas na rede – Acesso remoto • Simulador ARM – Programação de sistemas Uma abordagem para o ensino de linguagem de montagem, arquitetura e organização de computadores Edson Borin Unicamp 15 Uma abordagem para o ensino de linguagem de montagem, arquitetura e organização de computadores Edson Borin e Rafael Auler Instituto de Computação Universidade Estadual de Campinas {edson,auler}@ic.unicamp.br