Pagkakaiba sa pagitan ng Compiler at Assembler

May -Akda: Laura McKinney
Petsa Ng Paglikha: 1 Abril 2021
I -Update Ang Petsa: 11 Mayo 2024
Anonim
Архитектура ЭВМ | Основы Операционных Систем 04 | Ассемблер
Video.: Архитектура ЭВМ | Основы Операционных Систем 04 | Ассемблер

Nilalaman


Ang Compiler at Assembler ay gumaganap ng isang mahalagang papel sa pagpapatupad ng isang programa. Ang ilang mga tagagawa ay direktang bumubuo ng maipapatupad na code sa halip na pagpupulong ng code. Kinukuha ng tagatala ang preprocessed source code at isinalin ito sa code ng pagpupulong. Kinukuha ng assembler ang code ng pagpupulong mula sa tagatala at isinalin ito sa mai-relocatable machine code. Sa artikulong ito, napag-usapan ko ang mga pagkakaiba sa pagitan ng compiler at assembler sa tulong ng tsart ng paghahambing na ipinakita sa ibaba, tingnan lamang.

  1. Tsart ng paghahambing
  2. Kahulugan
  3. Pangunahing Pagkakaiba
  4. Konklusyon

Tsart ng paghahambing

Batayan para sa PaghahambingCompiler Assembler
PangunahingBumubuo ng code ng wika ng pagpupulong o direkta ng maipapatupad na code.Bumubuo ng relocatable machine code.
InputNaunang paunang mapagkukunan na code.Assembly code ng wika.
Mga phase / PassesAng mga phase compilation ay lexical analyzer, syntax analyzer, semantiko analyzer, intermediate code generation, code optimization, code generation.Ginagawa ng Assembler ang dalawang pagpasa sa ibinigay na input.
OutputAng pagpupulong code na nabuo ng compiler ay isang mnemonic na bersyon ng code ng makina.Ang mai-relocatable machine code na nabuo ng isang assembler ay kinakatawan ng binary code.


Kahulugan ng Compiler

Ang tagatala ay isang programang computer na nagbabasa ng programa na nakasulat sa isang mapagkukunan na wika, isinasalin ito sa katumbas wika ng pagpupulong at ipinapasa ang code ng wika ng pagpupulong sa Assembler. Habang ang pagsasalin ng source code sa pagpupulong code ay iniulat din ng tagatala ang error sa source code sa gumagamit nito.

Ang mga compiler ay inuri din bilang solong-pass, multi-pass, load-and-go, debugging at pag-optimize. Ginagawa ang pag-uuri batay sa kung ano ang function na ginagawa ng isang tagatala at kung paano ito itinayo. Sa kabila ng mga kumplikadong ito, ang pangunahing gawain ng tagatala ay nananatiling pareho.

Ang pagsasama ay isinasagawa sa dalawang bahagi, bahagi ng pagsusuri at bahagi ng synthesis. Ang bahagi ng pagsusuri sinisira ang source code sa mga piraso ng nasasakupan at bumubuo ng intermediate na representasyon ng source code. Ang bahagi ng synthesis form ng target code mula sa intermediate na representasyon.


Ang pagsasama ay isinasagawa sa mga sumusunod na phase:

Lexical analyzer, syntax analyzer, semantikong analyzer, intermediate code generator, code optimizer, code generator, Symbol table at error Handler.

  • Ang lexical analyzer binabasa ang mga character ng source code at pinagsama ang mga ito sa sapa ng mga token. Ang bawat token ay kumakatawan sa lohikal na pagkakasunud-sunod ng mga character tulad keyword, identifier, operator. Ang pagkakasunud-sunod ng character na bumubuo ng isang token ay tinatawag lexeme.
  • Ang syntax analyzer mga magulang ang token na nakuha mula sa lexical analyzer at mga token ng grupo sa isang hierarchical na istraktura.
  • Ang semantikong analista suriin ang source code para sa anumang error sa semantiko.
  • Intermediate code ng generator bumubuo ng intermediate na representasyon ng source code
  • Ang code Optimizer na-optimize ang intermediate code sa mas mabilis na tumatakbo na code ng machine.
  • Ang code ng generator sa wakas ay bumubuo ng target code na kung saan ay isang maaaring mai-relocatable machine code o isang code ng pagpupulong.
  • Ang simbolo ng talahanayan ay isang istraktura ng data na naglalaman ng talaan para sa bawat tagakilala sa source code.
  • Error handler nakita ang error sa bawat yugto at hawakan ang mga pagkakamali.

