Jazyk sestavení (nebo assembler) je programovací jazyk nízkého stupně pro počítač nebo jiný programovatelný hardware, ve kterém existuje korelace mezi jazykovou a strojovou instrukcí. Každý strojově orientovaný jazyk (v odborné terminologii - "kolektor") odkazuje na specifickou počítačovou architekturu. Naopak, většina programovacích jazyků na vysoké úrovni je napříč platformou, ale vyžaduje interpretaci nebo kompilaci. Kód pro platformu lze také nazvat symbolickým jazykem nebo sadou pokynů, které provádí přímo centrální procesor počítače. Každý program prováděný procesorem se skládá ze série instrukcí. Kód stroje je podle definice nejnižší programovací program, který je pro programátor viditelný.
Použití
Pro mnoho transakcí je třeba jeden nebo více operandů může stavět plné instrukce, a mnoho assemblerы může mít výrazy čísel a konstanty a registrů a štítků operandy Tím se specialisté uvolní při programování v jazyce strojového kódu od únavných opakovaných výpočtů. V závislosti na architektuře mohou být tyto prvky také kombinovány pro specifické pokyny nebo režimy adresování pomocí posunů nebo jiných dat, stejně jako pevných adres. Mnoho "sběratelů" nabízí další mechanismy pro usnadnění vývoje programu, řízení procesu vytváření a udržování ladění.
Historical Perspective
První assembleru byl vyvinut v roce 1947 na Kathleen Booth PCO2 Byrkbekskom na University of London v práci John von Neumann a Hermann Holdstynom Institute for Advanced Studies. SOAP (Symbolic Optimal shromáždění Program) byl jazyk symbolických instrukcí pro počítač IBM 650 generované Stэnom pólu v roce 1955. Historicky, mnoho softwarových řešení byly psány v assembleru. OS zcela napsané v tomto jazyce Před zavedením Burroughs MCP (1961), který byl napsán v Executive Systems Problém Oriented Language (ESPOL). Velké množství komerčních aplikací byly psány ve strojovém jazyce orientovaných, včetně velkého množství software sálového počítače IBM, IT gigantů vytvořili. COBOL a FORTRAN nakonec nahrazené ve většině vývoje, i když mnoho velkých organizací udržel montážních aplikací infrastruktury v roce 1990.
Nejvíce časné mikropočítače byly založeny na jazyku symbolických instrukcí s manuální kódování, včetně většiny hlavních operačních systémů a aplikací. To je způsobeno tím, že tyto stroje mají závažné omezení zdrojů, naložené a individuální architekturu paměti displeje a poskytovat omezené systémové služby správně. Snad ještě důležitější byl nedostatek prvotřídních jazykových překladačů na vysoké úrovni, vhodné pro použití mikropočítače, což ztěžuje učení strojový kód.
Použití
Jazyky montáž eliminuje velkou část problému, dlouhý a namáhavý programování v assembleru první generace potřebná pro prvních počítačů. To je všechnouvolňuje programátory z rutiny ve formě ukládání číselných kódů a výpočtů adres. V úvodních fázích byly sběratelé široce používány pro všechny typy programování. Do konce osmdesátých let však jejich používání bylo převážně nahrazeno jazyky vyšší úrovně při hledání programování s vyšší produktivitou. Dnes se jazyk assembleru používá pro přímou manipulaci s hardwarem, přístup k speciálním instrukcím procesoru nebo k řešení kritických problémů s výkonem. Typickými aplikacemi jsou ovladače zařízení, nízkoúrovňové vestavěné systémy a nastavení v reálném čase.
Příklady aplikací
Typickými příklady větších programů v jazyce sestavení jazyka jsou operační systémy IBM PC DOS, kompilátor Turbo Pascal a časné aplikace, jako je program tabulkového procesoru Lotus 1-2-3.
Strojově orientovaný jazyk je hlavní vývojový jazyk mnoha populárních domácích počítačů z 80. a 90. let 20. století (MSX, Sinclair ZX Spectrum, Commodore 64 Commodore Amiga a Atari ST). To je způsobeno tím, že interpretované dialogy BASIC o těchto systémech poskytovaly nízkou rychlost provádění, stejně jako omezené možnosti pro plné využití stávajících zařízení. Některé systémy mají dokonce integrované vývojové prostředí (IDE) s vysoce vyvinutými ladicími nástroji a makro objekty. Některé kompilátory, které jsou k dispozici pro Radio Shack TRS-80 a jeho následovníky, dokázaly kombinovat vestavěný zdroj stahování s programy na vysoké úrovni. Po kompilaci vytvořil vestavěný assembler vestavěný binární kód.
Kód stroje pro figuríny. Terminologie
Program assembleru vytváří transakční kódy překladem kombinací mnemotechnických a syntaktických pravidel pro operace a způsoby adresování do jejich číselných ekvivalentů. Toto zobrazení obvykle zahrnuje operační kód, stejně jako další řídicí bity a data. Assembler také vypočítává konstantní výrazy a definuje jména znaků pro místa paměti a další objekty. Příkazy sestavy stroje mohou také provádět některé jednoduché typy optimalizace v závislosti na sadě příkazů. Jedním z konkrétních příkladů může být populární "sběratelé" x86 od různých dodavatelů. Většina z nich může na vyžádání provádět náhradní příkazy v libovolném počtu průchodů. také schopen provádět jednoduché přeskupení nebo vložení instrukce, například některé sběratele architektura RISC, které mohou přispět k optimalizaci zvuku plánovací týmy využívat dopravníkový CPU. Stejně jako první programovací jazyky, jako Fortran, Algol, COBOL a Lisp, kolektory jsou k dispozici od roku 1950 jako první generace počítačové rozhraní textu. Sběratelé však přišli nejprve, protože bylo mnohem snazší psát než kompilátory pro jazyky vysoké úrovně. To je způsobeno tím, že každý symbolických instrukcí a operandů adresování módy a instrukce přeložené do početní zastoupení jednotlivých instrukcí bez větších souvislostech nebo analýzy. Byla také řada tříd překladatelů a poloautomatických generátorů kódů s vlastnostmi podobnými sestavám ajako například vysokorychlostní a vysokorychlostní kód, je jedním z nejznámějších příkladů.
Počet průchodů
Existují dva typy programování v assembleru, založené na počtu průchodů zdroje (počet pokusů o čtení) k vytvoření souboru objektu.
Jeden-pass assemblers prochází zdrojovým kódem jednou. Jakýkoli znak použitý k jeho definování bude vyžadovat chybu na konci kódu objektu. multipass assemblerы vytvořit tabulku se všemi postavami a jejich hodnoty v prvním průchodu a pak použijte tabulku v těchto pasážích pro generování kódu. Prvotní důvod pro použití jednotlivých propustí kolektory byly shromažďování rychlost - druhá projít často požadovanou rychlou znovu a znovu zdrojový program na pásce. Pozdější počítače s velkým množstvím paměti (zejména pro ukládání disků) měly prostor k provedení veškerého potřebného zpracování bez opakovaného čtení. Mnohoprohodnoho montáž výhodou je, že nepřítomnost chyb vede k procesu vazby (nebo stahovat programy přímo v případě, že assembler generuje spustitelný kód) je možná.
Co je to binární kód?
Tento program je napsán v assembleru se skládá z řady mnemotechnické příkazového procesoru a meta-operátorů (známý jako směrnic, pokynů a pseudo-psevdooperatsyy), komentářů a dat. Pokyny pro montážní jazyk se obvykle skládají z operace mnemonického kódu. Následuje seznam dat, argumentů nebo parametrů. Jsoujsou přeloženy assemblerem v instrukcích jazyka stroje, které jsou načteny do paměti a provedeny. Například následující instrukce říká procesoru x86 /IA-32 přesunout 8bitovou hodnotu do registru. Binární kód pro tento příkaz je 10110, po němž následuje 3-bitový identifikátor, pro který je registr používán. Identifikátor AL je 000, takže následující kód načte AL registr s daty 01100001. Objeví se otázka: co je to binární kód? Jedná se o kódovací systém s binárními číslicemi "0" a "1", které reprezentují písmeno, číslo nebo jiný znak v počítači nebo jiném elektronickém zařízení. Příklad kódu stroje: 1011000001100001.
Technické vlastnosti
Převedení jazyka sestavy na kód stroje je úkolem montážní sestavy. Reverzní proces se provádí pomocí disassembleru. Na rozdíl od jazyků vysoké úrovně existuje vzájemná korespondence mezi množstvím jednoduchých operátorů sestav a pokyny jazyka stroje. V některých případech však může assembler poskytnout pseudoinstrukce (makra). Vztahují se na několik pokynů jazyka počítače, které poskytují běžně potřebnou funkci. Většina plnohodnotných instalátorů také poskytuje bohatý makroobsah, který používají dodavatelé a programátoři k vytváření komplexnějších kódů a datových sekvencí.
Každá počítačová architektura má svůj vlastní strojový jazyk. Počítače se liší v počtu a typech operací, které podporují, v různých velikostech a počtu registrů, stejně jako v prezentaci dat v úložišti. V tomzatímco většina počítačů s obecným účelem je schopna provádět prakticky tutéž funkcionalitu, způsoby, jakými se liší. Odpovídající jazyky assembleru odrážejí tyto rozdíly. Mnoho souborů mnemotechnických nebo syntaktických sestav může existovat pro jednu sadu příkazů obvykle vytvořených v různých programech. V těchto případech je nejpopulárnější zpravidla ten, který je poskytován výrobcem a používá se ve své dokumentaci.
Jazyk návrhu
Existuje značná rozmanitost v tom, jak autoři sběratelů klasifikují aplikace a nomenklaturu, kterou používají. Někteří zvlášť popisují vše, co se liší od stroje nebo rozšířené mnemotechnické operace jako pseudo-operace. Základní slovník kolekce se skládá ze systému příkazů - tří hlavních typů instrukcí používaných k určení programových operací:
mnemotechnická opcode;
stanovení údajů;
Příručka pro sběratele.
Mnemonický opkód a rozšířená mnemotechnická
Pokyny psané v jazyce assembleru jsou elementární, na rozdíl od jazyků vysoké úrovně. Typicky mnemotechnické (náhodné symboly) jsou symbolem jednoho příkazu spustitelného kódu. Každý příkaz obvykle sestává z operačního kódu plus nula nebo více operandů. Většina příkazů se týká jedné nebo dvou hodnot. Rozšířené mnemonika se nejčastěji používá pro specializované instrukční příručky pro účely, které nejsou zřejmé z názvu manuálu. Například mnoho procesorů nemá explicitní instrukci NOP, ale mávložené algoritmy, které jsou k tomuto účelu použity.
Mnoho sběratelů podporuje základní vestavěné makra, které mohou generovat dva nebo více strojů.
Datové směrnice
Existují pokyny pro identifikaci prvků pro ukládání dat a proměnných. Určují typ dat, délku a zarovnání. Tyto pokyny mohou určit dostupnost informací pro externí programy (shromažďované samostatně) nebo pouze pro aplikaci, která má definovanou část dat. Někteří sestavovatelé je definují jako pseudo-operátory.
Směrové směrnice
Pravidla sestavování, nazývaná také pseudokódy nebo pseudo-operace, jsou příkazy poskytované assemblerem a směřují je k jiným operacím než k montážním instrukcím. Směry ovlivňují práci assembleru a mohou ovlivnit kód objektu, tabulku symbolů, výpis souborů a hodnotu parametrů interního assembleru. Někdy je termín pseudokód vyhrazen pro směrnice, které generují objektový kód. Názvy pseudo-operací se často začínají v určitém bodě lišit od strojních příkazů. Dalším běžným používáním pseudooperací je rezervace oblastí pro ukládání dat za běhu a případné inicializace jejich obsahu na známé hodnoty.
Samodokumentovaný kód
Sestavovatel symbolů umožňuje programátorům přiřadit libovolná jména (štítky nebo symboly) s paměťovými buňkami a různými konstantami. Často je každá konstantní proměnná a proměnná přidělena vlastní jméno,takže instrukce může odkazovat se na těchto místech podle jména, čímž samodokumentyruyuschemu kód. V každém název spustitelného kódu podprogramu odkazuje na svou vstupní bod, takže jakýkoli volá podprogram mohou používat své jméno. V rámci podprogramů jsou přiřazeny štítky GOTO. Mnoho sběratelů podporuje místní znaky, které jsou lexikálně odlišné od obyčejných znaků. Assemblerы typ NASM poskytuje flexibilní řídicí znaky, umožňuje programátorům řídit různé jmenné prostory automaticky vypočítat posun v datových struktur a přiřadit štítky, které odkazují na lyteralnыe hodnotu nebo výsledek jednoduchých výpočtů provedených sestavě. Klávesové zkratky lze také použít k inicializaci konstant a proměnných s pohyblivými adresami. Sestava jazyk, stejně jako většina jiných počítačových jazyků, můžete přidat poznámky do zdrojového kódu, které mají být v průběhu procesu sestavování ignorovány. Trial komentář je důležité v assembleru programů, protože definice a účel binární posloupnost strojových instrukcí je obtížné určit. „Hrubý“ (no comment) assembleru, kompilátoru nebo vytvořené disassembler, je obtížné číst, když je potřeba provést změny.