Mašīnkods kā programmēšanas valoda. Montāžas valoda

Datori

Montāžas valoda (vai montētājs) irZema līmeņa programmēšanas valoda datoram vai citai programmējamai iekārtai, kurā ir saistība starp valodu un mašīnbūves koda norādījumiem. Katra orientēta uz mašīnu valoda (profesionālā terminoloģijā - "savācējs") attiecas uz konkrētu datora arhitektūru. Turpretī lielākā daļa augsta līmeņa programmēšanas valodu ir savstarpēji platformas, taču tām ir nepieciešama interpretācija vai apkopošana.

Var būt arī platformas orientētais kodszvaniet simbolisku valodu vai instrukciju kopumu, ko tieši izpilda datora CPU. Katra procesora izpildītā programma sastāv no virknes instrukciju. Iekārtas kods pēc definīcijas ir programmētājs redzams zemākais programmēšanas līmenis.

mašīnu kods

Izmantojiet

Daudzām operācijām ir nepieciešams viens vai vairākioperandi, kas spēj uzbūvēt pilnīgu instrukciju, un daudzi montētāji var pieņemt skaitļu un konstantes izteiksmes, kā arī reģistrus un apzīmējumus kā operandus. Tas atbrīvo ekspertu, programmējot mašīntelpu valodu no garlaicīgiem atkārtojošiem aprēķiniem. Atkarībā no arhitektūras, šos elementus var kombinēt arī ar īpašiem norādījumiem vai adreses veidiem, izmantojot kompensācijas vai citus datus, kā arī fiksētās adreses. Daudzi "kolekcionāri" piedāvā papildu mehānismus, lai atvieglotu programmas izstrādi, kontrolētu būvniecības procesu un atbalstītu atkļūdošanu.

Vēsturiskā perspektīva

Pirmā montāžas valoda tika izstrādāta 1947. gadāKathleen Booth ARC2 pie Birkbeck Londonas Universitātes procesā, strādājot ar John von Neumann un Hermana Goldstein pie Institute for Advanced Study. SOAP (Symbolic Optimal Assembly Program) bija IBM 650 PC montāžas valoda, kuru 1955. gadā izveidoja Stan Pouley.

Vēsturiski daudzi programmatūras risinājumi ir bijuširakstīts tikai montāžā. Operētājsistēma tika ierakstīta tikai šajā valodā pirms Burroughs MCP (1961) ieviešanas, kas tika uzrakstīts Executive Systems Problem Oriented Language (ESPOL) valodā. Daudzi komerciālie lietojumprogrammas tika rakstīti mašīnrakstīšanas valodā, ieskaitot lielu skaitu IBM lieldatoru programmatūras, ko izveidojuši IT giganti. COBOL un FORTRAN galu galā izsvieda lielāko daļu notikumu, lai gan daudzas lielas organizācijas 90. gados saglabāja kompleksu balstītas lietojumprogrammu infrastruktūras.

kas ir binārs kods

Lielākā daļa no agrīnajiem mikrodatoriem bija pamatāmontāžas valodā ar manuālu kodējumu, ieskaitot lielāko daļu operētājsistēmu un plaša mēroga lietojumprogrammas. Tas ir saistīts ar faktu, ka šīm mašīnām bija ievērojami ierobežoti resursi, ielādēta atsevišķa atmiņa un displeja arhitektūra, kā arī tika nodrošināti ierobežoti sistēmas pakalpojumi ar kļūdām. Iespējams, ka vēl svarīgāk bija tādu pirmklasīgu, augsta līmeņa valodu kompilatoru trūkums, kas būtu piemēroti lietošanai mikrodatorā un kas apgrūtināja mācību datora kodu.

Piemērošanas joma

