qual arquivo deve ser incluído em um programa em assembly ?
Soluções para a tarefa
Respondido por
0
Tendo em vista que eu vi um consideravel numero de usuarios com duvidas sobre compilaçao, linguagem assembler etc. resolvi criar esse topico..
Primeiro uma breve descrição do que é um Montador de assembler:
Montagem
A montagem é realizada para traduzir/converter um programa em linguagem de montagem (assembly) para seu equivalente em linguagem binária através do montador (assembler)
O programa escrito em linguagem de montagem (código fonte) é examinado, instrução por instrução, e convertivo para um outro programa em linguagem binária (código objeto)
Basicamente, as funções de um montador são:
substituir os nomes simbólicos dos código de operação e operandos;
Reservar espaço de memória p/ o armazenamento das instruções e dados;
Converter valores de constantes p/ código binário;
Examinar a correção de cada instrução
A implementação de uma linguagem de montagem pode ser realizada em um sistema de computação optando-se por um dos 2 tipos de montadores:
montador do tipo carrega e monta ou de 1 passo, ou
montador do tipo de módulos ou de 2 passos.
Montador de dois passos
É um montador que lê o programa de entrada duas vezes.
->primeiro passo:
verifica a correção das instruções
Se encontrar incorreção, o montador registra e o processo é interrompido;
Se as instruções estiverem corretas, o montador gera as tabelas de símbolos.
A cada entrada da tabela, o montador atribui o valor binário do codigo de operação, além de outros dados, como o tamanho da instrução e seus operandos, bem como a posição relativa à instrução inicial do programa.
->segundo passo:
o montador realiza a criação do código objeto, completando todas as entradas das tabelas.
Montador de um passo
o objetivo deste montador é completar a tarefa (carrega e monta) em um único passo. Para tanto, durante a avaliação de cada insrução ele vai criando entradas em um outra tabela para endereços ainda desconhecidos.
Avaliando os dois tipos de montadores
Montador de 2 passos:
Apesar de consumir um certo tempo devido ao fato de examinar 2 vezes todo o programa, ele produz um código de máquina direto no final da montagem.
Montador de 1 passo:
Não tem a mesma clareza de execução do tipo anterior, embora conceitualmente pretenda ser mais rápido.
Problemas:
não conclui a tarefa com um código direto e sequencialmente gerado. É preciso um rearranjo dos endereços para se inserir os que estavam desconhecidos;
Se a tabela de endereços desconhecidos for grande, a busca poderá ser tão demorada quanto se estivesse realizado um 2º passo.
A seguir uma breve explicação sobre compilaçao:
Compilação
Compilador é um programa que traduz todo o código-fonte de programas escritos numa linguagem de alto nível em código-objeto da execução do programa.
O processo de compilação é mais complexo e demorado que o de montagem, pois um único comando pode gerar várias instruções de máquina.
O compilador realiza uma análise do código fonte, a qual é dividida em 3 partes funcionalmente distintas:
análise léxica: decompõe o programa fonte em seus elementos individuais distintos, os quais são verificados de acordo com as regras da linguagem;
análise sintática: cria estruturas de cada comando, na verificação da correção dessas estruturas e na alimentação da tabela de símbolos com as informações geradas;
análise semântica: verifica as regras semânticas estáticas da linguagem, produzindo mensagem de erro para as incorreções
Ligação ou linkedição
Um código objeto gerado por um compilador não é imediatamente executável, visto que ainda há código binário a ser incluído no programa, como uma chamada às bibliotecas.
Este processo de interpretação da chamada de uma rotina e a respectiva conexão do código-objeto do programa com o código-objeto da rotina chamada denomina-se ligação.
Um linkeditor/ligador é um programa que reúne módulos compilados e arquivos (de dados ou de bibliotecas) para criar um programa executável.
O funcionamento do programa ligador consiste em examinar todo o código objeto, gerado após a compilação, e procurar as referências externas não resolvidas. Procurando suas respectivas localizações nas bibliotecas indicadas nos comandos de execução do programa.
Ao encontrar a rotina chamada em uma das bibliotecas, o ligador substitui a linha de chamada pelo código objeto da rotina.
O processo de compilação e de ligação são fases distintas e independentes do procedimento global de execução de um programa e também geram produtos distintos:
O código objeto ao final da compilação
O código executável após a ligação
Os códigos acima referenciados são arquivos de códigos binários que podem ser armazenados em memória secundária para uso imediato ou posterior.
Há outro tipo de ligador chamado carregador ou loader que realiza a ligação e em seqüência imediata a execução do código de máquina, sem gerar o código executável permanente.
Primeiro uma breve descrição do que é um Montador de assembler:
Montagem
A montagem é realizada para traduzir/converter um programa em linguagem de montagem (assembly) para seu equivalente em linguagem binária através do montador (assembler)
O programa escrito em linguagem de montagem (código fonte) é examinado, instrução por instrução, e convertivo para um outro programa em linguagem binária (código objeto)
Basicamente, as funções de um montador são:
substituir os nomes simbólicos dos código de operação e operandos;
Reservar espaço de memória p/ o armazenamento das instruções e dados;
Converter valores de constantes p/ código binário;
Examinar a correção de cada instrução
A implementação de uma linguagem de montagem pode ser realizada em um sistema de computação optando-se por um dos 2 tipos de montadores:
montador do tipo carrega e monta ou de 1 passo, ou
montador do tipo de módulos ou de 2 passos.
Montador de dois passos
É um montador que lê o programa de entrada duas vezes.
->primeiro passo:
verifica a correção das instruções
Se encontrar incorreção, o montador registra e o processo é interrompido;
Se as instruções estiverem corretas, o montador gera as tabelas de símbolos.
A cada entrada da tabela, o montador atribui o valor binário do codigo de operação, além de outros dados, como o tamanho da instrução e seus operandos, bem como a posição relativa à instrução inicial do programa.
->segundo passo:
o montador realiza a criação do código objeto, completando todas as entradas das tabelas.
Montador de um passo
o objetivo deste montador é completar a tarefa (carrega e monta) em um único passo. Para tanto, durante a avaliação de cada insrução ele vai criando entradas em um outra tabela para endereços ainda desconhecidos.
Avaliando os dois tipos de montadores
Montador de 2 passos:
Apesar de consumir um certo tempo devido ao fato de examinar 2 vezes todo o programa, ele produz um código de máquina direto no final da montagem.
Montador de 1 passo:
Não tem a mesma clareza de execução do tipo anterior, embora conceitualmente pretenda ser mais rápido.
Problemas:
não conclui a tarefa com um código direto e sequencialmente gerado. É preciso um rearranjo dos endereços para se inserir os que estavam desconhecidos;
Se a tabela de endereços desconhecidos for grande, a busca poderá ser tão demorada quanto se estivesse realizado um 2º passo.
A seguir uma breve explicação sobre compilaçao:
Compilação
Compilador é um programa que traduz todo o código-fonte de programas escritos numa linguagem de alto nível em código-objeto da execução do programa.
O processo de compilação é mais complexo e demorado que o de montagem, pois um único comando pode gerar várias instruções de máquina.
O compilador realiza uma análise do código fonte, a qual é dividida em 3 partes funcionalmente distintas:
análise léxica: decompõe o programa fonte em seus elementos individuais distintos, os quais são verificados de acordo com as regras da linguagem;
análise sintática: cria estruturas de cada comando, na verificação da correção dessas estruturas e na alimentação da tabela de símbolos com as informações geradas;
análise semântica: verifica as regras semânticas estáticas da linguagem, produzindo mensagem de erro para as incorreções
Ligação ou linkedição
Um código objeto gerado por um compilador não é imediatamente executável, visto que ainda há código binário a ser incluído no programa, como uma chamada às bibliotecas.
Este processo de interpretação da chamada de uma rotina e a respectiva conexão do código-objeto do programa com o código-objeto da rotina chamada denomina-se ligação.
Um linkeditor/ligador é um programa que reúne módulos compilados e arquivos (de dados ou de bibliotecas) para criar um programa executável.
O funcionamento do programa ligador consiste em examinar todo o código objeto, gerado após a compilação, e procurar as referências externas não resolvidas. Procurando suas respectivas localizações nas bibliotecas indicadas nos comandos de execução do programa.
Ao encontrar a rotina chamada em uma das bibliotecas, o ligador substitui a linha de chamada pelo código objeto da rotina.
O processo de compilação e de ligação são fases distintas e independentes do procedimento global de execução de um programa e também geram produtos distintos:
O código objeto ao final da compilação
O código executável após a ligação
Os códigos acima referenciados são arquivos de códigos binários que podem ser armazenados em memória secundária para uso imediato ou posterior.
Há outro tipo de ligador chamado carregador ou loader que realiza a ligação e em seqüência imediata a execução do código de máquina, sem gerar o código executável permanente.
Perguntas interessantes
Geografia,
9 meses atrás
Geografia,
9 meses atrás
Matemática,
9 meses atrás
Matemática,
1 ano atrás
Informática,
1 ano atrás
Matemática,
1 ano atrás
Português,
1 ano atrás
B) avr/io
C) ASCII
D) PORTx