Kahulugan ng Assembler

Ang ilang mga tagagawa ay nagsasagawa ng gawain ng nagtitipon at direktang lumikha ng isang mai-relocatable machine code sa halip na pagpupulong ng code, na kung saan ay karagdagang direkta naipasa sa linker / loader. Ang nagtitipon tumatagal bilang input ang code ng pagpupulong na nabuo ng tagatala at isinalin ito maaaring mai-relocatable machine code.

Tingnan natin kung paano naiiba ang code ng makina mula sa code ng pagpupulong. Assembly code ay ang mnemonic bersyon ng code ng machine. Nangangahulugan ito na ang code ng pagpupulong ay gumagamit ng mga pangalan para sa kumakatawan sa mga operasyon at nagbibigay din ito ng mga pangalan sa mga address ng memorya. Sa kabilang banda, ang machine code gamit binary code para sa representasyon ng mga operasyon at mga memorya ng memorya.

Kahit na ang pinakasimpleng anyo ng nagtitipon ay gumaganap dalawang pass sa input. Ang unang pasa nakita ang lahat ng nagpapakilala sa pagpupulong code na nagsasaad ng lokasyon ng imbakan at iimbak ang mga ito sa simbolo ng talahanayan (maliban sa mga talahanayan ng simbolo ng compiler). Ang itinalaga ang lokasyon ng imbakan sa identifier na nakatagpo sa unang pass.

Nasa pangalawang pass, muling nai-scan ang input, at sa oras na ito operasyon code ay isinalin sa a pagkakasunud-sunod ng mga piraso na kumakatawan sa operasyon na iyon sa machine code. Isinasalin din ang pangalawang pass nagpapakilala papasok sa mga address tinukoy sa talahanayan ng simbolo. Sa gayon ang pangalawang pass ay bumubuo ng maaaring mai-relocatable machine code.

  1. Ang pangunahing pagkakaiba sa pagitan ng tagatala at nagtitipon ay ang tagatala bumubuo ng code ng pagpupulong at ang ilang mga compiler ay maaari ring direktang makabuo ng maipapatupad na code samantalang, ang nagtitipon bumubuo ng relocatable machine code.
  2. Tumatagal ang tagatala bilang input ng preprocessed code nabuo ng preprocessor. Sa kabilang banda, tumatagal ang nagtitipon pagpupulong code bilang input.
  3. Ang pag-iipon ay nagaganap sa dalawang yugto na yugto ng pagsusuri at yugto ng synthesis. Sa yugto ng pagsusuri, ang pagpasok ay dumadaan lexical analyzer, syntax analyzer, semantikong analyzer samantalang, ang pagsusuri ng synthesis ay nagaganap sa pamamagitan ng intermediate code generator, code optimizer, code generator. Sa kabilang banda, ipinapasa ng assembler ang input dalawang phase. Nakita ng unang yugto ang mga pagkakakilanlan at maraming mga address sa kanila sa ikalawang yugto ang code ng pagpupulong ay isinalin sa binary code.
  4. Ang pagpupulong code na nabuo ng tagatala ay isang bersyon ng mnemonic ng machine code. Gayunpaman, ang mai-relocatable machine code na nabuo ng assembler ay isang binary relocatable code.

Konklusyon:

Maaaring hindi kinakailangan ang tagapangalaga dahil ang ilang mga compiler ay direktang bumubuo ng maipapatupad na code. Kung ginagamit ang assembler ay nangangailangan ng linker upang mai-link ang lahat ng mga built-in na aklatan sa mga pag-andar ng aklatan na ginamit sa source code.