Montāžas valodas novērš lielāko daļu problēmu,garlaicīgs un laikietilpīgs programmēšana pirmās paaudzes montētājiem, kas nepieciešami agrākajos datoros. Tas atbrīvo programmētājus no ierakstīšanas ciparu kodu kodēšanas un adrešu aprēķināšanas kārtības. Sākotnējos posmos "montētāji" tika plaši izmantoti visu veidu programmām. Tomēr līdz astoņdesmito gadu beigām. to izmantošana lielā mērā ir aizstāta ar augstākā līmeņa valodām, lai uzlabotu programmēšanas veiktspēju. Šodien montāžas valodu joprojām izmanto, lai veiktu tiešas aparatūras manipulācijas, piekļūtu specializētām procesora instrukcijām vai risinātu kritiskās veiktspējas problēmas. Tipiski lietojumprogrammas ietver ierīces draiverus, zemas iegultās sistēmas un reāllaika parametrus.

Piemērošanas paraugi

Tipiski lielu programmu piemēri montāžas valodā ir IBM PC DOS operētājsistēmas, Turbo Pascal kompilators un agrīnās programmas, piemēram, Lotus 1-2-3 izklājlapu programma.

darbības kodi

Iekārtas orientēta valoda - pamatskolas valodadaudziem populāriem mājas datoriem 1980. un 1990. gados (piemēram, MSX, Sinclair ZX Spectrum, Commodore 64, Commodore Amiga un Atari ST). Tas ir saistīts ar faktu, ka interpretētie BASIC dialogi par šīm sistēmām nodrošina zemu izpildes ātrumu, kā arī ierobežotas iespējas pilnībā izmantot esošo aprīkojumu. Dažām sistēmām pat ir integrēta izstrādes vide (IDE) ar augsti attīstītajiem atkļūdošanas rīkiem un makroobjektiem. Daži kompilatori, kas pieejami Radio Shack TRS-80 un tā pēctečiem, bija iespēja apvienot iebūvēto veidņu avotu ar augsta līmeņa programmām. Pēc apkopošanas inline assembler izveidoja inline bināro kodu.

Manekenu kods manekeniem. Terminoloģija

Montāžas programma izveido darbības kodus līdzmnemonisko un sintaktisko noteikumu tulkošana operācijām un režīmu risināšanai to ciparu ekvivalentos. Šis attēlojums parasti ietver operācijas kodu, kā arī citus kontroles bitus un datus. Montētājs aprēķina arī nemainīgas izteiksmes un definē simboliskos nosaukumus atmiņas vietām un citiem objektiem.

Arī montāžas mašīnu instrukciju kodiveikt dažus vienkāršus optimizācijas veidus atkarībā no komandu kopas. Viens konkrēts piemērs tam varētu būt populārs x86 "kolekcionārs" no dažādiem pārdevējiem. Lielākā daļa no tām var veikt aizstāšanas pārejas komandas jebkurā daudzumā, pēc pieprasījuma. Tas spēj arī veikt vienkāršu instrukciju pārgrupēšanu vai ievietošanu, piemēram, dažus RISC arhitektu montētājus, kas var palīdzēt optimizēt intelektuālu komandu plānošanu, lai maksimāli izmantotu CPU cauruļvadu.

Tāpat kā agrās programmēšanas valodas, piemēram,Fortran, Algol, Cobol un Lisp, montētāji ir pieejami kopš 20. gadsimta 50. gadiem, tāpat kā pirmās paaudzes teksta datora saskarnes. Tomēr kolekcionāri vispirms parādījās, jo tos ir daudz vieglāk rakstīt nekā augsta līmeņa valodu kompilatori. Tas ir saistīts ar faktu, ka katrs mnemoniskais, kā arī adreses režīms un instrukciju operandi tiek tulkoti katras konkrētās instrukcijas skaitliskos attēlojumos bez liela konteksta vai analīzes. Tika arī vairākas klases tulkotāju un pusautomātisko koda ģeneratoru ar īpašībām, kas līdzīgas abiem komplektiem un augsta līmeņa valodām, un ātruma kods, iespējams, ir viens no vispazīstamākajiem piemēriem.

Pārskaitījumu skaits

Komponētājā ir divu programmēšanas veidu veidi, kuru pamatā ir caurlaide caur avotu (pēc mēģinājumu skaita), lai izveidotu objekta failu.

