Guia Assembly

  • View
    378

  • Download
    0

Embed Size (px)

Text of Guia Assembly

Arquitectura de Computadores2004 / 2005

Introduo ao Assembly usando o Simulador SPIMGuia dos Laboratrios

Pedro F. CamposDepartamento de Matemtica e Engenharias Universidade da Madeira

Arquitectura de Computadores Guia dos Laboratrios

Pedro F. Campos

Planeamento dos Laboratrios:1 Aula: Introduo Linguagem Assembly do MIPS R2000 Tpicos: Introduo ao ambiente de laboratrio. Definio dos grupos. Treino na utilizao do simulador SPIM. Treino nos mtodos de teste e depurao dos programas. Estrutura de um programa em Assembly: directivas, etiquetas e pseudo-instrues. Arquitectura do MIPS: Coprocessador 0 e 1. Utilizao do coprocessador 1 (Unidade de Vrgula Flutuante).

2 Aula: Gesto dos Dados em Memria Tpicos: Declarao de palavras e bytes em memria. Declarao de cadeias de caracteres. Reserva de espao em memria. Alinhamento dos dados na memria. Modos de endereamento. Carregamento de constantes. Carregamento de palavras/bytes da memria para registos. Armazenamento de palavras/bytes de registos para a memria. 1 Trabalho de avaliao.

3 Aula: Operaes Aritmticas e Lgicas e Avaliao de condies Tpicos: Operaes Aritmticas com constantes e com dados em memria. Multiplicao, diviso e operaes lgicas. Operadores de rotao. Avaliao de condies simples e compostas por operadores lgicos. Definio de uma notao uniforme para a escrita de fluxogramas. Criao de fluxogramas a partir de exemplos de programas.

4 Aula: Estruturas de controlo condicional e Chamadas ao Sistema Tpicos: Estruturas de controlo do tipo se...seno...ento. Estruturas de controlorepetitivas do tipo enquanto, repetir at e para. Treino na concepo e depurao de pequenos troos de programas. Leitura/Escrita de Inteiros a partir da Consola. Leitura/Escrita de Cadeias de caracteres a partir da Consola. 2 Trabalho de Avaliao.

5 Aula: Estruturas de controlo condicional e Chamadas ao Sistema Tpicos: Escrita de pequenos programas utilizando as estruturas ensinadas na aulaanterior. Comparao de programas escritos em linguagens de alto nvel (e.g. C) com os equivalentes em Assembly. Treino na escrita de programas mais complexos.

6 Aula: Gesto de subrotinas Tpicos: Noo de rotinas em Assembly e de mtodos de passagem de parmetros.Gesto da pilha. Visualizao da pilha em vrias situaes. Treino na concepo de pequenos programas com rotinas. 3 Trabalho de Avaliao.

3

Arquitectura de Computadores Guia dos Laboratrios

Pedro F. Campos

7 Aula: Gesto de subrotinas Tpicos: Treino na concepo de programas mais complexos com rotinas. Programasrecursivos em Assembly. Escrita de rotinas destinadas a serem utilizadas no projecto.

8 Aula: Gesto das Entradas/Sadas por consulta do estado. Tpicos: Leitura/Escrita no Porto de dados. Consulta ao Porto de Controlo. Apoio realizao do projecto. 4 Trabalho de Avaliao.

9 Aula: Gesto das Entradas/Sadas por Interrupes. Tpicos: Processamento das excepes no simulador SPIM. Descrio do controladordo teclado simulado pelo SPIM. Controlo da entrada de dados mediante interrupes. Apoio realizao do projecto.

10 Aula: Gesto das Entradas/Sadas por Interrupes. Tpicos: Continuao da aula anterior e Apoio realizao do projecto. 5 Trabalhode Avaliao.

11 Aula: Introduo Micro-programao. Tpicos: Codificao e formatos das micro-instrues. Exemplificao para o caso doprocessador MIPS R2000. Apoio realizao do projecto.

12/13 Aula: Discusses dos Projectos.

Avaliao nos LaboratriosCada um dos trabalhos de laboratrio possui um objectivo especfico. A nota obtida depende directamente do cumprimento desse objectivo, segundo a escala seguinte: 0 - No compareceu / no atingiu os objectivos mnimos 5 - Atingiu uma pequena parte dos objectivos 10 - Quase atingiu todos os objectivos 15 - Atingiu todos os objectivos 20 - Atingiu plenamente todos os objectivos e superou as expectativas de notar que para algumas as aulas de laboratrio pode ser necessria uma preparao com antecedncia, sob pena de no se conseguirem atingir os objectivos de forma satisfatria.

4

Arquitectura de Computadores Guia dos Laboratrios

Pedro F. Campos

5

Arquitectura de Computadores Guia dos Laboratrios

Pedro F. Campos

Motivao + Ambio + Esprito de Equipa = Sucesso

6

1Introduo ao Assembly e ao Simulador SPIMThere are three reasons to program in Assembly: speed, speed and speed.In The Art of Assembly

O objectivo desta aula a familiarizao com a ferramenta que ser utilizada ao longo de todo o semestre: o simulador SPIM, que simula um processador MIPS R2000. Iremos aprender tambm a estrutura bsica de um programa em linguagem Assembly, e tentaremos compreend-lo usando as ferramentas de depurao do simulador.

