Sklopni jezik (ili asembler) je programski jezik niske razine za računalo ili drugi programabilni hardver, u kojem postoji korelacija između jezika i arhitekture strojnih kodova. Svaki strojno orijentirani jezik (u stručnoj terminologiji - "kolektor") odnosi se na specifičnu arhitekturu računala. Naprotiv, većina programskih jezika na visokoj razini su cross-platform, ali zahtijevaju interpretaciju ili kompilaciju. Kôd orijentiran na platformu može se također nazvati simboličnim jezikom ili skupom uputa koje izvršava izravno središnji procesor računala. Svaki program koji izvršava procesor sastoji se od niza uputa. Strojni kod je po definiciji najniža razina programiranja vidljiva programeru.
Upotreba
Povijesna perspektiva
Područje primjene
Strojni kod za lutke. Terminologija
Naredbe sklopa strojeva također mogu izvesti neke jednostavne vrste optimizacije, ovisno o skupu naredbi. Jedan specifičan primjer za to mogu biti popularni "kolektori" x86 različitih proizvođača. Većina njih može na zahtjev izvršiti zamjenske naredbe u bilo kojem broju prolaza. Oni su također u mogućnosti izvršiti jednostavnu pregrupiranje ili umetanje uputa, kao što su neki RISC kolektori, što može pomoći optimizirati inteligentno planiranje naredbi kako bi se maksimalno iskoristio CPU transporter. Poput ranih programskih jezika kao što su Fortran, Algol, Cobol i Lisp, kolekcionari su dostupni od 1950-ih, kao i prva generacija tekstualnih računalnih sučelja. Međutim, prvi su sakupljači došli jer su mnogo lakše pisali nego kompilatori za jezike visoke razine. To je zbog činjenice da se svaki mnemonički, kao i načini adresiranja i operandi instrukcija prevedu u numeričke prikaze svake pojedine instrukcije bez velikog konteksta ili analize. Postojali su i brojni razredi prevoditelja i poluautomatskih generatora koda sa svojstvima sličnim skupovima ikao što je kodiranje na visokoj razini i kod velike brzine, možda je jedan od najpoznatijih primjera.
Broj prolaza
Višestruki sastavljači kreiraju tablice sa svim znakovima i njihovim vrijednostima u prvim odlomcima, a zatim primjenjuju tablicu u sljedećim odlomcima za generiranje koda. Početni razlog za korištenje jedno-propusnih kolektora bila je brzina prikupljanja - često je drugi prolaz zahtijevao premotavanje i ponovno čitanje izvora programa na vrpci. Kasnija računala s ogromnom količinom memorije (posebno za pohranu diskova) imala su prostor za obavljanje svih potrebnih obrada bez ponovnog čitanja. Prednost multi-pass sklopa je u tome što odsutnost pogrešaka dovodi do činjenice da proces vezanja (ili preuzimanje programa, ako asembler izravno stvara izvršni kod) prolazi brže.
Što je binarni kod? Program pisan na jeziku asemblera sastoji se od niza mnemoničkih naredbi procesora i meta-operatora (poznatih kao direktive, pseudo-upute i pseudo-operacije), komentara i podataka. Upute za asemblerski jezik obično se sastoje od operacije mnemoničkog koda. Slijedi popis podataka, argumenata ili parametara. Oni jesupreveo ih je asembler u uputama strojnog jezika, koje su učitane u memoriju i izvršene. Na primjer, sljedeća naredba govori x86 /IA-32 procesoru da premjesti 8-bitnu vrijednost u registar. Binarni kod za ovu naredbu je 10110, a zatim 3-bitni identifikator za koji se koristi registar. Identifikator AL je 000, tako da sljedeći kod učitava AL registar podacima 01100001. Postavlja se pitanje: što je binarni kod? To je sustav kodiranja koji koristi binarne znamenke "0" i "1" za predstavljanje slova, broja ili drugog znaka na računalu ili drugom elektroničkom uređaju. Primjer strojnog koda: 1011000001100001.
Tehničke značajke
Svaka arhitektura računala 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 iu prikazu podataka u spremištu. U tomedok je većina računala opće namjene sposobna obavljati gotovo istu funkcionalnost, načini na koje se oni razlikuju. Odgovarajući jezici asemblera odražavaju te razlike. Za skup skupa naredbi koje se obično stvaraju u različitim programima mogu postojati mnogi skupovi sklopova mnemoničkih ili sintaksnih skupova. U tim slučajevima, najpopularniji je, u pravilu, onaj koji je osigurao proizvođač i koji se koristi u njegovoj dokumentaciji.
Postoji velika raznolikost u načinu na koji autori kolekcionara klasificiraju aplikacije i nomenklaturu koju koriste. Posebice, neki opisuju sve što se razlikuje od stroja ili prošireno mnemoničko kao pseudo-operacija. Osnovni rječnik zbirke sastoji se od sustava naredbi - tri glavne vrste instrukcija koje se koriste za određivanje operacija programa:mnemonički opcode; određivanje podataka; Vodič za kolekcionare.
Upute napisane na jeziku asemblera su elementarne, za razliku od jezika visoke razine. Tipično, mnemonički (slučajni simboli) je simbol za jednu naredbu izvršnog koda. Svaka naredba obično se sastoji od koda operacije plus nula ili više operanada. Većina naredbi odnosi se na jednu ili dvije vrijednosti. Prošireni mnemonici najčešće se koriste za specijalizirane priručnike za uporabu u svrhe koje nisu očigledne iz naziva priručnika. Na primjer, mnogi procesori nemaju eksplicitnu NOP instrukciju, ali imajuugrađeni algoritmi koji se koriste u tu svrhu.
Jezik dizajna
Mnemonički opcode i prošireni mnemonički
Mnogi kolektori podržavaju elementarne ugrađene makroe koji mogu generirati dvije ili više strojnih uputa.
Postoje upute za identifikaciju elemenata za pohranjivanje podataka i varijabli. Oni određuju vrstu podataka, dužinu i poravnanje. Ove upute mogu odrediti dostupnost informacija za vanjske programe (prikupljene odvojeno) ili samo za aplikaciju koja ima definiran odjeljak s podacima. Neki asembleri ih definiraju kao pseudo-operatore.
Pravila montaže, koja se nazivaju i pseudokode ili pseudo-operacije, su naredbe koje daje asembler i usmjeravaju ih na operacije koje nisu upute za montažu. Smjernice utječu na rad asemblera i mogu utjecati na objektni kod, tablicu simbola, popis datoteka i vrijednost parametara unutarnjeg asemblera. Ponekad je izraz pseudokoda rezerviran za direktive koje generiraju objektni kod. Imena pseudo-operacija često počinju u nekoj točki koja se razlikuje od strojnih naredbi. Još jedna uobičajena upotreba pseudo-operacija je rezerviranje područja za pohranu podataka za vrijeme izvođenja i moguće inicijalizacija njihovog sadržaja na poznate vrijednosti.
Sklopači simbola omogućuju programerima povezivanje proizvoljnih imena (oznaka ili simbola) s memorijskim stanicama i različitim konstantama. Često se svakoj konstantnoj varijabli i varijabli dodjeljuje vlastito ime,tako da se upute mogu odnositi na ta mjesta po imenu, čime se olakšava samok dokumentiranje. U izvršnom kodu, ime bilo kojeg potprograma odgovara njegovoj ulaznoj točki, tako da svi pozivi u potprogramu mogu koristiti njegovo ime. Unutar potprograma dodijeljene su oznake GOTO. Mnogi kolekcionari podržavaju lokalne znakove koji su leksički različiti od običnih znakova. Skupljači poput NASM-a pružaju fleksibilno upravljanje znakovima, omogućujući programerima da upravljaju različitim prostorima imena, automatski izračunavaju odstupanja u podatkovnim strukturama i dodjeljuju oznake koje se odnose na doslovne vrijednosti ili rezultat jednostavnih kalkulacija koje izvodi asembler. Prečaci se također mogu koristiti za inicijaliziranje konstanti i varijabli s pomičnim adresama. Jezici za montažu, kao i većina drugih računalnih jezika, omogućuju vam dodavanje komentara izvornom kodu programa koji će biti zanemareni tijekom procesa izrade. Pravosudni komentari su važni u jezičnim programima za asemblere, jer je definiranje i dodjeljivanje niza binarnih strojnih naredbi teško definirati. "Neupravljani" (bez komentara) asemblerski jezik, stvoren kompilatorima ili disasemblerima, teško je pročitati kada je potrebno napraviti promjene.