Asembler

програмски језик

Asembler (asemblerski jezik)[1][2][3][4] je programski jezik koji mašinski jezik, specifične procesorske arhitekture, predstavlja u ljudima čitljivom obliku. Iz toga proizilazi da svaka procesorska arhitektura poseduje svoj asembler.[5][6][7]

Asembler
Listing Motorola MC6800 asemblera
Pojavio se1949. god.; pre 75 godina (1949)

Prvi asemblerski kod u kome se jezik koristi za predstavljanje instrukcija mašinskog koda nalazi se u radu Katlin i Endru Donalda Buta iz 1947. Kodiranje za A.R.C..[8] Asemblerski kod se konvertuje u izvršni mašinski kod pomoću uslužnog programa koji se naziva asembler. Termin „asembler“ se generalno pripisuje Vilksu, Vileru i Gilu u njihovoj knjizi „Priprema programa za elektronski digitalni računar“ iz 1951. godine,[9] koji su, međutim, koristili termin da znači „program koji sastavlja drugi program koji se sastoji od nekoliko sekcija u jedan program“.[10] Proces konverzije se naziva asembler, kao i sastavljanje izvornog koda. Računski korak kada asembler obrađuje program naziva se asemblersko vreme. Pošto asembler zavisi od instrukcija mašinskog koda, svaki asemblerski jezik[nb 1] je specifičan za određenu arhitekturu računara.[11][12][13]

Program u asembleru se često označava i kao asembler kod. Taj kod se putem specijalnog kompajlera pretvara u mašinski kod koji procesor može da direktno izvrši. Obrnuti proces pretvaranja mašinskog u asembler kod naziva se disasembliranje. Pri tom procesu je spašavanje svih pređašnjih dijelova asembler koda nemoguće, pošto se oni (npr. komentari) pri kompiliranju nepovratno brišu. Zbog toga je disasemblirani kod teško razumljiv. Asembler obično ima jednu izjavu po mašinskoj instrukciji, ali komentari i izjave koji su asemblerske direktive[14], makroi[15][1], i simboličke oznake programa i memorijskih lokacija se često podržavaju.

Programi napisani u asembleru se odlikuju mogućnošću slanja direktnih komandi procesoru kao i iskorišćavanju cijelog dijapazona računarske arhitekture. Pošto ti programi rade praktično na nivou mašinskog koda, i sa sobom nemaju pomoćne konstrukcije, generalizacije koda i za mašinu slične nebitne stvari, mnogo su manji i brži od programa napisanih u nekom konvencionalnom programskom jeziku.

Neke od glavnih mana takvih programa su loša čitljivost, što je posebno izraženo pri velikim projektima i kompleksnosti koda, kao i praktična nemogućnost konvertovanja istog koda na drugu procesorsku arhitekturu.[16] Zbog tih mana se asembler danas koristi samo u vremenski kritičnim programima (brzina) kao što su mašinski adapteri (engl. driver) za grafičke karte ili u prostorno kritičnim programima (veličina) u integrisanim sistemima (engl. Embedded Systems). Primeri takvih sistema su mikrokontroleri. U kontrastu sa asemblerom, većina programskih jezika visokog nivoa su generalno portabilni preko više arhitektura, ali zahtevaju interpretiranje ili kompajliranje. Asembler se takođe može nazvati simboličkim mašinskim kodom.[17][18]

Danas se tipično koristiti male količine koda asemblerskog jezika u okviru većih sistema implementiranih na jeziku višeg nivoa, iz razloga performansi ili za direktnu interakciju sa hardverom na načine koji jezik višeg nivoa ne podržava. Na primer, nešto manje od 2% verzije 4.9 izvornog koda Linuks kernela je napisano u asembleru; više od 97% je napisano u C.[19]

Notes uredi

  1. ^ Other than meta-assemblers

