Qual a ferramenta utilizada para converter um código Assembly em código de máquina?

Um compilador é um programa de software que transforma um programa ou código escrito em uma linguagem de programação de alto nível em uma linguagem de baixo nível legível por máquina. Quando escrevemos um programa ou código que pode estar em uma linguagem de alto nível, como C, C++ ou como a fornecida abaixo.

//Simple Java program public class simple{ public static void main(String[] args){ System.out.printIn("Hello World") } }

Uma linguagem de alto nível está mais próxima do inglês, o que torna mais fácil para nós escrevermos programas. Mas não podemos simplesmente executar o mesmo código em um computador, pois as máquinas não conseguem entender isso. Tudo o que um computador pode entender é o código binário, ou seja, uns e zeros. Portanto, a solução para o problema de os computadores não entenderem as linguagens de alto nível seria convertê-las em código binário compreensível por máquina. Essa é a tarefa exata que é executada por um compilador.  

O processo de compilação do programa simples 'hello world' lá em cima seria o seguinte -

  1. Criamos o programa 'hello world' e salvamos o arquivo como Hello.java.
  2. Quando completamos este programa, o compilador gera o código de máquina equivalente e o salva no arquivo de classe de mesmo nome, mas com extensão de classe Hello.class.
  3. E quando o programa é executado, é o arquivo de classe que é executado e fornece a saída.

Os compiladores são de vários tipos, mas neste artigo, vamos aprender sobre um específico, que é o Compilador de Código-Fonte.

Compilador de
origem para origem : Um compilador de origem para origem (compilador S2S) também é referido por três outros nomes, o primeiro é o tradutor de origem para origem, o segundo é transcompilador e o terceiro é transpilador. Se tentarmos resumir o trabalho na fonte para o compilador fonte é uma frase, seria o seguinte:

Um compilador S2S recebe como entrada o código-fonte de um programa para o qual ele retorna um código-fonte com a mesma funcionalidade geral na mesma linguagem de programação ou em uma linguagem de programação diferente. 

Ao contrário do compilador geral, cujo trabalho é converter uma linguagem de programação de alto nível em uma linguagem de máquina binária, o compilador fonte para fonte converte um código-fonte de uma linguagem de programação para outra linguagem de programação que está no mesmo nível de compilação da máquina língua. Por exemplo, enquanto o compilador tradicional pode converter C para assembly ou Jave para bytecode , o compilador de origem para origem pode converter uma linguagem de script para outra, como Javascript para Python ou C++ para Java . 

Alguns exemplos de compiladores tradicionais estão listados abaixo:

Nome Idioma de Origem Língua Alvo
GCC C++ Binário / Linguagem de Máquina
Clang C++ Binário / Linguagem de Máquina
JAVAC Java Código de byte
GCJ Jave Código de byte
ECJ Java  Código de byte

Alguns exemplos de compiladores Source to Source estão listados abaixo:

Nome  Idioma de Origem Língua Alvo
Cfront C++ C
HPHPc PHP C++
Babel ES ^ + (JS) ES5
ClojureScript Clojure JavaScript
JSSweet Java TypeScript
Swiftify Objective-C Rápido
J2ObjC Java Objective-C
Haxe Haxe

ActionScript3, JavaScript, Java, C++,

C#, PHP, Python, Lua

Maia Maia Verilog
Cerberus X Cerberus JavaScript, Java, C++, C#

Uma das principais aplicações de código fonte para compiladores de código-fonte é converter o código antigo, ou seja, código legado, para as versões mais recentes de uma linguagem de programação ou API que ajuda a manter a compatibilidade com versões anteriores do código. As ferramentas são muito úteis na atualização de bases de código grandes e antigas que, de outra forma, levariam muito tempo para fazer isso manualmente. Um exemplo disso poderia ser a conversão do programa da versão mais antiga do C++ para a versão estável atual, que é C++ 20. Ou também pode ser o caso de uma API, como o antigo programa Dart, a ser convertida para a versão mais recente do Dart 2.0. A estrutura do mais recente poderia depender do compilador. Pode ser muito semelhante ao código original para facilitar o processo de desenvolvimento de uma linguagem para outra ou da versão mais antiga para a mais recente.

Se olharmos mais de perto a tabela acima, podemos deduzir que o uso inicial de algumas das principais linguagens de programação, como PHP ou C++, foi iniciado como fonte para compiladores de origem, já que seu principal uso era converter para o outras linguagens de programação convencionais. Hoje também, se dermos uma olhada, podemos identificar linguagens como Dart, Typescript, CoffeeScript, Emcscript e outras como sendo principalmente utilizadas para a conversão para outras linguagens.

Tradutor de
linguagem assembly : os tradutores de linguagem assembly são um dos exemplos mais importantes do compilador fonte para fonte. Abaixo, discutimos brevemente os quatro tradutores da linguagem assembly.

  • Intel CONV86 - 
    é um dos primeiros compiladores que podem traduzir assembly para o binário. No final dos anos 70, era feito pela Intel, que é famosa por fazer processadores. O objetivo pretendido para isso era executar de forma confiável o programa feito para um processador de 8 bits no processador de 16 bits da Intel. De acordo com os usuários, por ser um dos primeiros no gênero, não foi capaz de atender às expectativas.
  • SCP TRANS86 - 
    Semelhante ao Intel CONV86, este tradutor foi desenvolvido em 1980 por um engenheiro chamado Tim Paterson, conhecido como o criador do famoso 86-DOS. Este tradutor foi projetado para traduzir o código assembly do Intel 8080 e Zilog Z80 em código .ASM para o processador Intel 8086 da Intels de 16 bits. Mas, semelhante ao seu homólogo anterior, ele não era capaz de realizar o trabalho de forma eficaz e exigia muita correção manual.
  • Sorcim TRANS86 -
    Socrium é uma start-up que também ofereceu ao mercado um tradutor de montagens em 1980. Também foi inventado para converter montagens para MS-DOS. Este tradutor provou ser um substituto melhor para os dois anteriores.
  • Digital Research XLT86 - 
    Este tradutor surgiu no mercado em setembro de 1981 e foi desenvolvido por Gary Kildall. Antes deste tradutor, nenhum outro tinha a abordagem de otimização do compilador que proporcionava um desempenho eficaz. Como o SCP TRANS86, seu objetivo também era converter o código-fonte .ASM do Intel 8080 no código .A86 do Intel 8086.

Esses quatro tradutores de código de montagem marcam o início dos compiladores de origem em origem, que agora haviam feito muitas dobras no progresso.

Aprenda todos os conceitos do GATE CS com aulas gratuitas ao vivo em nosso canal do youtube.

Qual é a ferramenta utilizada para converter um código Assembly em código de máquina?

A tradução do código Assembly para o código de máquina é feita pelo montador ou assembler.

Qual programa converte um programa em linguagem Assembly para um programa em linguagem de máquina?

Assembler é o montador, um programa que lê o arquivo contendo os mnemônicos da linguagem Assembly e transforma em linguagem de maquina.

Quem faz a conversão de linguagem de montagem para linguagem de máquina?

A conversão da linguagem simbólica para a linguagem de máquina se chama montagem, e é feito por um programa chamado montador (ou assembler).

Como programar em código de máquina?

Para se programar em código de máquina, deve-se obter os códigos de instruções do processador utilizado contendo opcodes, operandos e formatos de cada instrução.

Toplist

Última postagem

Tag