mašīnas valoda
Viena caurlaide montētāji vienu reizi pārlūko pirmkodu. Jebkuram rakstzīmei, kas izmantots pirms tā definīcijas, objektkoda beigās būs nepieciešami kļūdas.
Multi-pass mezgliņi izveido tabulas ar visām rakstzīmēm un to vērtībām pirmajās ietvertās, un pēc tam tabulā izmanto nākamās ejas, lai ģenerētu kodu.

Sākotnējais lietošanas iemeslsvienfāzes kolektoriem bija montāžas ātrums - bieži otrā caurlaide vajadzīga pārtīšanas un atkārtotas lasīšanas programmas avota uz lentu. Vēlāk datori ar daudz lielāku atmiņas apjomu (it īpaši disku glabāšanai) bija spējīgi veikt visu nepieciešamo apstrādi, neveicot atkārtotu lasīšanu. Multi-pass assembler priekšrocība ir tāda, ka kļūdu trūkums noved pie tā, ka saistošais process (vai programmas ielāde, ja montētājs tieši izveido izpildāmo kodu) ir ātrāks.

Kas ir binārs kods?

Programma, kas rakstīta montāžas valodāsastāv no virknes procesoru mnemonisko norādījumu un meta-operatoru (pazīstams kā direktīvas, pseidokonstrukcijas un pseidopropi), komentāri un dati. Montāžas valodas instrukcijas parasti sastāv no opcode mnemonisks. Tam seko datu, argumentu vai parametru saraksts. Tie tiek pārveidoti aparatūras valodas instrukcijās, ko montāžnieks ir ievietojis atmiņā un izpildīts.

Piemēram, norādījumi zemāk stāstax86 / IA-32 procesors pārvieto 8 bitu vērtību, lai reģistrētos. Šīs komandas binārais kods ir 10110, kam seko 3 bitu identifikators, kuram tiek izmantots reģistrs. AL identifikators ir 000, tādēļ šis kods ielādē AL reģistru ar datiem 01100001.

Rodas jautājums: kas ir binārs kods? Šī ir kodēšanas sistēma, kurā bināri cipari "0" un "1" ir rakstīti ar burtu, ciparu vai citu simbolu datorā vai citā elektroniskā ierīcē.

Piemērs mašīnu kods: 10110000 01100001.

Tehniskās iespējas

Montāžas valodas pārveidošana uz mašīnas kodu irmontāžas darbs. Apgrieztais process tiek veikts, izmantojot disassembler. Atšķirībā no augstā līmeņa valodām pastāv vienkārša vienošanās operatoru un instrukciju mašīntulkošanai atbilstība. Tomēr dažos gadījumos montētājs var nodrošināt pseidonīmus (makro). Tie aptver vairākas mašīnas valodas instrukcijas, lai nodrošinātu nepieciešamo funkcionalitāti. Lielākā daļa pilna Featured montētāji arī nodrošina bagātu makro valodu, ko izmanto pārdevēji un programmētāji, lai radītu sarežģītākus datu kodus un secības.

programmēšana montāžas valodā

Katrai datora arhitektūrai ir savssava mašīntelpa. Datori atšķiras ar to darbību skaitu un veidiem, ko tās atbalsta, dažādos izmēros un reģistru skaitā, kā arī datu repozitīvos repozitorijā. Kaut arī lielākā daļa universālo datoru spēj izpildīt gandrīz tādu pašu funkcionalitāti, tās darbības veidi ir atšķirīgi. Attiecīgās montāžas valodas atspoguļo šīs atšķirības.

Daudzi mnemonikas vai sintakses komplektimontāžas valoda var pastāvēt vienai komandu kopai, ko parasti veido dažādās programmās. Šādos gadījumos vispopulārākais parasti ir tas, ko ražotājs ir iesniedzis un izmanto dokumentācijā.

Dizaina valoda

Šajā ziņā ir liela daudzveidībakā autori, kolekcionāri klasificē lietojumus un nomenklatūru, ko tie izmanto. Jo īpaši daži apraksta visu, kas atšķiras no mašīnas vai paplašinātas mnemonikas, piemēram, pseidooperāciju. Kompleksa pamatelementi sastāv no komandu sistēmas - trīs galvenie instrukciju tipi, ko izmanto programmatūras operāciju definēšanai:

  • opcode mnemonisks;
  • datu definīcijas;
  • kolektoru direktīvas.

