nisfarm.ru

Kód stroje jako programovací jazyk. Jazyk assembleru

assembleru (nebo montáž) je programovací jazyk low-level do počítače nebo jiného programovatelného zařízení, ve kterém existuje korelace mezi jazykem a strojového kódu instrukční architektury. Každý strojově orientovaný jazyk (v odborné terminologii - "sběratel") odkazuje na specifickou počítačovou architekturu. Naproti tomu většina programovacích jazyků na vysoké úrovni je napříč platformou, ale vyžaduje interpretaci nebo kompilaci.

Platformový kód lze také nazvat symbolickým jazykem nebo sadou instrukcí, které jsou prováděny přímo CPU 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ý.strojový kód

Použijte

Mnoho operací vyžaduje jeden nebo více operandů schopných sestavit kompletní instrukci a mnozí sestavovatelé mohou přijímat číselné výrazy a konstanty a registry a štítky jako operandy. Tím se osvobozuje odborník při programování v jazyce kódovacího stroje od únavných opakovaných výpočtů. V závislosti na architektuře mohou být tyto prvky také kombinovány pro specifické instrukce nebo režimy adresování pomocí offsetů nebo jiných dat, stejně jako pevných adres. Mnoho "sběratelů" nabízí další mechanismy, které usnadňují vývoj programu, řídí proces vytváření a podporují ladění.

Historická perspektiva

První assembler jazyk byl vyvinut v roce 1947 Kathleen Booth pro ARC2 v Birkbeck Londýnská univerzita v Londýně proces práce s Johnem von Neumann a Herman Goldstein v Institutu pokročilých studií. Program SOAP (Symbolický optimální montáž) byl montážní jazyk pro IBM PC 650, vytvořil Stan Pouley v roce 1955.

Historicky bylo mnoho softwarových řešení napsáno pouze v assembleru. Operační systém byl napsán výlučně v tomto jazyce před zavedením Burroughs MCP (1961), který byl napsán v jazyce ESPOL. Mnoho komerčních aplikací bylo napsáno v strojově orientovaném jazyce, včetně velkého množství softwaru IBM mainframe vytvořeného IT giganty. COBOL a FORTRAN nakonec vyčerpali většinu vývoje, ačkoli mnoho velkých organizací si v devadesátých letech zachovalo aplikační infrastruktury založené na montáži.co je binární kód

Většina raných mikropočítačů byla založena na jazyku sestavení s manuálním kódováním, včetně většiny OS a velkých aplikací. To je způsobeno skutečností, že tyto stroje měly vážná omezení prostředků, načtela individuální paměť a architekturu zobrazení a poskytovala omezené systémové služby s chybami. Možná je důležitější nedostatek prvotřídních jazykových překladačů na vysoké úrovni vhodných pro použití v mikropočítačích, což ztěžuje učení se strojnímu kódu.

Rozsah aplikace

Montážní jazyky odstraňují většinu problematických, zdlouhavých a časově náročných programů v sestavách první generace vyžadovaných na nejstarších počítačích. To uvolňuje programátory z běžné práce formou 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 80. let. jejich aplikace byla do značné míry nahrazena jazyky vyšší úrovně při hledání lepšího programového výkonu. Dnes se jazyk assembleru stále 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 parametry v reálném čase.

Vzorky aplikace

Typickými příklady velkých assemblerových programů 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.kódů transakcí




Strojově orientovaný jazyk je hlavním vývojovým jazykem 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 a makro objekty. Někteří překladatelé, kteří jsou k dispozici pro Radio Shack TRS-80 a jeho nástupci, měli možnost kombinovat vestavěnou zdrojovou sestavu 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áří operační kódy překladem mnemonických kombinací a syntaktických pravidel pro operace a způsoby adresování do jejich číselných ekvivalentů. Toto zobrazení typicky zahrnuje kód operace, stejně jako další ovládací bity a data. Assembler také vypočítá konstantní výrazy a definuje symbolická jména pro paměťová místa a další objekty.

