Разлика између компајлера и ассемблера

Аутор: Laura McKinney
Датум Стварања: 1 Април 2021
Ажурирати Датум: 12 Може 2024
Anonim
Архитектура ЭВМ | Основы Операционных Систем 04 | Ассемблер
Видео: Архитектура ЭВМ | Основы Операционных Систем 04 | Ассемблер

Садржај


Компајлер и Ассемблер играју важну улогу у извођењу програма. Неки преводиоци директно генеришу извршни код уместо скупа. Компајлер узима унапред обрађен изворни код и преводи га у склопни код. Састављач узима склопни код од преводиоца и преводи га у машински код који се може преместити. У овом сам чланку говорио о разликама између преводитеља и алата за склапање уз помоћ упоређене табеле која је приказана у наставку, само погледајте.

  1. Упоредни графикон
  2. Дефиниција
  3. Кључне разлике
  4. Закључак

Упоредни графикон

Основе за упоређивањеКомпајлер Ассемблер
ОсновниГенерише код језика монтаже или директно извршни код.Генерише шифру машине која се може померати.
УлазниПретходно обрађени изворни код.Код језика монтаже.
Фазе / пролазиФазе компилације су лексички анализатор, синтаксички анализатор, семантички анализатор, средње генерирање кода, оптимизација кода, генерисање кода.Ассемблер врши два пролаза преко датог улаза.
ИзлазКод за склапање генерисан од стране преводиоца је мнемолошка верзија машинског кода.Машински код који се може померати, генерисан од стране алата за слагање представљен је бинарним кодом.


Дефиниција компајлера

Тхе преводилац је рачунарски програм који чита програм написан изворним језиком, преводи га у еквивалент језик монтаже и прослеђује код језика језика монтаже на Ассемблер. Док је превод изворног кода у скупштински код, преводилац такође извештава о томе грешка у изворном коду свом кориснику.

Компајлери су такође класификовани као једноструки пролаз, вишеструки пролаз, учитавање и кретање, уклањање погрешака и оптимизација. Класификација се врши на основу функције коју компајлер обавља и како је конструисана. Упркос овим сложеностима, основни задатак преводиоца остаје исти.

Компилација се изводи у два дела, део анализе и синтезни део. Тхе део анализе разбија изворни код на саставне делове и формира интермедијарни приказ изворног кода. Тхе синтезни део формира циљни код из средњег представљања.


Компилација се врши у следећим фазама:

Лексички анализатор, анализатор синтаксе, семантички анализатор, генератор средњег кода, оптимизатор кода, генератор кода, Табела симбола и Руковалац грешкама.

  • Тхе лексички анализатор чита ликове изворног кода и групира их у токови жетона. Сваки токен представља логички низ знакова попут кључна реч, идентификатори, оператори. Позван је низ знакова који твори токен лексема.
  • Тхе синтак анализатор рашчлањује токен добијен од лексичког анализатора и групира ознаке у а хијерархијска структура.
  • Тхе семантички анализатор провјерава изворни код за било који семантичка грешка.
  • Генератор средњег кода генерише интермедијарно представљање изворног кода
  • Тхе Оптимизер кода оптимизује средњи код у бржи машински код.
  • Тхе Код генератора на крају генерише циљни код који је код машине за пресељење или код за монтажу.
  • Тхе таблица симбола је структура података која садржи запис за сваки идентификатор у изворном коду.
  • Погрешка руковаоца открива грешку у свакој фази и обрађује те грешке.

Дефиниција Ассемблера

Неки преводиоци извршавају задатак алата за склапање и директно генеришу машински код који се може преместити уместо скупа кода који се даље директно прослеђује у линкер / лоадер. Тхе асемблер као улаз узима код за склапање генерисан од стране преводиоца и преводи га у код машине за пресељење.

Да видимо како се машински код разликује од кода монтаже. Код монтаже је мнемонски верзија машинског кода. То значи да код за монтажу користи имена за представљање операција и чак даје имена меморијским адресама. Са друге стране машински код користи бинарни кодови за представљање операција и меморијских адреса.

Изводи чак и најједноставнији облик алата за склапање два пролаза преко улаза. Тхе први пролаз открива све идентификаторе у коду за склапање који означава локацију складишта и смешта их у таблица симбола (осим табеле симбола преводилаца). Тхе додељена је локација складишта на идентификатор који се нађе у првом пролазу.

У други пролаз, улаз се поново скенира, а овај пут оперативни код су преведено у а низ битова представљајући ту операцију у машинском коду. Други прелаз се такође преводи идентификаторе Инто тхе адресе дефинисано у табели симбола. Тако други пролаз генерише код машине за пресељење.

  1. Кључна разлика између преводилаца и алата за склапање је та преводилац генерише код за монтажу, а неки преводиоци могу директно генерисати извршни код, а, асемблер генерише машински код који се може померати.
  2. Компајлер узима као улаз унапред обрађени код генерисано од претпроцесора. Са друге стране, монтажер узима код монтаже као улаз.
  3. Компилација се одвија у две фазе које су фаза анализе и фаза синтезе. У фази анализе унос пролази лексички анализатор, синтаксички анализатор, семантички анализатор док се анализа синтезе одвија путем генератор средњег кода, алат за оптимизацију кода, генератор кода. С друге стране, монтажер пролази улаз две фазе. Прва фаза открива идентификаторе и додељује им адресе, а у другој фази се скупни код преводи у бинарни код.
  4. Код за склапање генерисан од стране преводиоца је а мнемонска верзија машинског кода. Међутим, машински код који се може померити генерисан од стране асемблера је бинарни код за пресељење.

Закључак:

Монтаж можда неће бити потребан, јер неки преводиоци директно генеришу извршни код. Ако се користи алата за монтирање, потребан је линкер за повезивање свих уграђених библиотека са функцијама библиотеке која се користи у изворном коду.