Introduo ao AssemblyA linguagem Assembly no mais do que uma representao simblica da codificao binria de um computador: a linguagem mquina. A linguagem mquina composta por micro-instrues que indicam que operao digital deve o computador fazer. Cada instruo mquina composta por um conjunto ordenado de zeros e uns, estruturado em campos. Cada campo contm a informao que se complementa para indicar ao processador que aco realizar. A linguagem Assembly oferece uma representao mais prxima do programador, o que simplifica a leitura e escrita dos programas. Cada instruo em linguagem Assembly corresponde a uma instruo de linguagem mquina, mas, em vez de ser especificada em termos de zeros e uns, especificada utilizando mnemnicas e nomes simblicos. Por exemplo, a instruo que soma dois nmeros guardados nos registos R0 e R1 e colocar o resultado em R0 poder ser codificada como ADD R0,R1 . Para ns, humanos, muito mais fcil memorizar esta instruo do que o seu equivalente em linguagem mquina.

Mas... quando usar Assembly? E para qu?Tipicamente, quando um programador utiliza Assembly, porque a velocidade ou a dimenso do programa que est a desenvolver so crticas. Isto acontece muitas vezes na vida real, sobretudo quando os computadores so embebidos noutras mquinas (e.g. carros, avies, unidades de controlo de produo industrial...). Computadores deste tipo1 devem responder rapidamente a eventos vindos do exterior. As linguagens de alto nvel introduzem incerteza quanto ao custo de execuo temporal das operaes, ao contrrio do Assembly, onde existe um controlo apertado sobre que instrues so executadas. Alm deste motivo, existe outro que tambm est relacionado com a execuo temporal dos programas: muitas vezes possvel retirar grandes benefcios da optimizao de programas. Por exemplo, alguns jogos que recorrem a elaborados motores 3D so

1

Este tipo de computadores so designados por computadores embebidos (do ingls embedded computers.

Arquitectura de Computadores Guia dos Laboratrios

Pedro F. Campos

parcialmente programados em Assembly (nas zonas de cdigo onde a optimizao mais benfica que so normalmente as zonas de cdigo mais frequentemente utilizado).

A ideia geralA linguagem Assembly uma linguagem de programao. A principal diferena entre esta linguagem e as linguagens de alto nvel (como C, C++ ou Java) est no facto de s disponibilizar ao programador poucas e simples instrues e tipos de dados. Os programas em Assembly no especificam o tipo de dados de uma varivel (e.g. float ou int) e tem tambm de ser o programador a implementar tudo o que tenha a ver com controlo de fluxo, isto , ciclos, saltos etc... Estes factores fazem com que a programao em Assembly seja mais propcia a erros e mais difcil de entender do que o habitual, da a necessidade de um forte rigor e disciplina ao desenvolver programas nesta linguagem.

Estrutura dos programas em AssemblyDescobriremos ao longo do tempo toda a sintaxe da linguagem Assembly, mas tornase necessrio introduzir j a estrutura principal de um programa escrito nesta linguagem. Alguns conceitos bsicos so: Comentrios. Estes so especialmente importantes quando se trabalha com linguagens de baixo nvel, pois ajudam ao desenvolvimento dos programas e so utilizados exaustivamente. Os comentrios comeam com o caracter "#".

Identificadores. Definem-se como sendo sequncias de caracteres alfanumricos, underscores (_) ou pontos (.) que no comeam por um nmero. Os cdigos de operaes so palavras reservadas da linguagem e no podem ser usadas como identificadores (e.g. addu). Etiquetas. Identificadores que se situam no princpio de uma linha e que so sempre seguidos de dois pontos. Servem para dar um nome ao elemento definido num endereo de memria. Pode-se controlar o fluxo de execuo do programa criando saltos para as etiquetas.

Pseudo-instrues. Instrues que o Assembly interpreta e traduz em uma ou mais micro-instrues (em linguagem mquina). Directivas. Instrues que o Assembly interpreta a fim de informar ao processador a forma de traduzir o programa. Por exemplo, a directiva .text informa que se trata de uma zona de cdigo; a directiva .data indica que se segue uma zona de dados. So identificadores reservados, e iniciam-se sempre por um ponto.

Q1.1. Dado o seguinte programa:dados: .data .byte 3 # inicializo uma posio de memria a 3 .text .globl main # deve ser global lw $t0,dados($0)

main:

Indique as etiquetas, directivas e comentrios que surgem no mesmo.

8

Arquitectura de Computadores Guia dos Laboratrios

Pedro F. Campos

O simulador SPIMO SPIM S20 um simulador que corre programas para as arquitecturas MIPS R2000 e R3000. O simulador pode carregar e executar programas em linguagem Assembly destas arquitecturas. O processo atravs do qual um ficheiro fonte em linguagem Assembly traduzido num ficheiro executvel compreende duas etapas: assembling, implementada pelo assemblador linking, implementada pelo linker

O assemblador realiza a traduo de um mdulo de linguagem Assembly em cdigo mquina. Um programa pode conter diversos mdulos, cada um deles parte do programa. Ist