Kódy strojů příkazy assembleru může 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 změny řazení příkazů v libovolném počtu průchodů. Je také schopen vykonávat jednoduché přeskupení nebo vkládání instrukcí, jako jsou některé sběratele architekturách RISC stroje, které mohou přispět k optimalizaci plánování týmy zvuku s cílem maximalizovat využití CPU potrubí.

Stejně jako první programovací jazyky, jako Fortran, Algol, COBOL a Lisp, kolektory jsou k dispozici od roku 1950, jako první generace text-rozhraní počítače. Sběratelé se objevili jako první, protože jsou mnohem jednodušší psát než překladače pro jazyky vysoké úrovně. To je způsobeno skutečností, že každý mnemotechnický režim, stejně jako adresovací režim a instrukční operandy jsou překládány do číselných reprezentací každé jednotlivé instrukce bez velkého kontextu nebo analýzy. Také počet tříd byla přeložena a semi kódové generátory s vlastnostmi podobnými obou sestav, a jazyk na vysoké úrovni, rychlost kód je možná jeden 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 (v počtu čtení pokusů) vytvořit soubor objektu.

počítačový jazykJednofázové sestavovače jednou procházejí zdrojovým kódem. Jakýkoli znak použitý před jeho definicí bude vyžadovat chybu na konci kódu objektu.
Multipass assemblers vytvoří tabulky se všemi znaky a jejich hodnoty v prvních pasážích a pak použije tabulku v následujících pasážích pro generování kódu.

Počátečním důvodem použití jednoprůchodových kolektorů byla rychlost montáže - často vyžadovalo druhé převíjení a opětovné čtení zdroje programu na pásku. Pozdější počítače s mnohem větší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í, aniž by museli číst znovu. Výhodou multipass assembleru je, že absence chyb vede k tomu, že proces vazby (nebo načtení programu, pokud assembler přímo vytvoří spustitelný kód) je rychlejší.

Co je to binární kód?

Program napsaný v jazyce sestavení sestává z řady mnemotechnických instrukcí procesoru a meta-operátorů (známých jako směrnice, pseudoinstrukce a pseudo-operace), komentářů a dat. Pokyny týkající se jazyka assembleru se obvykle skládají z mnemotechnického kódu. Následuje seznam dat, argumentů nebo parametrů. Překladá je assemblerem do instrukcí jazyka stroje, které jsou načteny do paměti a provedeny.

Například následující prohlášení říká procesoru x86 / IA-32 k přesunutí 8bitové hodnoty do registru. Binární kód pro tento příkaz je 10110, za ním následuje 3-bitový identifikátor, pro který je použit registr. Identifikátor AL je 000, takže následující kód načte AL registr s daty 01100001.

Vyvstává 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ý symbol v počítači nebo jiném elektronickém zařízení.

Příklad kódu stroje: 10110000 01100001.

Technické vlastnosti

Převedení jazyka sestavy na kód stroje je úkol assembleru. Reverzní proces se provádí pomocí disassembleru. Na rozdíl od jazyků vysoké úrovně existuje vzájemná korespondence mezi sadou 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řebné funkce. Většina plnohodnotných instalátorů také poskytuje bohatý jazyk maker, který využívají dodavatelé a programátoři k vytváření komplexnějších kódů a datových sekvencí.montážní programování

Každá architektura počítače má svůj vlastní strojový jazyk. Počítače se vyznačují počtem a druhy operací, které podporují, v různých velikostech a počtu registrů a také v reprezentacích dat v úložišti. Zatímco většina univerzálních počítačů může pracovat téměř se stejnou funkčností, způsoby, jakým se to liší, se liší. Odpovídající jazyky assembleru odrážejí tyto rozdíly.

Mnoho množin mnemotechnických nebo syntaxů v assembleru může existovat pro jednu sadu příkazů, obvykle vytvořených v různých programech. V těchto případech je nejoblíbenější obvykle ten, který poskytuje výrobce a používá se ve své dokumentaci.

Jazyk designu

