Ir ao conteúdo
  • Cadastre-se

Nukem

Membro Pleno
  • Posts

    84
  • Cadastrado em

  • Última visita

Reputação

1
  1. Ok velho, sem problema... Afinal nosso proposito aqui é trocar conhecimento!!
  2. Eu não disse q o byte code não existe.. apenas que não é uma compilaçao... O conceito de compilação foi dado a passagem de uma linguagem de alto nivel para linguagem de maquina, para o processador entender. Uma vez q você precisa da maquina virtual para INTERPRETAR o bytecode ele não se encaixa no conceito de compilação, portanto a trasformaçao do programa em java em byte code poder ser chamado de tradução, ou sei la como voce queira!
  3. Pra que livros, se temos os "HELPs" e uma infinidade de exemplos (codigo-fonte) na internet... Obs. não sou contra livros... é só uma opiniao!
  4. Para você compilar (na verdade montar) um programa escrito na linguagem assembly você vai precisar de um Montador ou Assembler. Existem varios como o TASM (turbo assembler) q se eu não me engano é da borland [não sei se é gratis] e também tem os open-source aí na net pra baixar...
  5. não existe compilaçao para byte code java nenhum, compilação é pra linguagem de maquina fora isso não é compilaçao.. intao a ide java q você ta usando apenas converte para um codigo (esse bytecode) intendivel para a maquina virtual java. Compilação é diferente de interpretaçao, no momento que é necessario uma maquina virtual para rodar a aplicaçao ela não esta compilada.
  6. Quando um programa em java ou em qualquer outra linguagem de programaçao é compilado, ele esta na linguagem de maquina. Mas aí a questao de rodar em qualquer maquina não é bem assim, vai depender da arquitetura do computador e do sistema operacional. Ou seja, um programa em java compilado pra windows não vai roda nem em um macintosh nem em um pc com unix, pois a "linguagem de maquina" que o compilador fez foi para aquela arquitetura e aquela plataforma especificamente.
  7. Sim é q eu respondi aquilo rápido, entre um descanso e outro no meu trabalho aqui, aí eu inrrolei os assembler e os assembly!
  8. O compilador gera codigo Binario, de maquina, chame como quiser. o que é executavel pelo processador Assembler é uma linguagem de programaçao de baixo nivel, apesar de chegar bem perto da linguagem de maquina ela ainda não é. O Codigo binario é a propria instrução, os processadores vem com suas intruçoes pre-definidas, por isso q um programa compilado pra uma arquitetura CISC, provalvelmente não funcionara em uma arquitetura RISC, tendo em vista q a tabela de instruçoes que o processador vem programado para executar não é a mesma. Aprofundando mais: por ex se você tem em assembler ADD X (Tendo em vista instruçoes com 1 operando) essa instruçao seria adicionar o conteudo de X ao ACC (acumulador do processador), mas isso esta em uma linguagem perfeitamente entendivel HUMANA. O computador ainda não intende isso. aí que entra o MONTADOR, que vai tranformar isso em linguagem de maquina. o ADD digamos que é o bite 1 e o endereço de X na memoria é 0F intao a instruçao seria : 10F ficaria um pouco difícil programar assim ne?? -------------- por ex em pascal você teria: x:= a+b-c; o computador não consegue fazer isso tudo de uma vez, aí q entra o compilador que vai kebrar isso em instruçoes simples, ou seja uma coisa de cada vez: ASSEMBLER com instruçoes de 1 operando LDA a (carrega a para o acc) ADD b (adicona B ) SUB c (subtrai c) STA x (grava em x) como podem ver uma coisinha simples como a+b-c é quebrado em 4 instruçoes de maquina (obs, ainda não ta em instruçao de maquina esta em assembler) é isso q aproxima tanto o assembler do codigo de maquina, pois cada instrução do assembler equivale a uma instrucao de maquina. já as linguagens de alto nivel não. espero ter ajudado.!
  9. 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. Interpretação Pelo método de interpretação, cada comando do código fonte é lido pelo interpretador, é convertido em código executável e imediatamente executado, antes que o comando seguinte seja lido. Compilação X Interpretação Compilação >>Vantagens: Usa a memória apenas por períodos definidos de tempo, economizando memória; Na ocorrência de loop, o código fonte é compilado apenas uma única vez. >>Desvantagem: A identificação de erros no programa se torna mais problemática quando o código executável entra em fase de execução Interpretação >>Vantagens: Capacidade de identificar e indicar um erro no programa fonte tanto na etapa de conversão estática como na dinâmica >>Desvantagens Consumo de memória; Partes do código de um programa fonte necessitar ser interpretadas tantas vezes quantas definidas no loop Espero que isso ajude!

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...