Strojna koda kot programski jezik. Asembler jezik
Jezik zbirke (ali zbiratelj) je nizek programski jezik za računalnik ali drugo programljivo strojno opremo, v kateri je korelacija med jezikom in navodilom kode arhitekture naprave. Vsak strojno usmerjen jezik (v strokovni terminologiji - "zbiralec") se nanaša na določeno računalniško arhitekturo. Nasprotno pa je večina programskih jezikov na visoki ravni navzkrižne platforme, vendar zahteva tolmačenje ali kompilacijo.
Vsebina
Platformo usmerjeno kodo lahko imenujemo tudi simbolni jezik ali niz navodil, ki jih CPU neposredno izvaja v računalniku. Vsak program, ki ga izvaja predelovalec, vsebuje vrsto navodil. Koda stroja je po definiciji najnižja raven programiranja, ki je vidna programerju.
Uporabi
Mnoge operacije zahtevajo enega ali več operandov, ki lahko sestavijo celotno navodilo, in mnogi sestavljavci lahko sprejmejo številčne izraze in konstante ter registri in oznake kot operande. To strokovnjak osvobodi, ko programira v strojnem kodnem jeziku od dolgočasnih ponavljajočih izračunov. Odvisno od arhitekture se ti elementi lahko kombinirajo tudi za specifična navodila ali naslavljanje načinov z uporabo offsetov ali drugih podatkov, kot tudi stalnih naslovov. Mnogi "zbiralci" ponujajo dodatne mehanizme za olajšanje razvoja programa, nadzor nad procesom gradnje in podporo odpravljanju napak.
Zgodovinska perspektiva
Prvi zbirni jezik je leta 1947 razvil Kathleen Booth za ARC2 v Birkbecku Londonska univerza v Ljubljani proces dela z Johnom von Neumann in Herman Goldstein na Inštitutu za napredne študije. Program SOAP (program Symbolic Optimal Assembly) je bil montažni jezik za IBM PC 650, ki ga je ustvaril Stan Pouley leta 1955.
V preteklosti so bile številne programske rešitve napisane le v zbiralcu. Operacijski sistem je bil napisan izključno v tem jeziku pred uvedbo Burroughs MCP (1961), ki je bil napisan v jeziku sistema za usmerjanje jezikov na področju sistemov (ESPOL). Veliko komercialnih aplikacij je bilo napisanih v strojno usmerjenem jeziku, vključno z velikim številom IBM-ovih glavnih računalnikov, ki so jih ustvarili IT velikani. COBOL in FORTRAN sta sčasoma izničila večino dogajanj, čeprav so številne velike organizacije v devetdesetih letih ohranile zbirko aplikacijskih infrastruktur.
Večina zgodnjih mikroračunalnikov je temeljila na sestavnem jeziku z ročnim kodiranjem, vključno z večino operacijskih sistemov in velikih aplikacij. To je posledica dejstva, da so ti stroji imeli resne omejitve virov, naložili posamezne pomnilnike in arhitekturo zaslona ter zagotovili omejene sistemske storitve z napakami. Morda je še pomembnejše pomanjkanje prvovrstnih visokokakovostnih prevajalnikov, primernih za uporabo v mikroračunalniku, zaradi česar je težje izvedeti strojno kodo.
Področje uporabe
Zbirni jeziki odpravljajo večino problematičnih, dolgočasnih in zamudnih programov v prvem generacijskem sestavu, ki so zahtevane na prvih računalnikih. To osvobodi programerje iz rutine v obliki pomnjenja številskih kod in izračunavanja naslovov. Na začetnih stopnjah so se "zbiralci" pogosto uporabljali za vse vrste programiranja. Vendar pa do konca osemdesetih let. njihovo uporabo so v veliki meri zamenjali jeziki višjih jezikov, in sicer v prizadevanjih za boljšo programsko učinkovitost. Danes se zbirni jezik še vedno uporablja za neposredno strojno manipulacijo, dostop do specializiranih navodil procesorja ali za reševanje kritičnih težav z zmogljivostjo. Tipične aplikacije so gonilniki naprav, vgrajeni sistemi na nižji ravni in parametri v realnem času.
Vzorci uporabe
Tipični primeri velikih zbirnih programov so operacijski sistemi IBM PC DOS, prevajalnik Turbo Pascal in zgodnje aplikacije, kot je program za preglednice Lotus 1-2-3.
Strojno usmerjen jezik je glavni razvojni jezik številnih priljubljenih domačih osebnih računalnikov iz 80-ih in 90-ih let (kot so MSX, Sinclair ZX Spectrum, Commodore 64, Commodore Amiga in Atari ST). To je posledica dejstva, da so razlagani BASIC dialogi o teh sistemih zagotavljali nizko hitrost izvajanja, pa tudi omejene možnosti za polno uporabo obstoječe opreme. Nekateri sistemi imajo celo integrirano razvojno okolje (IDE) z zelo razvitimi razhroščevalnimi in makro objekti. Nekateri prevajalniki, ki so bili na voljo za Radio Shack TRS-80 in njegovi nasledniki, so imeli možnost združiti vgrajeni vhodni sklop z visoko stopnjo programov. Po kompilaciji je vgrajeni zbiralnik ustvaril vgrajeno binarno kodo.
Oznaka stroja za lutke. Terminologija
Zbirni program ustvarja kode delovanja s prevajanjem kombinacij kombinacij in sintakse za operacije in naslove modusov v njihove numerične enakovredne. Ta prikaz običajno vključuje kodo delovanja, pa tudi druge kontrolne bitove in podatke. Asembler izračuna tudi konstantne izraze in določa simbolna imena za pomnilniške lokacije in druge predmete.
Kode strojev ukazi zbirnika lahko izvede tudi nekaj preprostih vrst optimizacije, odvisno od nabor ukazov. Eden od konkretnih primerov tega je lahko priljubljen "zbiralec" x86 različnih proizvajalcev. Večina jih lahko na zahtevo izvede spremembe ukaza shift v poljubnem številu prehodov. Prav tako lahko izvedejo preprosto preureditev ali vstavljanje navodil, kot so nekateri gradbeniki za RISC arhitekture, ki lahko pomagajo optimizirati inteligentno razporejanje ukazov, da bi povečali uporabo plinovoda CPU.
Podobno kot v zgodnjih programskih jezikih, kot so Fortran, Algol, Cobol in Lisp, so zbiralci na voljo že od petdesetih let prejšnjega stoletja kot prve generacije tekstovnih računalniških vmesnikov. Vendar pa so se zbiralci prvič pojavili, ker so veliko lažje pisati kot prevajalniki za jezike na visoki ravni. To je posledica dejstva, da so vsa mnemonična, kot tudi naslovni načini in operandi ukazov prevedeni v numerične predstavitve posameznega ukaza brez veliko konteksta ali analize. Obstajalo je tudi več razredov prevajalcev in polavtomatskih generatorjev kode, ki imajo podobne lastnosti, podobne obema sklopoma in visokim jezikom, koda hitrosti pa je lahko eden od najbolj znanih primerov.
Število prehodov
Obstajajo dve vrsti programiranja zbirnika, ki temelji na številu prehodov skozi vir (po številu poskusov branja), da ustvarite datoteko objekta.
Enosmerni sestavljavci enkrat preidejo skozi izvorno kodo. Vsak znak, ki je pred njim definiran, bo zahteval napako na koncu objektne kode.
Multipassni sestavljalniki ustvarjajo tabele z vsemi znaki in njihovimi vrednostmi v prvih odlomkih, nato pa uporabijo tabelo v naslednjih odlomkih, da ustvarite kodo.
Začetni razlog za uporabo enosmernih kolektorjev je bila hitrost montaže - pogosto je v drugem prehodu potrebno ponovno prebrati in ponovno prebrati vir programa na traku. Kasneje so računalniki z veliko večjo količino pomnilnika (še posebej za shranjevanje na disku) imeli prostor za izvedbo vse potrebne obdelave, ne da bi morali znova prebrati. Prednost multipassnega agregatorja je, da odsotnost napak vodi v dejstvo, da je postopek vezave (ali nalaganje programa, če sestavitelj neposredno ustvari izvedljivo kodo) hitrejši.
Kaj je binarna koda?
Program, zapisan v zbirnem jeziku, sestavlja vrsta mnemoničnih navodil za procesorje in meta-operaterje (znane kot direktive, psevdodatki in psevdo-operacije), komentarji in podatki. Navodila na zbirnem jeziku običajno obsegajo mnemonik operacijske kode. Sledi seznam podatkov, argumentov ali parametrov. Prevajalnik jih prevede v strojna jezikovna navodila, ki so naložena v pomnilnik in izvedena.
Na primer, naslednja izjava pove, da procesor x86 / IA-32 premakne 8-bitno vrednost v register. Binarna koda za ta ukaz je 10110, sledi ji 3-bitni identifikator, za katerega se uporablja register. Identifikator AL je 000, zato naslednja koda naloži AL-register s podatki 01100001.
Pojavlja se vprašanje: kaj je binarna koda? To je kodirni sistem, ki uporablja binarne številke "0" in "1", da predstavlja črk, številko ali drug simbol v računalniku ali drugi elektronski napravi.
Primer strojne kode: 10110000 01100001.
Tehnične značilnosti
Pretvorba zbirnega jezika v strojno kodo je angažirana naloga. Vzvratni postopek se izvaja z uporabo disassembler. Za razliko od jezikov na visoki ravni obstaja medsebojna korespondenca med nizom preprostih operaterjev za sestavljanje in navodili jezika stroja. Vendar pa lahko v nekaterih primerih zbiralec zagotovi psevdo-navodila (makre). Uporabljajo se za več navodil strojnega jezika, ki zagotavljajo pogosto potrebne funkcije. Večina celovitih sestavov ponuja tudi bogat makro jezik, ki ga uporabljajo prodajalci in programerji za ustvarjanje bolj zapletenih kod in podatkovnih sekvenc.
Vsaka računalniška arhitektura ima lasten strojni jezik. Računalniki se razlikujejo po številu in vrstah operacij, ki jih podpirajo, v različnih velikostih in številu registrov, pa tudi v predstavitvah podatkov v repozitoriju. Medtem ko lahko večina osebnih računalnikov s splošnim namenom opravlja skoraj enako funkcijo, se načini, na katere se to izvaja, razlikujejo. Ustrezni zbirni jeziki odražajo te razlike.
Veliko zbirk mnemonik ali sintaksa v zbiralcu lahko obstaja za en niz ukazov, ki se običajno ustvarijo v različnih programih. V teh primerih je najbolj priljubljen običajno tisti, ki ga zagotovi proizvajalec in se uporablja v njegovi dokumentaciji.
Jezik oblikovanja
Obstaja velika raznolikost v tem, kako avtorji zbiralcev razvrstijo aplikacije in nomenklaturo, ki jo uporabljajo. Nekateri opisujejo vse, kar se razlikuje od strojne ali razširjene mnemonike, kot psevdo-operacije. Slovar osnovnega sestavljanja je sestavljen iz ukaznega sistema - treh glavnih vrst navodil, ki se uporabljajo za definiranje operativnih programov:
- mnemonika opcode;
- opredelitve podatkov;
- direktive kolektorja.
Mnemonična opcode in razširjena mnemonika
Navodila, zapisana v zbirnem jeziku, so osnovna, za razliko od visokih jezikov. Praviloma je mnemonika (poljubni simboli) simbolična oznaka za eno izvedljivo kodno navodilo. Vsak ukaz običajno obsega opcode plus nič ali več operandov. Večina ukazov se nanaša na eno ali dve vrednosti.
Podaljšani mnemoniki se pogosto uporabljajo za specializirano delovanje navodil - za namene, ki niso očitni iz imena priročnika. Na primer, mnogi procesorji nimajo eksplicitne NOP navodila, vendar imajo vgrajene algoritme, ki se uporabljajo za ta namen.
Mnogi graditelji podpirajo osnovne vgrajene makre, ki lahko ustvarijo dve ali več strojnih navodil.
Podatkovne direktive
Obstajajo navodila za določanje elementov za shranjevanje podatkov in spremenljivk. Določajo vrsto podatkov, dolžino in poravnavo. Ta navodila lahko določijo tudi razpoložljivost informacij za zunanje programe (zbrane ločeno) ali samo za program, v katerem je določena podatkovna particija. Nekateri sestavljavci jih definirajo kot psevdo-operaterji.
Montažne direktive
Naslovi zbiralcev, imenovani tudi psevdokodi ali psevdo-operacije, so navodila, ki se dajo zbiralcu in jih usmerjajo za izvajanje drugih postopkov, kot so navodila za sestavljanje. Direktive vplivajo na sestavljanje in lahko vplivajo na objektno kodo, tabelo simbolov, datoteko s seznamom in vrednosti notranjega zbirnega parametra. Včasih je izraz psevdokoda rezerviran za direktive, ki ustvarjajo objektno kodo.
Imena psevdo-operacij se pogosto začnejo od točke, da se razlikujejo od navodil za stroj. Še ena pogosta uporaba psevdo-operacij je rezerviranje skladiščnih območij za podatke o časovnem času in morebiti za inicializacijo njihove vsebine na znane vrednosti.
Samodokonirajoča koda
Simbolni zbiralci omogočajo programerjem, da povezujejo poljubna imena (nalepke ali simbole) s pomnilniškimi celicami in različnimi konstantami. Pogosto je vsaka konstanta in spremenljivka dodeljena pravilno ime, zato se lahko navodila nanašajo na te lokacije po imenu, s čimer prispevajo k kodi samodokoniranja. V izvedljivi kodi je ime podprograma povezano z njegovo vstopno točko, zato lahko vsi klici na podprogram uporabljajo njegovo ime. V podprogramih so dodeljene oznake GOTO. Mnogi gradbeniki podpirajo lokalne znake, ki se leksično razlikujejo od navadnih znakov.
Sestavci tipa NASM zagotavljajo fleksibilno upravljanje z znaki, ki programerjem omogoča upravljanje različnih imenskih imen, samodejno izračunavanje nadomestil v podatkovnih strukturah in dodeljevanje oznak, ki referirajo na dobesedne vrednosti ali rezultat preprostih izračunov, ki jih izvaja zbiralec. Oznake se lahko uporabljajo tudi za inicializacijo konstant in spremenljivk, ki uporabljajo naslove gostovanja.
Asemblerji, tako kot večina drugih računalniških jezikov, vam omogočajo, da dodate komentarje k izvorni kodi programa, ki bo med postopkom gradnje prezrt. Sodno komentiranje je pomembno v programih zbirnih jezikov, saj je težko določiti in dodeliti zaporedje navodil za binarno napravo. "Unhandled" (brez komentarja) zbirnega jezika, ki so ga ustvarili prevajalniki ali razstavljavci, je težko brati, ko je treba narediti spremembe.
- Kaj je to - prevajalnik ali Kako narediti računalnik razumeti, kaj želite od njega?
- Java programski jezik
- Osnovni programski jezik in njena zgodovina
- Seznam programskih jezikov. Programski jeziki na nizki in visoki ravni
- Kako se naučiti programiranja iz nič v priljubljenih programskih jezikih
- Razširitve datotek za programske kode: cpp je kaj?
- Programiranje: asemblerski jezik. Osnove asemblerjevega jezika
- Python za začetnike
- Prevajalec je ... Vrste prevajalcev. Pretvarjanje in prevajanje programa
- Najbolj priljubljeni programski jeziki. Programski jeziki za začetnike
- Ocena programskih jezikov 2016
- Kaj je prevajalnik - opis
- Zgodovina razvoja programskih jezikov: na kratko o vsem
- Programski jezik c (s)
- Kaj je CPU?
- Kateri programski jezik naj izberem za začetnika za učenje
- Kompilacija je proces, ki omogoča komunikacijo med programerjem in računalnikom
- Najpreprostejši programski jezik za začetnike
- Kako napisati program v Notepad
- Kaj je programski sistem
- Razvrščanje programskih jezikov po ravneh