Šifra stroja kao programskog jezika. Skupština jezika
Jezik montaže (ili sastavljač) je programski jezik niske razine za računalo ili drugi programabilni hardver, u kojem postoji korelacija između jezika i uputa šifre arhitekture stroja. Svaki strojno orijentirani jezik (u profesionalnoj terminologiji - "kolektor") odnosi se na specifičnu računalnu arhitekturu. Nasuprot tome, većina programskih jezika na visokoj razini je cross-platforma, ali zahtijeva tumačenje ili kompilaciju.
sadržaj
Kôd usmjeren na platformu može se također nazvati simboličkim jezikom ili skupom uputa koje izvršava izravno CPU računala. Svaki program koji izvršava procesor sastoji se od niza uputa. Kôd stroja po definiciji je najniža razina programiranja vidljiva programeru.
korištenje
Mnoge operacije zahtijevaju jedan ili više operandi sposobnih za izgradnju kompletne upute, a mnogi sastavitelji mogu prihvatiti brojčane izraze i konstante, te registre i naljepnice kao operande. To oslobađa stručnjaka prilikom programiranja u jeziku stroja stroja od dosadnih ponavljajućih izračuna. Ovisno o arhitekturi, ti se elementi mogu kombinirati i za specifične upute ili načina rada adresiranja pomoću odstupanja ili drugih podataka, kao i fiksnih adresa. Mnogi "kolektori" nude dodatne mehanizme koji olakšavaju razvoj programa, kontroliraju proces izgradnje i podržavaju uklanjanje pogrešaka.
Povijesna perspektiva
Prvi sastavni jezik razvio je 1947. Kathleen Booth za ARC2 u Birkbecku Sveučilište u Londonu u Zagrebu proces suradnje s Ivanom von Neumann i Herman Goldstein na Institutu za napredne studije. SOAP (Symbolic Optimal Assembly Assembly) bio je jezik montaže za IBM PC 650, stvorio ga je Stan Pouley 1955.
Povijesno gledano, mnoga softverska rješenja pisana su samo u montažeru. OS je napisan isključivo na ovom jeziku prije uvođenja Burroughs MCP (1961), koji je napisan na jeziku ESPOL-a (Executive Systems Problem Oriented Language). Mnoge su komercijalne aplikacije napisane strojno orijentiranim jezikom, uključujući veliki broj IBM glavnog računala, kojeg su stvorili IT giganti. COBOL i FORTRAN naposljetku su napunili većinu razvoja, premda su mnoge velike organizacije zadržale aplikacijske infrastrukture zasnovane na montaži devedesetih godina.
Većina ranih mikro računala rade na jeziku montaže s ručnim kodiranjem, uključujući većinu operativnih sustava i velikih aplikacija. To je zbog činjenice da su ti strojevi imali ozbiljna ograničenja resursa, učitali pojedinačnu memoriju i arhitekturu zaslona te pružali ograničene usluge sustava s pogreškama. Možda je važnije nedostatak prvoklasnih jezičnih kompilera visoke razine pogodnih za uporabu u mikro računalima, što je otežavalo naučiti strojni kod.
Opseg primjene
Skupštinski jezici uklanjaju veći dio problematičnog, zamornog i dugotrajnog programiranja u montažama prve generacije koji su potrebni na najranijim računalima. To oslobađa programere iz rutine u obliku memoriranja numeričkih kodova i izračunavanja adresa. U početnim fazama, "kolektori" su bili široko korišteni za sve vrste programiranja. Međutim, do kraja 1980-ih. njihova je aplikacija u velikoj mjeri zamijenjena jezicima višeg nivoa u potrazi za poboljšanom izvedbom programiranja. Danas se sastavni jezik koristi i za izravnu manipulaciju hardverom, pristup specijaliziranim procesorskim uputama ili za rješavanje kritičnih problema s performansama. Tipične aplikacije su upravljački programi uređaja, ugrađeni sustavi niske razine i parametri u realnom vremenu.
Uzorci primjene
Tipični primjeri velikih montažerskih programa su IBM PC DOS operativni sustavi, kompajleri Turbo Pascal i rane aplikacije, kao što je Lotus 1-2-3 program za proračunske tablice.
Strojno orijentirani jezik glavni je razvojni jezik za mnoga popularna kućna računala iz 1980-ih i 1990-ih (kao što su MSX, Sinclair ZX Spectrum, Commodore 64, Commodore Amiga i Atari ST). To je zbog činjenice da tumačeni BASIC dijalozi na tim sustavima pružaju nisku brzinu izvršenja, kao i ograničene mogućnosti za potpunu iskorištenost postojeće opreme. Neki sustavi čak imaju i integrirano razvojno okruženje (IDE) s visoko razvijenim debugging i makro objektima. Neki kompilatori dostupni za Radio Shack TRS-80 i njegovi nasljednici imali su sposobnost kombiniranja ugrađenog sklopa izvora s programima visoke razine. Nakon kompilacije ugrađeni skener stvorio je ugrađeni binarnu šifru.
Šifra stroja za lutke. terminologija
Skupljački program stvara operacijske kodove prevodeći mnemoničke kombinacije i sintakse pravila za operacije i načine adresiranja u njihove numeričke ekvivalente. Ovaj prikaz obično uključuje operacijski kod, kao i druge kontrolne bitove i podatke. Assembler također izračunava konstantne izraze i definira simbolična imena za memorijske lokacije i druge objekte.
Strojni kodovi montažerske naredbe također može izvesti neke jednostavne vrste optimizacije, ovisno o skupu naredbi. Jedan od konkretnih primjera toga može biti popularni "kolekcionari" x86 različitih proizvođača. Većina od njih može izvršiti promjenu naredbi za pomak u bilo kojem broju prolaza, na zahtjev. Također su u mogućnosti izvršiti jednostavnu preraspodjelu ili umetanje uputa, kao što su neki graditelji za RISC arhitekture, koji mogu pomoći u optimizaciji inteligentnog raspoređivanja naredbi kako bi se povećala upotreba procesnog cjevovoda.
Slično ranijim programskim jezicima kao što su Fortran, Algol, Cobol i Lisp, kolekcionari su dostupni još od pedesetih godina prošlog stoljeća, kao i prve generacije računalnih sučelja temeljenih na tekstu. Međutim, prvi su se pojavili kolekcionari, jer su puno lakši za pisanje od sastavljača za jezike visoke razine. To je zbog činjenice da su svaka mnemonička, kao i način adresiranja i operandi upućivanja prevedeni u numeričke prikaze svake pojedine instrukcije bez mnogo konteksta ili analize. Bilo je također i niz klasa prevoditelja i poluautomatskih generatora koda sa svojstvima sličnima oba sklopa i jezika na visokoj razini, a broj brzine može biti jedan od najpoznatijih primjera.
Broj prolaza
Postoje dvije vrste programiranja u asembleru na temelju broja prolaza kroz izvora (u broju pokušaja čitanja) za stvaranje objekata datoteku.
Jednoprolazni sklopitelji prolaze kroz izvorni kod jednom. Bilo koji znak koji se koristi prije nego što bude definiran, zahtijevat će pogreške na kraju koda objekta.
Skupljači višeputnika stvaraju tablice sa svim znakovima i njihovim vrijednostima u prvom prolazu, a zatim primjenjuju tablicu u sljedećim odlomcima kako bi generirali kôd.
Početni razlog korištenja jednoprolaznih kolektora bio je brzina montaže - često je drugi prolaz zahtijevao premotavanje i ponovno čitanje izvora programa na vrpci. Kasnije računala s mnogo veće količine memorije (posebno za pohranu diska) imale su prostora za obavljanje sve potrebne obrade bez ponovnog čitanja. Prednost višeplatnog montažera je da nedostatak pogrešaka dovodi do činjenice da je postupak vezivanja (ili učitavanje programa, ako skener izravno stvara izvršni kod) brži.
Što je binarni kod?
Program napisan u montažnom jeziku sastoji se od niza mnemoničkih procesorskih uputa i meta operatora (poznatih kao direktivi, pseudo-upute i pseudo-operacije), komentari i podaci. Upute o montažerskom jeziku obično se sastoje od mnemoničkog kodeksa rada. Slijedi popis podataka, argumenata ili parametara. Skupljač ih prevodi u upute stroja koji se učitavaju u memoriju i izvršavaju.
Na primjer, sljedeća izjava govori da procesor x86 / IA-32 pomakne 8-bitnu vrijednost u registar. Binarni kod za ovu naredbu je 10110, nakon čega slijedi 3-bitni identifikator za koji se koristi registar. ID AL je 000, tako da sljedeći kod učitava AL registar s podacima 01100001.
Postavlja se pitanje: što je binarni kod? Ovo je sustav kodiranja koji koristi binarne znamenke "0" i "1" da predstavlja slovo, broj ili drugi simbol na računalu ili drugom elektroničkom uređaju.
Primjer stroja: 10110000 01100001.
Tehničke značajke
Pretvaranje jezika montaže u strojni kod je skupni zadatak. Preokrenuti postupak se izvodi pomoću rastavljača. Za razliku od jezika na visokoj razini, postoji korespondencija između skupa jednostavnih montažnih operatera i uputama strojnog jezika. Međutim, u nekim slučajevima asembler može pružiti pseudo-upute (makronaredbe). Primjenjuju se na nekoliko instrukcija jezika stroja kako bi se osigurala uobičajena funkcionalnost. Većina sastavljača s punim funkcijama također osigurava bogat makro jezik, koji koriste dobavljači i programeri za generiranje složenijih kodova i sljedova podataka.
Svaka računalna arhitektura ima svoj strojni jezik. Računala se razlikuju po broju i vrstama operacija koje podržavaju, u različitim veličinama i broju registara, kao i na prikazima podataka u repozitoriju. Dok većina računala opće namjene mogu obavljati gotovo iste funkcije, načine na koje to rade razlikuju se. Odgovarajući jezici sastavljača odražavaju te razlike.
Veći broj kompleta Mnemotehnika ili asembler sintakse mogu postojati za jedan skup instrukcija obično se proizvodi u različitim programima. U tim slučajevima, najpopularniji je obično onaj koji je dobiven od proizvođača, a koristi se u svojoj dokumentaciji.
Jezik dizajna
Postoji velika razlika u načinu na koji autori kolektora klasificiraju aplikacije i nomenklaturu koju koriste. Naročito, neki opisuju sve što se razlikuje od stroja ili proširene mnemoteke, kao pseudo-operacije. Osnovni sastavni rječnik sastoji se od naredbenog sustava - tri glavne vrste uputa koje se koriste za definiranje programskih operacija:
- mnemotehnika opkoda;
- definicije podataka;
- direktive kolekcionara.
Mnemonički opkod i prošireni mnemotehnici
Naputci napisani u montažnom jeziku su osnovni, za razliku od jezika na visokoj razini. U pravilu, mnemotehnici (proizvoljni simboli) simbolički su nazivi za jednu izvršnu kodnu instrukciju. Svaka naredba obično se sastoji od opcode plus nula ili više operandi. Većina naredbi odnosi se na jednu ili dvije vrijednosti.
Proširene mnemoteke često se koriste za specijalizirano rukovanje uputama - za svrhe koje nisu vidljive iz naziva priručnika. Na primjer, mnogi procesori nemaju eksplicitnu NOP uputu, ali imaju ugrađene algoritme koji se koriste za tu svrhu.
Mnogi graditelji podržavaju osnovne ugrađene makronaredbe koje mogu generirati dvije ili više uputa stroja.
Upute o podacima
Postoje upute za definiranje elemenata za pohranu podataka i varijabli. Određuju vrstu, dužinu i poravnanje podataka. Te upute također mogu odrediti dostupnost informacija za vanjske programe (prikupljene zasebno) ili samo za program u kojem je definirana particija podataka. Neki skupljači ih definiraju kao pseudo-operateri.
Smjernice o gradnji
monter direktiva, koji se nazivaju pseudo-ops ili pseudokod, naredbe su pod uvjetom da asembler, a vodi ga da obavlja druge poslove od uputama za montažu. Direktiva utjecati na rad sklopa i može utjecati na objektni kod, simbol stol, popis datoteka i vrijednosti parametara unutarnjeg sklopa. Ponekad pojam pseudokod je rezerviran za direktive koje generiraju objektni kod.
Nazivi pseudo-operacija često počinju od točke kako bi se razlikovali od uputa stroja. Druga uobičajena upotreba pseudooperativnih operacija je rezerviranje prostora za pohranu podataka za vrijeme izvođenja i eventualno inicijalizaciju sadržaja poznatim vrijednostima.
Kôd samo-dokumentiranja
Simbolski montažeri omogućuju programerima povezivanje proizvoljnih imena (oznaka ili simbola) s memorijskim ćelijama i različitim konstantama. Često se svaka konstanta i varijabla dodjeljuju pravilnom nazivu, tako da se upute mogu upućivati na te lokacije po imenu, čime pridonosi samoodređenom kodu. U izvršnom kodu, naziv bilo kojeg potprogramja povezan je s njegovom ulaznom točkom, tako da svaki poziv na potprogram može koristiti svoje ime. Unutar potprogramiranja dodjeljuju se oznake GOTO. Mnogi graditelji podržavaju lokalne znakove koji su leksički različiti od običnih znakova.
NASM tipa sastavljači pružaju fleksibilno upravljanje simbol, omogućujući programerima da upravljaju različitim imenskom prostoru, automatski izračunati pomak u strukturama podataka i dodijeliti oznake koje se odnose na doslovne vrijednosti ili rezultat jednostavne izračune obavlja asembler. Oznake se također mogu koristiti za inicijalizaciju konstanti i varijabli upotrebom roaming adresa.
Skupinski jezici, poput većine drugih računalnih jezika, omogućuju dodavanje komentara izvornom kodu programa koji će se zanemariti tijekom postupka izrade. Pravni komentar je važan u skupnim jezičnim programima, jer je teško odrediti i dodijeliti niz binarnih uputa stroja. "Nezadovoljavajuće" (bez komentirajućeg) montažerskog jezika, koje su stvorili sastavljači ili rastavljači, teško je pročitati kada je potrebno napraviti izmjene.
- Što je to - prevodilac, ili Kako napraviti računalo razumjeti ono što želite od njega?
- Što je Ruby? Programski jezik "Ruby"
- Računalni programski jezici: vrste, opis, primjena i povratne informacije
- Programiranje: Assembler jezik. Osnove Assemblerovog jezika
- Je li mu košulja bliža tijelu? Ruski kao strani jezik
- Najpopularniji programski jezici. Programski jezici za početnike
- Ocjena programskih jezika 2016
- Što je kompilator - opis
- Povijest razvoja programskih jezika: ukratko o svemu
- Programski jezik c (s)
- Skriptni programski jezici: zadaci, značajke i prednosti
- Što je proceduralno programiranje?
- Što je CPU?
- Skupljanje je proces koji olakšava komunikaciju između programera i računala
- Uvjetna izgradnja. Python: prostranost i jednostavnost jezika
- Značenje i upotreba jаvascript neispravnog
- Značenje i upotreba jаvascript neispravnog
- Najlakši programski jezik za početnike
- Kako napisati program u Notepad
- Što je programski sustav
- Razvrstavanje programskih jezika prema razinama