Rozdíl mezi kompilátorem a assemblerem

Autor: Laura McKinney
Datum Vytvoření: 1 Duben 2021
Datum Aktualizace: 11 Smět 2024
Anonim
Rozdíl mezi kompilátorem a assemblerem - Technologie
Rozdíl mezi kompilátorem a assemblerem - Technologie

Obsah


Kompilátor a Assembler hraje důležitou roli při provádění programu. Někteří kompilátoři přímo generují spustitelný kód místo kódu sestavení. Kompilátor vezme předzpracovaný zdrojový kód a převede jej do kódu sestavy. Sestavovatel převezme kód sestavy z kompilátoru a převede jej do přemístitelného strojového kódu. V tomto článku jsem diskutoval rozdíly mezi kompilátorem a assemblerem pomocí níže uvedené srovnávací tabulky, jen se podívejte.

  1. Srovnávací tabulka
  2. Definice
  3. Klíčové rozdíly
  4. Závěr

Srovnávací tabulka

Základ pro srovnáníKompilátor Assembler
ZákladníGeneruje kód jazyka sestavení nebo přímo spustitelný kód.Vytvoří přemístitelný strojový kód.
VstupPředpracovaný zdrojový kód.Kód jazyka sestavení.
Fáze / průchodyKompilační fáze jsou lexikální analyzátor, syntaktický analyzátor, sémantický analyzátor, generování přechodného kódu, optimalizace kódu, generování kódu.Assembler provede dva průchody daným vstupem.
VýstupKód sestavy generovaný kompilátorem je mnemotechnická verze strojového kódu.Přemístitelný strojový kód generovaný assemblerem je reprezentován binárním kódem.


Definice kompilátoru

překladač je počítačový program, který čte program napsaný ve zdrojovém jazyce a převádí jej do ekvivalentu montážní jazyk a předá kód jazyka sestavení do Assembler. Zatímco překlad zdrojového kódu do kódu sestavy kompilátor také hlásí chyba ve zdrojovém kódu jeho uživateli.

Kompilátory jsou také klasifikovány jako single-pass, multi-pass, load-and-go, ladění a optimalizace. Klasifikace se provádí na základě funkce, kterou kompilátor vykonává a jak byla vytvořena. Přes tyto složitosti zůstává základní úkol kompilátoru stejný.

Kompilace se provádí ve dvou částech, část analýzy a syntézní část. část analýzy rozdělí zdrojový kód na jednotlivé části a vytvoří přechodnou reprezentaci zdrojového kódu. syntézní část vytvoří cílový kód ze střední reprezentace.


Kompilace se provádí v následujících fázích:

Lexikální analyzátor, syntaktický analyzátor, sémantický analyzátor, generátor přechodného kódu, optimalizátor kódu, generátor kódu, tabulka symbolů a popisovač chyb.

  • lexikální analyzátor čte znaky zdrojového kódu a seskupí je do proudy tokenů. Každý token představuje logickou posloupnost znaků jako klíčové slovo, identifikátory, operátory. Volá se sekvence znaků, které tvoří token lexém.
  • syntaktický analyzátor analyzuje token získaný z lexikálního analyzátoru a seskupí tokeny do a hierarchická struktura.
  • sémantický analyzátor zkontroluje, zda zdrojový kód neobsahuje sémantická chyba.
  • Generátor přechodného kódu generuje střední reprezentace zdrojového kódu
  • Optimalizátor kódu optimalizuje přechodný kód na rychlejší kód stroje.
  • generátor kódů konečně vygeneruje cílový kód, který je přemístitelný strojový kód nebo kód sestavy.
  • tabulka symbolů je datová struktura, která obsahuje záznam pro každý identifikátor ve zdrojovém kódu.
  • Obsluha chyb detekuje chybu v každé fázi a zpracovává tyto chyby.

Definice Assemblera

Někteří kompilátoři vykonávají úlohu assembleru a přímo generují přemístitelný strojový kód namísto montážního kódu, který se dále přímo předává linkeru / zavaděči. assembler vezme jako vstup kód sestavy vygenerovaný kompilátorem a převede jej do přemístitelný strojový kód.

Podívejme se, jak se strojový kód liší od kódu sestavy. Kód sestavy je mnemonický verze strojového kódu. To znamená, že kód sestavy používá jména pro reprezentaci operací a dokonce dává jména na adresy v paměti. Na druhé straně, strojový kód použití binární kódy pro reprezentaci operací a adres paměti.

I nejjednodušší forma assembleru provádí dva průchody přes vstup. první průchod detekuje všechny identifikátory v kódu sestavy, který označuje umístění úložiště a ukládá je do tabulka symbolů (kromě tabulky symbolů kompilátorů). umístění úložiště je přiřazeno k identifikátoru, který se vyskytuje při prvním průchodu.

V druhý průchod, vstup je znovu naskenován a tentokrát provozní kód jsou přeloženo do posloupnost bitů představující tuto operaci v strojním kódu. Druhý průchod se také překládá identifikátory do adresy definované v tabulce symbolů. Druhý průchod tedy generuje přemístitelný strojový kód.

  1. Klíčový rozdíl mezi kompilátorem a assemblerem je, že překladač generuje kód sestavení a někteří kompilátoři mohou také přímo generovat spustitelný kód, zatímco assembler generuje přemístitelný strojový kód.
  2. Kompilátor bere jako vstup předzpracovaný kód generovaný preprocesorem. Na druhou stranu, assembler vezme montážní kód jako vstup.
  3. Kompilace probíhá ve dvou fázích, které jsou fáze analýzy a syntézní fáze. Ve fázi analýzy vstup prochází lexikální analyzátor, syntaktický analyzátor, sémantický analyzátor zatímco syntézní analýza se provádí prostřednictvím generátor přechodného kódu, optimalizátor kódu, generátor kódu. Na druhou stranu, assembler prochází vstupem dvě fáze. První fáze detekuje identifikátory a přidělí jim adresy ve druhé fázi, kdy je kód sestavy přeložen do binárního kódu.
  4. Kód sestavy generovaný kompilátorem je mnemonická verze strojového kódu. Přemístitelný strojový kód generovaný assemblerem je však binární přemístitelný kód.

Závěr:

Assembler nemusí být vyžadován, protože někteří kompilátoři přímo generují spustitelný kód. Pokud je použit assembler, vyžaduje linker k propojení všech vestavěných knihoven s knihovními funkcemi použitými ve zdrojovém kódu.