Članek bo obravnaval osnove jezika sestavljanja v povezavi z arhitekturo win32. Gre za simbolni zapis strojnih kod. V vsakem elektronskem računalniku je najnižja raven strojna oprema. Tukaj procesi potekajo z navodili ali navodili v strojnem jeziku. Na tem področju naj bi sestavljal deloval.
Pisanje programa v zbirniku je izjemno težaven in drag postopek. Za ustvarjanje učinkovitega algoritma potrebujete poglobljeno razumevanje delovanja računalnika, poznavanje podrobnosti ukazov ter večjo pozornost in natančnost. Učinkovitost je kritičen parameter za programiranje v asemblerju.
Glavna prednost jezika sestavljalca je, da vam omogoča ustvarjanje kratkih in hitrih programov. Zato se praviloma uporablja za reševanje specializiranih problemov. Potrebujete kodo, ki učinkovito deluje s komponentami strojne opreme, ali pa potrebujete program, ki zahteva pomnilnik ali čas izvajanja.
Registri v jeziku sestavljavca se imenujejo pomnilniške celice, ki se nahajajo neposredno na čipu z ALU (procesorjem). Značilnost te vrste pomnilnika je hitrost dostopa do nje, ki je veliko hitrejša od RAM-a računalnika. Imenuje se tudi ultra-fast RAM (PopS ali SRAM).
Obstajajo naslednje vrste registrov:
Obstaja 8 splošnih registrov, vsakih 32 bitov.
Registri EAX, ECX, EDX, EBX so dostopni v 32-bitnem, 16-bitnem - AX, BX, CX, DX in 8-bitnem - AH in AL, BH in BL, itd.
Črka "E" v imenih registrov pomeni razširjeno (podaljšano). Imena so povezana z njihovimi imeni v angleščini:
Specializacija RON asemblerski jezik je pogojno. Uporabljajo se lahko v vseh operacijah. Vendar pa lahko nekateri ukazi uporabljajo samo določene registre. Na primer, ukazi z zanko uporabljajo ESX za shranjevanje vrednosti števca.
Register zastav. To pomeni bajt, ki lahko sprejme vrednosti 0 in 1. Kombinacija vseh zastavic (jih je okoli 30) prikazuje stanje procesorja. Primeri zastav: Carry Flag (CF) - Oznaka nosilca, Zastavica zastave (OF) - preliv, Ugnezdena zastava (NT) - zastavica za gnezdenje nalog in mnoge druge. Zastave so razdeljene v 3 skupine: status, upravljanje in sistem.
Indeks ukazov (EIP - Instruction Pointer). Ta register vsebuje naslov navodila, ki ga je treba izvesti naslednjič, če ni drugače določeno.
Segmentni registri (CS, DS, SS, ES, FS, GS). Njihovo prisotnost v sestavljalniku narekuje poseben nadzor RAM-a, da se poveča njegova uporaba v programih. Zahvaljujoč njim je bilo mogoče upravljati pomnilnik do 4 GB. V arhitekturi Win32 ni potrebe po segmentih, vendar se imena registrov shranjujejo in uporabljajo drugače.
To je območje pomnilnika, ki je dodeljeno za tekoče postopke. Posebnost stacka je, da so najnovejši podatki, ki so bili zapisani nanj, najprej na voljo za branje. Z drugimi besedami: prvi vnosi v sklad so nazadnje pridobljeni. Predstavljate si lahko ta proces kot stolp osnutkov. Če želite dobiti kontrolno ploščico (dno stolpa na dnu stolpa ali katerokoli na sredini), morate najprej odstraniti vse, ki ležijo na vrhu. In v skladu s tem, zadnji kos dal na stolpu, se odstrani najprej pri razčlenjevanju stolp. To načelo organiziranja spomina in dela z njim narekuje njegovo gospodarstvo. Stack se nenehno zbriše in ga vsakič uporabi en postopek.
Identifikator v sestavljalniku programskega jezika ima enak pomen kot v vseh drugih. Dovoljene so latinske črke, številke in simboli "_", ".", "?", "@", "$". V tem primeru so velike in male črke enakovredne, pika pa je lahko samo prvi znak identifikatorja.
V referenčnih sistemih z bazami 2, 8, 10 in 16 lahko določimo celo število v zbirniku. Vsak drug vnos številk bo sestavljalec upošteval kot identifikator.
Dovoljeno je uporabljati tako apostrofe kot tudi citate v pisnih znakovnih podatkih. Če morate določiti enega od njih v nizu znakov, potem so pravila naslednja:
Za označevanje komentarjev v jeziku sestavljavca se uporablja znak s podpičjem - ";". Dovoljeno je uporabiti komentarje tako na začetku vrstic kot tudi po ukazu. Komentar se konča z novo vrstico.
Direktiva o enakovrednosti se uporablja na podoben način kot drugi stalni izrazi. Enakovrednost je navedena, kot sledi: t
EQU
Tako so v programu vsi dogodki
Vpišejo se jeziki na visoki ravni (C ++, Pascal). To pomeni, da uporabljajo podatke, ki imajo določeno vrsto, obstajajo funkcije za njihovo obdelavo, itd. V asemblerju programskega jezika take stvari ni. Obstaja samo 5 direktiv za opredelitev podatkov:
Črka D pomeni Define.
Vsako direktivo lahko uporabite za razglasitev podatkov in nizov. Vendar pa je za nizove priporočena uporaba DB.
Sintaksa:
DQ [, ]
DQ [, ]
DQ [, ]
Kot operand je dovoljeno uporabljati številke, simbole in vprašaj - “?”, Ki označuje spremenljivko brez inicializacije. Na primer:
real1 DD 12.34char db 'c'ar2 db '123456',0 ; массив из 7 байтnum1 db 11001001b ; двоичное числоnum2 dw 7777o ; восьмеричное числоnum3 dd -890d ; десятичное числоnum4 dd 0beah ; шестнадцатеричное числоvar1 dd ? ; переменная без начального значенияar3 dd 50 dup (0) ; массив из 50 инициализированных эл-товar4 dq 5 dup (0, 1, 1.25) ; массив из 15 эл-тов, инициализированный повторами 0, 1 и 1.25
Sintaksa ukazov za sestavljanje ali navodil za sestavljanje je naslednja:
Oznaka (oznaka :) se mora končati z dvopičjem in jo lahko postavite na ločeno vrstico. Oznake se uporabljajo za sklicevanje na ukaze znotraj programa.
Navodila označujejo postopek, ki ga je treba izvesti. V asemblerju so operacije predstavljene v obliki črkovnih okrajšav za lažje razumevanje. Navodila lahko imenujemo tudi mnemotehniko.
V vlogi ukazov operandov je lahko:
Naslov lahko prenašate na več načinov:
V sestavljalniku se naslov prenaša preko oglatih oklepajev. Ker je spremenljivka tudi naslov, se lahko uporablja z ali brez oglatih oklepajev.
Poleg tega obstajajo okrajšave v zbirniku: r za registre, m za pomnilnik in i za operand. Te kratice se uporabljajo s številkami 8, 16 in 32 za označevanje velikosti operanda: r8, m16, i32 itd.
add i8/i16/i32, m8/m16/m32 ;суммирование операнда с ячейкой памяти
Ta ukaz je eden izmed ukazov za sestavljanje. Omogoča vam, da v register vpišete vrednost drugega registra, pomnilniške celice ali konstante. Prav tako zapiše vrednost registra ali konstante v pomnilniško celico. Skladnja ukaza:
MOV ,
MOV ,
V procesorju obstajajo drugi ukazi za izvedbo prenosa. Na primer, XCHG je ukaz za izmenjavo operandov z vrednostmi. Toda z vidika programerja se vsi izvajajo preko osnovnega MOV ukaza. Na primer:
MOV i, 0 ; Записать в i значение 0MOV ECX, EBX ; Пересылка значения EBX в ECX
V obliki operanda lahko deluje kot register in pomnilniška celica. Če pa se vsebina obeh registrov lahko preuredi, potem ni dveh pomnilniških celic. Paziti je treba, da so operandi enake velikosti. Upoštevajte tudi, da ukaz MOV ne spremeni vrednosti zastav.
Nadaljnje teoretično proučevanje asemblerja je lahko težavno, zato bi morali razmisliti o orodjih, ki se uporabljajo za razvoj programov z njim. Tukaj boste videli samo kratek seznam priljubljenih orodij:
Obstaja veliko orodij. V tem primeru morate posebej opozoriti, da ni enotnega standarda za skladenjsko skladnjo. Obstajata 2 najbolj uporabna: AT & T sintaksa, osredotočena na proizvodne procesorje, ki niso Intel, in skladno s tem Intelova sintaksa.
Kljub navidezni kompleksnosti je montažer preprost programski jezik, ki ga je lahko razumeti. Zato lahko varno uporabite izobraževalno literaturo o podobnosti "sestavljavca za lutke" in se naučite tega čudovitega jezika.