Assembler a kompilator
Ogólnie rzecz biorąc, kompilator to program komputerowy, który odczytuje program napisany w jednym języku, zwanym językiem źródłowym, i tłumaczy go na inny język, zwany językiem docelowym. Tradycyjnie język źródłowy był językiem wysokiego poziomu, takim jak C++, a język docelowy był językiem niskiego poziomu, takim jak Asembler. Istnieją jednak kompilatory, które mogą konwertować program źródłowy napisany w języku asemblera i konwertować go na kod maszynowy lub kod obiektowy. Takimi narzędziami są asemblery. Tak więc zarówno asemblery, jak i kompilatory ostatecznie tworzą kod, który można bezpośrednio wykonać na maszynie.
Co to jest kompilator?
Kompilator to program komputerowy, który odczytuje program napisany w jednym języku, zwanym językiem źródłowym, i tłumaczy go na inny język, zwany językiem docelowym. Najczęściej językiem źródłowym jest język wysokiego poziomu, a językiem docelowym jest język niskiego poziomu. Tak więc ogólnie kompilatory mogą być postrzegane jako tłumacze, którzy tłumaczą z jednego języka na inny. Ponadto kompilatory przeprowadzają pewne optymalizacje kodu. Typowy kompilator składa się z kilku głównych komponentów. Pierwszym elementem jest skaner (znany również jako analizator leksykalny). Scanner odczytuje program i konwertuje go na ciąg tokenów. Drugim składnikiem jest parser. Konwertuje ciąg tokenów do drzewa parsowania (lub abstrakcyjnego drzewa składni), które przechwytuje strukturę składniową programu. Kolejnym elementem są procedury semantyczne, które interpretują semantykę struktury syntaktycznej. Po tym następują optymalizacje kodu i końcowe generowanie kodu.
Co to jest asembler?
Assembler to oprogramowanie lub narzędzie, które tłumaczy język asemblera na kod maszynowy. Tak więc asembler jest rodzajem kompilatora, a kod źródłowy jest napisany w języku asemblera. Asembler jest językiem czytelnym dla człowieka, ale zazwyczaj ma związek jeden do jednego z odpowiednim kodem maszynowym. Dlatego mówi się, że asembler wykonuje translację izomorficzną (mapowanie jeden do jednego). Zaawansowane asemblery zapewniają dodatkowe funkcje, które wspierają procesy rozwoju i debugowania programów. Na przykład typ asemblerów zwanych asemblerami makr zapewnia funkcję makr.
Jaka jest różnica między asemblerem a kompilatorem?
Kompilator to program komputerowy, który czyta program napisany w jednym języku i tłumaczy go na inny język, podczas gdy asembler może być uważany za specjalny rodzaj kompilatora, który tłumaczy tylko język asemblera na kod maszynowy. Kompilatory zwykle produkują kod wykonywalny maszynowo bezpośrednio z języka wysokiego poziomu, ale asemblery tworzą kod wynikowy, który może wymagać połączenia za pomocą programów konsolidujących, aby mógł działać na maszynie. Ponieważ język asemblera ma mapowanie jeden do jednego z kodem maszynowym, asembler może być używany do tworzenia kodu, który działa bardzo wydajnie w sytuacjach, w których wydajność jest bardzo ważna (np. dla silników graficznych, systemów wbudowanych z ograniczonymi zasobami sprzętowymi w porównaniu z komputerem osobistym jak kuchenki mikrofalowe, pralki itp.)