Opcode mnemonika un paplašināta mnemonika

Instrukcijas, kas rakstītas montāžas valodāatšķirībā no augstā līmeņa valodām. Parasti mnemonika (patvaļīgas rakstzīmes) ir viena izpildāmā koda instrukcijas simbols. Katrā instrukcijā parasti ir opcode plus nulle vai vairāk operandu. Lielākā daļa komandu attiecas uz vienu vai divām vērtībām.

Parasti tiek izmantotas paplašinātas mnemonikasspecializēta instrukciju ekspluatācija - mērķiem, kas nav skaidri redzami no rokasgrāmatas nosaukuma. Piemēram, daudziem procesoriem nav skaidras NOP instrukcijas, bet tiem ir iebūvēti algoritmi, kas tiek izmantoti šim nolūkam.

platformu orientēta kods

Daudzi kolekcionāri atbalsta elementārus iegultu makro, kas var ģenerēt divas vai vairāk mašīnas instrukcijas.

Datu direktīvas

Ir izmantoti norādījumivienību definīcijas datu un mainīgo lielumu saglabāšanai. Tie nosaka datu veidu, garumu un izlīdzināšanu. Šīs instrukcijas var arī noteikt informācijas pieejamību ārējām programmām (savākt atsevišķi) vai tikai tām programmām, kurās ir definēta datu sadaļa. Daži montētāji tos definē kā pseido-operatorus.

Asamblejas direktīvas

Savākšanas direktīvas, ko sauc arī par pseidokodesvai pseido-ops, ir komandas, kas tiek sniegtas montētājam un tiek veltītas tam, lai veiktu darbības, kas nav montāžas instrukcijas. Direktīvas ietekmē montāžas darbu un var ietekmēt objekta kodu, simbolu tabulu, ierakstu failu un iekšējā montētāja parametru vērtības. Dažreiz termins pseudocode ir rezervēts direktīvām, kas ģenerē objektkodu.

Pseido-ops vārdi bieži sākas ar punktu,atšķirties no mašīnistu komandām. Vēl viena izplatīta pseidopropu izmantošana ir rezerves datu saglabāšana reāllaika datiem un, iespējams, satura sākotnējā satura noteikšana līdz zināmām vērtībām.

komandu sistēma

Pašdokumentācijas kods

Rakstzīmju montētāji ļauj programmētājiemsaistīt patvaļīgus vārdus (tagus vai rakstzīmes) ar atmiņas šūnām un dažādām konstantēm. Bieži vien katrai nemainīgai vērtībai un mainīgajam ir piešķirts pats nosaukums, tādēļ norādes var norādīt uz šīm atrašanās vietām pēc nosaukuma, tādējādi veicinot pašdokumentācijas kodu. Izpildes kodā jebkura apakšprogrammas nosaukums atbilst tā ievades punktam, tādēļ visi zvani uz apakšprogrammu var izmantot tā nosaukumu. Rutīnas iekšienē tiek piešķirtas etiķetes GOTO. Daudzi kolekcionāri atbalsta vietējās rakstzīmes, kas leksiski atšķiras no parastajām rakstzīmēm.

NASM montētāji nodrošina elastīgumurakstzīmju pārvaldība, kas ļauj programmētājiem pārvaldīt dažādas nosaukumu telpas, automātiski aprēķina kompensācijas datu struktūrās un piešķir etiķetes, kas atsaucas uz burtiem vai vienkāršu aprēķinu rezultātu, ko veic montētājs. Īsceļus var izmantot arī, lai inicializētu konstantes un mainīgos, izmantojot relocatable adreses.

Montāžas valodas, tāpat kā vairumā citu valoduDators ļauj pievienot komentārus programmas avota kodam, kas būvprojekta laikā tiks ignorēts. Tiesību komentēšana ir svarīga asamblejas programmās, jo bināro mašīnu instrukciju secības definīciju un mērķi ir grūti noteikt. "Neattīrīta" (bez komentēšanas) sastādītāju vai demontāžnieku izveidotās montāžas valodas ir diezgan grūti izlasīt, kad jāveic izmaiņas.