MAC 211 - Laborat�rio de Programa��o

Primeiro Semestre de 2003

Prof. Francisco Reverbel

. Informa��es gerais
. Ementa da disciplina
. Assuntos tratados em aula
. Trabalhos propostos
        
. Bibliografia
. Lista de discuss�o da disciplina
. Recursos adicionais na Internet

At work icon Esta p�gina estar� em permanente constru��o at� o final do semestre...

Informa��es Gerais

. Local: IME-USP, bloco B, sala 3
. Hor�rio: ter�as das 10:00 �s 11:40, quintas das 8:00 �s 9:40
. Monitor: Alfredo Roberto Junior
. Pasta xerox CAMAT: n�mero 71
. Avalia��o: duas provas, trabalhos pr�ticos, projeto final
. Primeira prova: 22 de abril
. Segunda prova: 24 de junho

Assuntos Tratados em Aula

Agradecimento: ao Prof. Fabio Kon, que disponibilizou as notas de aula referenciadas abaixo.
. 18/02: Apresenta��o. Organiza��o das disciplinas pr�ticas do BCC. Vis�o geral de MAC-211. N�meros bin�rios e hexadecimais. Notas de aula.
. 20/02: Arquitetura dos processadores da fam�lia x86. Notas de aula.
. 25/02: Chamadas ao S.O. e programa "Hello, World!" em linguagem de montagem. Instru��es de desvio incondicional, compara��o e desvio condicional. Notas de aula.
. 27/02: Mais programas com chamadas ao S.O.: programa que l� um arquivo e escreve o conte�do do arquivo na sa�da padr�o (tela) e programa que copia a entrada padr�o para a sa�da padr�o.
. 11/03: Instru��es aritm�ticas (ADD, SUB, INC, DEC) e l�gicas (AND, OR, XOR). Tipos de operandos: registradores, constantes imediatas e dados na mem�ria (da forma [endere�o + reg_base + escala * reg_indice]).
. 13/03: Programa que copia a entrada padr�o para a sa�da padr�o, invertendo a ordem dos caracteres lidos. Os flags da CPU x86. Representa��o de n�meros inteiros com sinal.
. 18/03: Desvios condicionais. Compara��es de n�meros com sinal e sem sinal.
. 20/03: Instru��es de deslocamento (shift), multiplica��o e divis�o. Fun��es em linguagem de montagem.
. 25/03: A sintaxe AT&T, usada pelo as: diferen�as em rela��o � sintaxe Intel usada pelo nasm. Exemplo de recurs�o em linguagem de montagem: hanoi.asm (programa que resolve o problema das torres de Hanoi). Aqui voc� encontra o mesmo programa, na sintaxe AT&T.
. 27/03: Diferen�as entre a esquema de passagem de par�metros adotado pela linguagem C e o esquema adotado por outras linguagens (Pascal, por exemplo). Modulariza��o de programas em linguagem de montagem (m�dulos montados separadamente). Notas de aula.
. 01/04: Estrutura de um montador: a tabela de s�mbolos, montadores de um passo e montadores de dois passos. Reloca��o de c�digo: acerto de endere�os em tempo de liga��o de m�dulos (link) e em tempo de carga do programa. Liga��o est�tica e liga��o din�mica de bibliotecas. No��es b�sicas de sistemas operacionais (notas de aula).
. 03/04: No��es b�sicas de sistemas operacionais (continua��o). Interpretador de comandos (shell). Notas de aula.
. 08/04: Shell (continua��o).
. 10/04: Mais sobre a shell: metacaracteres, sa�da de um comando como argumento para outro comando, redirecionamento de entrada e sa�da (refer�ncia: Kernighan e Pike). Linguagem de montagem: revis�o e t�picos adicionais (instru��o loop, instru��es de manipula��o de cadeias, prefixo rep).
. 22/04: Primeira prova.
. 24/04: Vis�o geral do projeto da disciplina (simulador de canoagem). Manipula��o de arquivos. Notas de aula.
. 29/04: Manipula��o de arquivos (continua��o). Notas de aula. Manipula��o de arquivos via chamadas ao sistema operacional versus manipula��o de arquivos via chamadas � biblioteca C.
. 06/05: Mais sobre filtros e comandos Unix. Notas de aula. Modulariza��o de programas escritos em C.
. 08/05: Analisadores l�xicos. Exemplo de programa C modularizado: calculadora p�s-fixa. Notas de aula.
. 13/05: O utilit�rio make. Notas de aula.
. 15/05: Biblioteca XWC. Fase 2 do projeto. Notas de aula.
. 20/05: Calculadora recursiva com nota��o infixa. Notas de aula.
. 22/05: Processamento de macros, m4, autoconf. Notas de aula.
. 27/05: Autoconf (continua��o). Express�es regulares, awk. Notas de aula.
. 03/06: O utilit�rio awk (continua��o). O utilit�rio flex. Notas de aula.
. 10/06: Depura��o e testes (Prof. Marco D. Gubitoso).
. 12/06: LaTex (Prof. Alfredo Goldman). Notas de aula.
. 17/06: Flex (continua��o). Gnuplot. Notas de aula.
. 24/06: Segunda prova.
. 01/07: Prova substitutiva.

Trabalhos Propostos

. Primeiro exerc�cio-programa (ps, pdf). Prazo: 08 de abril
. Primeira fase do projeto. Prazo: 19 de maio (o prazo original era 15 de maio e foi alterado a pedido da classe)
. Segunda fase do projeto. Prazo: 05 de junho
. Terceira fase do projeto. Prazo: 26 de junho

Bibliografia

. Randall Hyde, The Art of Assembly Language Programming. Livro online, com vers�es para 32 bits/Linux, 32 bits/Windows, e 16 bits/DOS.
. Bob Neveln, Linux Assembly Language Programming, Prentice-Hall, 2000. ISBN: 0130879401.
. Brian W. Kernighan & Rob Pike, The UNIX Programming Environment, Prentice-Hall, 1984. ISBN: 0139376992.

Recursos Adicionais na Internet

. P�gina de MAC211 e notas de aula do Prof. Fabio Kon.
. Lista de comandos �teis do emacs.
. Linguagem de montagem:
.Linux Assembly HOWTO (pdf).
.Using Assembly Language in Linux. Explica (1) a diferen�a entre a sintaxe da Intel e da AT&T, (2) como fazer chamadas ao sistema e (3) como colocar c�digo de montagem dentro de um programa em C usando o gcc.
.ECE 291 - Laboratory Notes, University of Illinois. Inclui um bom manual de refer�ncia sobre o conjunto de instru��es do 80x86.
.Manuais de refer�ncia do conjunto de instru��es do 80x86 disponibilizados pela Intel: Instruction Set Reference do Pentium (566 p�ginas) e Instruction Set Reference do Pentium 4 (978 p�ginas). Economize papel, por favor!
.P�ginas sobre Linux Sistem Calls (chamadas ao sistema):
.http://linuxassembly.org/syscall.html
.http://home.snafu.de/phpr/lhpsysc0.html
.linuxassembly.org. Cont�m ponteiros para muito material interessante.


Valid CSS! Valid XHTML 1.0! Last modified: Sat Jul 19 12:49:24 EST 2003
Francisco Reverbel
reverbel at ime.usp.br