Existuje značná rozmanitost v tom, jak autoři sběratelů klasifikují aplikace a nomenklaturu, kterou používají. Zejména někteří popisují vše, co se liší od stroje nebo rozšířených mnemonik, jako pseudo-operace. Základní montážní slovník se skládá z příkazového systému - tří hlavních typů instrukcí, které se používají k definování programových operací:

  • mnemonika opcodu;
  • definice dat;
  • směrnice sběratele.

Mnemonický opkód a rozšířená mnemonika

Pokyny napsané v assemblerovém jazyce jsou základní, na rozdíl od jazyků vysoké úrovně. Zpravidla jsou mnemonika (libovolné symboly) symbolickým označením pro jednu spustitelnou kódovou instrukci. Každý příkaz obvykle sestává z opcode plus nula nebo více operandů. Většina příkazů se týká jedné nebo dvou hodnot.

Rozšířené mnemonika se často používají pro specializovaný provoz instrukcí - pro účely, které nejsou zřejmé z názvu manuálu. Například mnoho procesorů nemá explicitní instrukci NOP, ale mají zabudované algoritmy, které se k tomuto účelu používají.platforma-orientovaný kód

Mnoho stavitelů podporuje základní vestavěná makra, která mohou generovat dva nebo více strojů.

Směrnice o datech

Existují pokyny používané k definování prvků pro ukládání dat a proměnných. Určují typ dat, délku a zarovnání. Tyto pokyny mohou také určit dostupnost informací pro externí programy (shromažďované samostatně) nebo pouze pro program, ve kterém je definován datový oddíl. Někteří sestavovatelé je definují jako pseudo-operátory.

Směrnice o shromáždění

Sběratelské směrnice, nazývané také pseudokody nebo pseudo-operace, jsou instrukcemi poskytnutými assembleru a směřují jej k provádění jiných než montážních pokynů. Směrnic ovlivňují montážní práci a mohou ovlivnit kód objektu, symbolovou tabulku, soubor výpisu a interní hodnoty parametru assembleru. Někdy je termín pseudokód vyhrazen pro směrnice, které generují objektový kód.

Názvy pseudooperací často začínají od určitého bodu, aby se lišily od pokynů stroje. Dalším běžným používáním pseudooperací je vyhrazení paměťových prostorů pro data běhu a případné inicializace jejich obsahu na známé hodnoty.systém příkazů

Samodokumentující kód

Symbolické sestavovače umožňují programátorům přidružit libovolná jména (štítky nebo symboly) s paměťovými buňkami a různými konstantami. Často je každá konstanta a proměnná přiřazena vlastním jménem, ​​takže pokyny mohou odkazovat na tato místa jménem, ​​čímž přispívají k autokokumentačnímu kódu. V spustitelném kódu se název kteréhokoli podprogramu vztahuje k jeho vstupnímu bodu, takže všechny volání podprogramu mohou používat jeho název. V rámci podprogramů jsou přiřazeny štítky GOTO. Mnoho stavitelů podporuje místní znaky, které jsou lexikálně odlišné od obyčejných znaků.

Nasm typu montéři poskytují flexibilní správu symbol, který umožňuje programátorům spravovat různé jmenné prostory, automaticky vypočítá posun v datových strukturách a přiřadit štítky, které odkazují na doslovné hodnoty nebo v důsledku jednoduchých výpočtů provedených assembler. Štítky lze také použít k inicializaci konstant a proměnných pomocí roamingových adres.

Asembler jazyky, jako většina ostatních počítačových jazyků, vám umožní přidat komentáře ke zdrojovému kódu programu, který bude během procesu sestavení ignorován. Soudní komentování je důležité v programech assembleru, protože je obtížné určit a přiřadit sekvenci pokynů pro binární stroj. Jazyk assembleru "neošetřený" (bez komentářů), vytvořený překladateli nebo demontážními členy, je obtížné číst, když je třeba provést změny.

Sdílet na sociálních sítích:

Podobné
© 2021 nisfarm.ru