trabalho de arquitetura de computadores

13
FACULDADE DE CIÊNCIAS DE BRASÍLIA – PROJEÇÃO CURSO DE REDES DE COMPUTADORES – TURMA TRC 2 AN AILSON GONÇALVES AMANDA DIÓGENES ANDERSON COUTINHO ANDERSON LUIZ DE CASTRO ASSUNÇÃO ANDRÉ ALMEIDA ARQUITETURA DE COMPUTADORES LINGUAGEM DE MONTAGEM

Upload: coutinhuuhh

Post on 25-Oct-2015

6 views

Category:

Documents


1 download

DESCRIPTION

Trabalho realizado na matéria de Arquitetura de computadores

TRANSCRIPT

Page 1: Trabalho de Arquitetura de Computadores

FACULDADE DE CIÊNCIAS DE BRASÍLIA – PROJEÇÃOCURSO DE REDES DE COMPUTADORES – TURMA TRC 2 AN

AILSON GONÇALVESAMANDA DIÓGENES

ANDERSON COUTINHOANDERSON LUIZ DE CASTRO ASSUNÇÃO

ANDRÉ ALMEIDA

ARQUITETURA DE COMPUTADORES

LINGUAGEM DE MONTAGEM

29 DE ABRIL DE 2011

Page 2: Trabalho de Arquitetura de Computadores

FACULDADE DE CIÊNCIAS DE BRASÍLIA – PROJEÇÃOCURSO DE REDES DE COMPUTADORES – TURMA TRC 2 AN

AILSON GONÇALVESAMANDA DIÓGENES

ANDERSON COUTINHOANDERSON LUIZ DE CASTRO ASSUNÇÃO

ANDRÉ ALMEIDAARQUITETURA DE COMPUTADORES

LINGUAGEM DE MONTAGEM

PROFESSOR: PAULO PERES

Este trabalho tem o objetivo de demonstrar as principais características e funções das linguagens de montagem para que possamos entender as etapas do funcionamento completo na execução de programas de computadores.

29 DE ABRIL DE 2011

2

Page 3: Trabalho de Arquitetura de Computadores

SUMÁRIO

LINGUAGEM DE MONTAGEM

1. INTRODUÇÃO............................................................................................................4

2. LINGUAGENS DE PROGRAMAÇÃO.......................................................................4

3. MONTAGEM E COMPILAÇÃO ...........................................................................5

3.1MONTAGEM..............................................................................................................5

3.2 COMPILAÇÃO...........................................................................................................6

4. LIGAÇÃO OU LINKEDIÇÃO.....................................................................................6

5. INTERPRETAÇÃO......................................................................................................6

5.1 COMPILAÇÃO x INTERPRETAÇÃO......................................................................7

6.CONCLUSÃO................................................................................................................8

6. REFERÊNCIAS............................................................................................................9

3

Page 4: Trabalho de Arquitetura de Computadores

LINGUAGEM DE MONTAGEM

1. INTRODUÇÃO

Um computador para realizar uma tarefa específica necessita, segundo Mário Monteiro (2001, p. 347), a ser instruído passo a passo. Ele precisa ser projetado com a capacidade de “executar e interpretar” um determinado conjunto de operações, e esse conjunto de instruções, de uma forma ordenada, é o que chamamos de programa de computador.

Atualmente é raro escrever-se um programa diretamente na linguagem da máquina ou linguagem de baixo nível (o que abordaremos mais adiante) em virtude da grande dificuldade de organização de instruções sem que apresente um número de erros significativo, ou seja, quanto maior o tamanho do programa, maior é a possibilidade de erros. Para solucionar em parte esse problema foram encontrados alguns métodos com características de tecnologia de softwares.

Abordaremos então um pequeno esboço ou resumo mais a frente das etapas que definem o processo de execução de um programa a partir de uma linguagem qualquer ou linguagem acima da linguagem de máquina (baixo nível), descrevendo todas as etapas para que possamos consolidar a execução completa de um programa.

2. LINGUAGENS DE PROGRAMAÇÃO

Mário Monteiro (2001, p. 347-350) diz que o objetivo das linguagens de programação é instruir a máquina para que o computador possa executar tarefas. Um programa completo, escrito em uma linguagem de programação, é denominado de código. As linguagens são criadas para instruir o computador a executar tarefas. Sendo assim, o tipo de linguagem de programação mais primitivo que temos é a linguagem que o computador entende diretamente, ou seja, as instruções podem ser executadas diretamente pelo hardware ou pela CPU (Unidade Central de Processamento). Uma instrução de máquina é um conjunto de bits, isto é, um programa em linguagem de máquina é apresentado na forma binária pura. Um programa real em linguagem de máquina pode ser composto por milhões de instruções, o que torna uma tarefa difícil, pois os detalhes devem ser muito observados pelo programador. O programador deve conhecer todas as instruções, os códigos de operação e formato, os registradores disponíveis pela CPU e os endereços da célula de memória onde serão armazenados as instruções e dados, e essa série de conhecimento é o que explica a enorme dificuldade do programador abordada anteriormente. Na tentativa de amenizar esse obstáculo foi desenvolvida ainda na primeira geração de computadores uma linguagem que representasse as instruções por símbolos e não por números. Essa linguagem foi denominada como Assembly ou linguagem de montagem (Assembly Language).

