Arquitetura e Organização de Computadores 2 Introdução High-level language program (in C) swap(int v[], int k) {int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; } Abstração C compiler • Descendo no nível de abstrações revelam-se outras informações Assembly language program (for MIPS) swap: muli $2, $5,4 add $2, $4,$2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31 Assembler Binary machine language program (for MIPS) 00000000101000010000000000011000 00000000100011100001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000 10101100011000100000000000000100 00000011111000000000000000001000 Objetivos • Os aluno devem adquirir conhecimentos para a programação em linguagem Assembly, através do estudo de um microprocessador típico, quanto às suas unidades internas, interface de sistema através dos barramentos de endereço, dados e controle. • Devem conhecer detalhes das instruções desse microprocessador típico, quanto ao: formato, endereçamento de memória e registradores, codificação, e operações realizadas; bem como do formato das instruções e pseudo-instruções em Assembly; e • o uso de programas de depuração (debug) e de montagem (assembler). Ementa • A disciplina deve proporcionar o conhecimento de técnicas de programação em linguagem Assembly, e para tanto é usado um microprocessador típico para o estudo do seu conjunto de instruções, como exemplo. • Devem ser apresentados os conceitos de programação em Assembly, quanto aos elementos que compõem um comando, símbolos, rótulos, representação numérica, pseudo-instruções; e ambientes de programação e depuração de linguagem Assembly. • A programação ao nível de linguagem Assembly deve ser exemplificada para os diversos aspectos de programação tais como, operações aritméticas e lógicas, controle, procedimentos e estruturas de dados, interrupções, exceções e hierarquia de memória, fazendo uma comparação com implementações em linguagem de alto nível. Tópicos Os tópicos a serem abordados são: 1. Introdução aos microprocessadores e sistemas computacionais; 2. Estudo da arquitetura de um microprocessador típico; 3. Representação de programas em linguagem de máquina e Assembly ; 4. Ambientes de programação e depuração em linguagem Assembly ; 5. Operações aritméticas e lógicas, controle, procedimentos e estruturas de dados, em Assembly; 6. Interrupções, exceções e hierarquia de memória. Avaliação • Nota 1: média de 2 provas (prova1 no meio do semestre e prova2 no final do semestre) (peso 70%) (podendo uma das notas, de prova substitutiva, a ser realizada no final do semestre). • Nota 2: exercícios ao longo do semestre (peso 30%) • Recuperação: 1 prova no início do semestre seguinte com peso 100% Bibliografia Principal: • Kip Irvine – Assembly Language for Intel-Based Computers, 5th edition. USA, Prentice-Hall, 2007. Complementares: • David A. Patterson & John L. Hennessy – Computer Organization & Design – The Hardware/Software Interface, 3rd Ed., Morgan Kaufmann Publishers, USA, 2005. • John L. Hennessy & David A. Patterson – Computer Architecture – A Quantitative Approach, 3rd Ed., Morgan Kaufmann Publishers, USA, 2003.