Reference uredi

  1. ^ a b „Assembler language”. 
  2. ^ „Assembly: Review” (PDF). Computer Science and Engineering. College of Engineering, Ohio State University. 2016. Arhivirano (PDF) iz originala 2020-03-24. g. Pristupljeno 2020-03-24. 
  3. ^ Archer, Benjamin (novembar 2016). Assembly Language For Students. North Charleston, South Carolina, USA: CreateSpace Independent Publishing. ISBN 978-1-5403-7071-6. „Assembly language may also be called symbolic machine code. 
  4. ^ Streib, James T. (2020). „Guide to Assembly Language”. Undergraduate Topics in Computer Science. Cham: Springer International Publishing. ISBN 978-3-030-35638-5. ISSN 1863-7310. S2CID 195930813. doi:10.1007/978-3-030-35639-2. „Programming in assembly language has the same benefits as programming in machine language, except it is easier. 
  5. ^ Saxon, James; Plette, William (1962). Programming the IBM 1401. Prentice-Hall. LCCN 62-20615 — preko HathiTrust.  [use of the term assembly program]
  6. ^ „Macro instructions”. High Level Assembler for z/OS & z/VM & z/VSE Language Reference Version 1 Release 6. IBM. 2014 [1990]. SC26-4940-06. 
  7. ^ „Assembler language”. High Level Assembler for z/OS & z/VM & z/VSE Language Reference Version 1 Release 6. IBM. 2014 [1990]. SC26-4940-06. 
  8. ^ Booth, Andrew D; Britten, Kathleen HV (1947). Coding for A.R.C. (PDF). Institute for Advanced Study, Princeton. Pristupljeno 4. 11. 2022. 
  9. ^ Wilkes, Maurice Vincent; Wheeler, David John; Gill, Stanley J. (1951). The preparation of programs for an electronic digital computer (Reprint 1982 izd.). Tomash Publishers. ISBN 978-0-93822803-5. OCLC 313593586. 
  10. ^ Fairhead, Harry (2017-11-16). „History of Computer Languages - The Classical Decade, 1950s”. I Programmer. Arhivirano iz originala 2020-01-02. g. Pristupljeno 2020-03-06. 
  11. ^ „How do assembly languages depend on operating systems?”. Stack Exchange. Stack Exchange Inc. 2011-07-28. Arhivirano iz originala 2020-03-24. g. Pristupljeno 2020-03-24.  (NB. System calls often vary, e.g. for MVS vs. VSE vs. VM/CMS; the binary/executable formats for different operating systems may also vary.)
  12. ^ Austerlitz, Howard (2003). „Computer Programming Languages”. Data Acquisition Techniques Using PCs. Elsevier. str. 326—360. ISBN 9780120683772. doi:10.1016/b978-012068377-2/50013-9. „Assembly language (or Assembler) is a compiled, low-level computer language. It is processor-dependent since it basically translates the Assembler's mnemonics directly into the commands a particular CPU understands, on a one-to-one basis. These Assembler mnemonics are the instruction set for that processor. 
  13. ^ Carnes, Beau (2022-04-27). „Learn Assembly Language Programming with ARM”. freeCodeCamp.org. Pristupljeno 2022-06-21. „Assembly language is often specific to a particular computer architecture so there are multiple types of assembly languages. ARM is an increasingly popular assembly language. 
  14. ^ „High Level Assembler - Opcodes overview, Assembler Directives”. 
  15. ^ „Macro instructions”. 
  16. ^ System calls often vary, e.g. for MVS vs. VSE vs. VM/CMS; the binary/executable formats for different operating systems may also vary. „How do assembly languages depend on operating systems?”. 
  17. ^ „Assembly: Review - The Ohio State University” (PDF). 2016. 
  18. ^ B. Archer. „Assembly Language For Students”. „Assembly language may also be called symbolic machine code. 
  19. ^ Anguiano, Ricardo. „linux kernel mainline 4.9 sloccount.txt”. Gist (na jeziku: engleski). Pristupljeno 2022-05-04. 

Literatura uredi


Spoljašnje veze uredi