4

Page 5: Trabalho de Arquitetura de Computadores

3. MONTAGEM E COMPILAÇÃO

Os programas de computadores, como já foram abordados no item anterior, não são escritos na linguagem em que a máquina entende, mas sim em outras formas simbólicas de representar as instruções. Porém a máquina continua entendendo somente em binário e por isso há a necessidade de uma tradução de um programa em linguagem simbólico para outro, equivalente, em linguagem binária. Mário Monteiro (2001, p. 350-351).

3.1 MONTAGEM

Segundo Mário Monteiro (2001, p. 351-353), a montagem é realizada por um programa chamado Assembler ou montador, e também é a forma mais simples e rápida de tradução. É basicamente utilizado para tornar um programa executável.

Basicamente é o seguinte: o programa escrito em linguagem de montagem que é chamado de código-fonte é examinado instrução por instrução e convertido para uma linguagem binária (linguagem de máquina) através de outro programa montador, para que o este deixe de ser código-fonte e se torne código objeto.

Sendo assim:

Código-fonte montagem (montador) código-objeto

O Assembly é composto basicamente por quatro partes: Rótulo – indica um endereço importante para o programa, normalmente o de início, o endereço de desvio em um loop, e outros;Operação – Contém o código que simbolizará a operação aritmética;Operando(s) – Onde são inseridos os símbolos representativos dos endereços de memória ou dos registradores em que serão armazenados as informações eComentários – Campo opcional, em que o programador adiciona comentários para fins diversos. Estes serão ignorados na hora da conversão.

Outra característica que faz com que o Assembler seja muito importante, é que este é específico de cada UCP (Unidade Central de Processamento), ou seja, um computador pentium não lê as informações do mesmo modo que um Power PC.

Existem dois tipos de montadores: o de um passo e o de dois passos.O de um passo, tem como objetivo completar sua tarefa em um único passo e, para

isso, ele avalia cada instrução já montando entradas em outra tabela para endereços que ainda são desconhecidos. Após avaliadas as instruções, o programa completa os endereços da tabela. Um dos problemas deste tipo de montagem, é que se o número de endereços desconhecidos for muito grande, suas buscas poderão ser tão demoradas quanto a montagem de dois passos.

O de dois passos, que é o mais empregado atualmente, pode demorar mais, devido ao fato de que ele analisa duas vezes todo o programa. Uma para analisar se há erros e outra para montar uma tabela de símbolos, em que cada entrada corresponde a um

5

Page 6: Trabalho de Arquitetura de Computadores

símbolo. Ele produz um código diretamente no final da montagem. Ele também permite que possam ser criados vários outros programas independentes e interligados (ligação ou linkedição), para construir um único programa executável.

Uma das maiores vantagens de se usar o Assembler, é a simplicidade. Pois ao invés do programador escrever várias páginas em números binários, ele escreve em uma linguagem que será posteriormente modificada. Isto facilita o desenvolvimento e o aprimoramento de softwares, que com toda a certeza exigirão menos esforço e muito menos tempo. Um exemplo de linguagem de montagem seria a linguagem C.

3.2 COMPILAÇÃO

É um processo de tradução de um programa escrito em linguagem de alto nível em uma linguagem de baixo nível. Esse processo é denominado compilação.

Por exemplo, transformar:Escreva (“Histórico.”) – Esta é uma linguagem de código-fonte montada em C.Para 0111101 011111101101 0011000111101 00001110111101 011110111 – Este

é um exemplo hipotético de linguagem binária, de máquina.É um processo semelhante à montagem, porém mais complexo e demorado.Mário Monteiro (2001, p. 353-357), diz que inicialmente o compilador fará uma

análise (léxica, semântica e sintática) no código-fonte e, após essa análise, é gerado um código intermediário e construído tabelas que auxiliarão a segunda fase, que é a conversão ou criação do código-objeto definitivo.

4. LIGAÇÃO OU LINKEDIÇÃO

A ligação ou linkedição pode ser entendida pelo esboço abaixo:

Programa Fonte Compilação (compilador) código-objeto Ligação (ligador) bibliotecas A,B e C código executável

Segundo Mário Monteiro (2001, p. 357-359), funciona do seguinte modo:

