u n i v e r s i d a d e     d o     m i n h o    -     d e p.     i n f o r m á t i c a

 

Arquitectura de Computadores

Lic. Matemática e Ciências da Computação, 2ºano

2001/02

Alberto José Proença

 

Introdução ao GNU Assembler para IA-32

Nota introdutória | Bibliografia básica  

 

Nota introdutória

O ano de 2001/02 pretende ser um ano de ruptura com o passado, com o principal objectivo de tornar a disciplina de Arquitectura de Computadores ainda mais orientada para todos aqueles que se preocupam com o rigor e eficiência com que as suas aplicações - e em particular os seus programas desenvolvidos em HLL, nomeadamente em C - são executadas nos sistemas que mais frequentemente têm disponíveis: computadores pessoais baseados na arquitectura dos processadores de 32 bits da Intel, também conhecidos por IA-32 (ou ainda x86).

Há já muitos anos que se pretende reorganizar a componente prática desta disciplina numa perspectiva mais orientada à realidade do quotidiano; contudo, qualquer engenheiro de computadores reconhece que, sob o ponto de vista pedagógico, a arquitectura dos processadores Intel da família x86 são o pior exemplo de "como projectar e construir um processador". Como conciliar então o objectivo de se ensinar o que correctamente deve ser feito, com o que torto nasceu mas que, mercê vários factores, tem conseguido manter o sucesso que alcançou? 

Para responder a este desafio, o modelo experimental a adoptar em 2001/02 vai tentar construir uma ponte entre o que deve ser uma Instruction Set Architecture - a filosofia RISC caracterizada nas aulas teóricas - com o que na realidade temos largamente disponível - o modelo CISC do IA-32, a seguir em sessões teórico-práticas e laboratoriais. O ambiente de trabalho será familiar com todos os estudantes que frequentam naturalmente o 2º ano, uma vez que irá apenas pedir que continuem a usar o GCC em Linux (ambiente que facilita a vida ao programador em assembly, ao exigir um modelo não-segmentado de endereçamento à memória), na sequência da disciplina do semestre anterior (Paradigmas de Programação II); só que explorando melhor as potencialidades/limitações do par compilador-assembler.

Verdade seja dita, que a preparação de um novo livro (que estará nas livrarias a partir de meados de 2002) na Universidade de Carnegie-Mellon também contribuiu para acelerar a introdução desta matéria já este ano: é que este livro tem esta vertente da ligação da arquitectura de computadores à eficácia e eficiência da programação em assembly para o IA-32, e numa perspectiva de compreender código em IA-32 para o melhorar, versus aprender a escrever programas em assembly do x86. Assim, o material compilado para estas notas de estudo relativas ao IA-32 e ao GNU Assembler foram fortemente inspirados no material fornecido/disponibilizado na Web pelo Prof. David R. O'Hallaron, um dos autores da obra. A bibliografia básica que se inclui a seguir contém anotações que permitem destacar o material relevante do complementar.

Topo...

 

Bibliografia básica

O principal texto de referência é o livro que está em preparação:

Este link aponta para a página da versão Beta do livro, a qual se encontra disponível num servidor da UM (Versão Beta integral com 784 páginas, em formato PDF e compactados .zip (3.44MB), ou apenas o índice e prefácio; o conjunto de exemplos de código está também incluído, os quais necessitam do comando "gunzip code.tar.gz; tar xvf code.tar" para serem extraídos). Este material não é indispensável para o correcto acompanhamento da componente prática da disciplina.

O material mais relevante é composto por:

Adicionalmente, 3 volumes de manuais da Intel relativos à família IA-32 - Intel Architecture Software Developer's Manual - estão também disponibilizados para consulta em formato PDF e compactados .zip; nomeadamente:

Para os interessados na evolução dos processadores da Intel e respectivas empresas competidoras, sugere-se a leitura do seguinte documento (em Português do Brasil):

Existem ainda diversos sites na Web com informação útil e pertinente a esta disciplina, relativo ao Linux Assembly com ferramentas GNU para o IA-32 (infelizmente nada em Português); nomeadamente:

Sugere-se ainda uma visita a:

Topo...