Movatterモバイル変換


[0]ホーム

URL:


Idi na sadržaj
WikipediaSlobodna enciklopedija
Pretraga

Asembler

Pregledano
S Wikipedije, slobodne enciklopedije

Stanje verzije stranice

Ovo je pregledana verzija ove stranice

Ovo jestabilna verzija,pregledana dana9 mart 2025.1 izmjena čeka pregled.
Motorola MC6800 Assembler programski jezik

Assembler je poseban program koji pretvara program zapisan asemblerskim jezikom u binarni oblik. Program zapisan upotrebom memonika i simboličkih adresa naziva se asemblerski program.

Program u assembleru se često označava i kao assembler kod. Taj kod se putem specijalnogprevodilačkog alata (u ovom slučaju konkretno asemblera) prevodi umašinski kod, koji je direktno izvršiv od strane procesora. Obrnuti proces pretvaranja mašinskog koda u assembler kod naziva se „disasembliranje“.[1]

Historija

[uredi |uredi izvor]

Rani primjeri asemblerskih jezika se pojavljuju s prvim generacijama računara, kada su inženjeri tražili način da pojednostave unos mašinskih instrukcija. Umjesto zapisivanja dugih nizova nula i jedinica, koristili su se memonici (skraćeni simboli) za komande procesora, kao što su MOV, ADD ili JMP.[2] Time je proces pisanja koda za te rane sisteme postao brži i manje sklon greškama. Jedan od historijski značajnih asemblerskih jezika bio je onaj zaIBM 650, koji se koristio u pedesetim godinama 20. vijeka.

Kako su se procesorske arhitekture razvijale, postojala je potreba za različitim asemblerskim jezicima, jer svaki procesor ima skup vlastitih instrukcija. Danas, iako se asembleri rjeđe koriste u odnosu na više programske jezike (poputC iliC++) u općim softverskim projektima, i dalje su važni u specifičnim područjima kao što su ugrađeni sistemi, firmware i upravljanje hardverom niskog nivoa.[3]

Osnove rada asemblerskog jezika

[uredi |uredi izvor]

Asemblerski jezik nudi direktnu kontrolu nad resursima i instrukcijskim setom procesora. Naredbe su obično u formi:

MOV AL, [1234h]ADD AL, 5

te sadrže:

  • Memoničke simbole – npr. MOV, ADD, JMP
  • Oznake registara – npr. AL, AX, EAX, RAX (ovisno o arhitekturi)
  • Simboličke adrese ili konstante – npr. [1234h], MY_VARIABLE

Sistem assemblera često omogućava korištenje makroa, koji pojednostavljuju ponavljajuće radnje. Na taj način se asemblerski jezik može modularnije organizovati i smanjiti dužina koda.[4]

Proces asembliranja

[uredi |uredi izvor]

Uobičajeni asembleri rade u jednom ili dva prolaza (pass-a):

  • Tokom prvog prolaza, asembler analizira sve oznake (simboličke adrese) i pravi tabelu simbola koja sadrži njihovu lokaciju u memoriji.
  • Tokom drugog prolaza, zamjenjuje simboličke adrese stvarnim adresama i generiše konačni mašinski kod.[5]

Kod jednog prolaza, asembler se trudi odjednom riješiti sve o simbolima, što je jednostavnije, ali može zahtijevati određena ograničenja ili naredbe za „simboličku“ buduću upotrebu. Kod dva prolaza, postoji preciznija kontrola nad rasporedom koda i tabela simbola je gotova prije finalnog generisanja mašinskih instrukcija.

Prednosti

[uredi |uredi izvor]

Programi napisani u assembleru omogućavaju slanje direktnih komandi procesoru, iskorištavajući sve mogućnostiračunarske arhitekture. Budući da rade na nivou mašinskog koda i nemaju dodatne apstrakcije, oni su često manji po veličini i mogu biti brži od programa napisanih u višim programskim jezicima. Zbog toga se asembler i danas koristi u sljedećim scenarijima:

  • Sistemi realnog vremena i ugrađeni sistemi, gdje su performanse i mala memorijska potrošnja presudni
  • Niske razine firmwarea u matičnim pločama, upravljačkim jedinicama i specifičnim hardverskim komponentama
  • Pisanje ključnih dijelova operativnih sistema, pogotovo kada je potreban pristup registarskim instrukcijama koje nisu dostupne kroz visoke jezike[6]

Nedostaci

[uredi |uredi izvor]

Glavne mane programa napisanih u assembleru uključuju:

  • Niža čitljivost i složenost održavanja, što je posebno izraženo kod većih projekata
  • Teškoća prevođenja na druge procesorske arhitekture, jer je kod direktno vezan za određeni skup instrukcija
  • Skuplje vrijeme razvoja, budući da programeri trebaju temeljno razumjeti detalje arhitekture i voditi računa o mnogim niskonivojskim detaljima

Zbog tih ograničenja, asembler se danas uglavnom koristi samo u specifičnim slučajevima (kao što su sistemi realnog vremena, uređaji sa ograničenim resursima, stabilan i jasan pristup registrima i memoriji, te izrada mikrokontrolerskih programa).

Dodatne primjene

[uredi |uredi izvor]

Assembler je važan i u područjima:

  • Analiza zlonamjernog softvera i reverzno inženjerstvo, gdje sigurnosni stručnjaci proučavaju kako binarni kod funkcioniše na niskom nivou
  • Optimizacija kritičnih dijelova koda (npr. kod videoigara ili multimedijalnih aplikacija), gdje je bitno iskoristiti svaku instrukciju procesora
  • Razvoj i dijagnostika novih arhitektura procesora, gdje se s assembler kodom vrše inicijalni testovi i provjere ispravnosti instrukcijskog sklopa
  • Inline assembler u višim jezicima (npr.C) gdje se dijelovi koda pišu u assembleru radi optimizacije

Reference

[uredi |uredi izvor]
  1. ^Inc., IOActive (2015).Reverse Engineering Code with IDA Pro. Syngress. str. 4–5.ISBN 978-0128045053.
  2. ^Patterson, David A. (2013).Computer Organization and Design, Fifth Edition. Morgan Kaufmann. str. 139–145.ISBN 978-0124077263.Nepoznati parametar|coauthors= zanemaren (prijedlog zamjene:|author=) (pomoć)
  3. ^Jones, G. (2019). "Using Assembly Language for Real-Time Programming".Embedded Systems Journal.14 (2): 28–35.
  4. ^Hyde, Randall (2010).The Art of Assembly Language. No Starch Press. str. 47–51.ISBN 978-1593272074.
  5. ^Duntemann, Jeff (2020).Assembly Language Step-by-Step. Wiley. str. 33–38.ISBN 978-1118080993.
  6. ^"Assembly Language in Operating Systems"(PDF). University of California, Riverside. Pristupljeno 1. 2. 2025.

Također pogledajte

[uredi |uredi izvor]

Literatura

[uredi |uredi izvor]

Vanjski linkovi

[uredi |uredi izvor]
Commons logo
Commons logo
Commons ima datoteke na temu:Asembler
Preuzeto iz "https://bs.wikipedia.org/w/index.php?title=Asembler&oldid=3687398"
Kategorije:
Sakrivene kategorije:

[8]ページ先頭

©2009-2025 Movatter.jp