1. Primeiramente temos o programa fonte, que é o programa de alto nível;2. Este programa é traduzido pelo processo de compilação (compilador);3. Criação do código-objeto;4. Há uma ligação ou linkedição desse código (ligador), onde ficam armazenadas

tarefas em bibliotecas;5. Surgindo assim o código executável.

A biblioteca é um conjunto de dados, instruções ou até outros códigos-fontes que deverão ser executados juntamente com o código-fonte em questão. São as chamadas rotinas de entradas e saídas.

A linkedição pode gerar um programa executável a partir de um ou mais arquivos objeto.

6

Page 7: Trabalho de Arquitetura de Computadores

5. INTERPRETAÇÃO

A execução de um programa, como já abordado em tópicos anteriores, depende de três fases distintas. No entanto, segundo Mário Monteiro (2001, p. 359-360) a compilação ou a montagem não são as únicas maneiras para que um programa se torne executável. Há a interpretação, que embora apresente o mesmo resultado final, é bastante diverso do método compilação/ligação/execução.

No método compilação para que um programa seja executado é necessário que todos os comandos do código-fonte sejam convertidos em código-objeto e que tenha todas as referências externas resolvidas (etapa da linkedição). A compilação não compreende execução e sim apenas a fase de tradução ou conversão.

Já na interpretação se caracteriza por realizar as três fases (compilação, ligação e execução), comando a comando, do programa fonte, ou seja, um programa fonte é diretamente interpretado por outro programa e produz o resultado final.

Não há etapas intermediárias como em outros métodos de tradução (código-objeto e código executável).

Resumidamente cada comando do código-fonte é lido pelo interpretado e convertido em código executável e imediatamente executado.

5.1 COMPILAÇÃO x INTERPRETAÇÃO

De acordo com Mário Monteiro (2001, p. 360-362), tanto a compilação quanto a interpretação possuem suas vantagens e desvantagens em relação ao funcionamento de cada método. A principal vantagem da interpretação sobre a compilação é identificar e indicar erros no programa-fonte. Já uma desvantagem da interpretação é o alto consumo de memória, pois permanece na memória durante todo o processo de execução do programa, diferente da compilação que só utiliza a memória durante a fase de compilação, pois apenas utiliza por períodos definitivos de tempo.

Outra desvantagem da interpretação em relação à compilação é a possibilidade de partes do código de um programa-fonte ser interpretadas várias (infinitas) vezes, um loop por exemplo. E na compilação isso não ocorre, pois isso sempre acontece uma única vez.

Na compilação, a medida que o código executável entra na fase de execução, a identificação de erros se torna bastante complicado (problemático).

Sendo assim a relação entre o código-fonte e o executável na interpretação é mais simples porque cada comando-fonte é imediatamente traduzido e executado.

7

Page 8: Trabalho de Arquitetura de Computadores

6. CONCLUSÃO

O principal objetivo da linguagem de montagem é facilitar o desenvolvimento de softwares, economizando tempo e recursos. Quando não usado este recurso, o desenvolvedor terá que dominar todas as combinações de números binários, que formariam páginas e mais páginas com milhares e até milhões de instruções para a execução de um único software, tudo isso demandaria muito esforço psicológico, além de tempo, pois além de grandes, os códigos com toda a certeza necessitariam de algumas revisões. Outro fato que causaria problema seria a análise de erros, pois quando é usada a linguagem binária, é impossível detectar erros, pois cada código representa uma instrução diferente que será reconhecida e executada pela máquina. O software com erro pode até não ser executado (por causa do erro), mas a máquina não terá a capacidade de detectar exatamente a localização do erro.

Com o uso da linguagem de montagem, todos esses problemas são evitados. A linguagem de montagem fará com que seja possível tornar a linguagem de máquina um pouco mais próxima da linguagem humana, para que seja de fácil entendimento. Essa linguagem não é tão complexa quanto a humana (que demanda conectivos, conjunções e ainda pode ser interpretada de vários modos a depender do contexto), ela será simples e exigirá apenas uma relação lógica entre as instruções existentes na linguagem utilizada e a correta sintaxe (escrita). Como a sintaxe é definida na própria linguagem do programa de montagem, será possível identificaros erros de sintaxe.

O avanço proporcionado pela linguagem de montagem possibilitou a existência da vasta gama de softwares que existe hoje. Além da criação de vários novos softwares, corrigí-los e atualizá-los tornou-se muito mais fácil e rápido, fazendo com que o mercado mundial de softwares acelerasse acentuadamente o rítmo de crescimento, atingindo demandas e mercados que antes não atingia, e assim gerando mais lucro.

8

Page 9: Trabalho de Arquitetura de Computadores

6. REFERÊNCIAS

MONTEIRO, A. M. Introdução à Organização de Computadores. 4 Ed. Rio de Janeiro, 2001.

9