Asembler
Asembler | |
---|---|
![]() Listing Motorola MC6800 asemblera | |
Pojavio se | 1949. |
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]
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 | uredi izvor]- ^ Other than meta-assemblers
Reference
[uredi | uredi izvor]- ^ a b „Assembler language”.
- ^ „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.
- ^ 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.”
- ^ 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.”
- ^ Saxon, James; Plette, William (1962). Programming the IBM 1401. Prentice-Hall. LCCN 62-20615 — preko HathiTrust. [use of the term assembly program]
- ^ „Macro instructions”. High Level Assembler for z/OS & z/VM & z/VSE Language Reference Version 1 Release 6. IBM. 2014 [1990]. SC26-4940-06.
- ^ „Assembler language”. High Level Assembler for z/OS & z/VM & z/VSE Language Reference Version 1 Release 6. IBM. 2014 [1990]. SC26-4940-06.
- ^ Booth, Andrew D; Britten, Kathleen HV (1947). Coding for A.R.C. (PDF). Institute for Advanced Study, Princeton. Pristupljeno 4. 11. 2022.
- ^ 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.
- ^ 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.
- ^ „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.)
- ^ 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.”
- ^ 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.”
- ^ „High Level Assembler - Opcodes overview, Assembler Directives”.
- ^ „Macro instructions”.
- ^ 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?”.
- ^ „Assembly: Review - The Ohio State University” (PDF). 2016.
- ^ B. Archer. „Assembly Language For Students”. „Assembly language may also be called symbolic machine code.”
- ^ Anguiano, Ricardo. „linux kernel mainline 4.9 sloccount.txt”. Gist (na jeziku: engleski). Pristupljeno 2022-05-04.
Literatura
[uredi | uredi izvor]- Reiner Backer: Assembler - Maschinennahes Programmieren von Anfang an; rororo Taschenbücher Nr.61224. 2003. ISBN 978-3-499-61224-4.
- ASM Community Book "An online book full of helpful ASM info, tutorials and code examples" by the ASM Community, archived at the internet archive.
- Bartlett, Jonathan (2004). Programming from the Ground Up. Bartlett Publishing. ISBN 978-0-9752838-4-4. Arhivirano iz originala 08. 07. 2011. g. Pristupljeno 25. 04. 2018.
- Britton, Robert (2003). MIPS Assembly Language Programming. Prentice Hall. ISBN 978-0-13-142044-1.
- Jeff Duntemann (2000). Assembly Language Step-by-Step. Wiley. ISBN 978-0-471-37523-4.
- Hyde, Randall (2003). The Art of Assembly Language. No Starch Press. ISBN 978-1-886411-97-5.
Draft versions available online as PDF and HTML - Charles W. Kann. Introduction to MIPS Assembly Language Programming. Arhivirano iz originala 04. 03. 2016. g. Pristupljeno 25. 04. 2018. . 2015.
- Peter Norton, John Socha, Peter Norton's Assembly Language Book for the IBM PC, Brady Books, NY: 1986.
- Michael Singer,. PDP-11. Assembler Language Programming and Machine Organization.. John Wiley & Sons, NY: 1980.
- Sweetman, Dominic (1999). See MIPS Run. Morgan Kaufmann Publishers. ISBN 978-1-55860-410-0.
- John Waldron (1998). Introduction to RISC Assembly Language Programming. ISBN 978-0-201-39828-1.. Addison Wesley.
- Dennis Yurichev: Understanding Assembly Language
- Aho, Alfred V.; Sethi, Ravi; Ullman, Jeffrey D. (1986). Compilers: Principles, Techniques, and Tools (1st izd.). Addison-Wesley. ISBN 9780201100884.
- Allen, Frances E. (septembar 1981). „A History of Language Processor Technology in IBM”. IBM Journal of Research and Development. IBM. 25 (5): 535—548. doi:10.1147/rd.255.0535.
- Allen, Randy; Kennedy, Ken (2001). Optimizing Compilers for Modern Architectures. Morgan Kaufmann Publishers. ISBN 978-1-55860-286-1.
- Appel, Andrew Wilson (2002). Modern Compiler Implementation in Java (2nd izd.). Cambridge University Press. ISBN 978-0-521-82060-8.
- Appel, Andrew Wilson (1998). Modern Compiler Implementation in ML. Cambridge University Press. ISBN 978-0-521-58274-2.
- Bornat, Richard (1979). Understanding and Writing Compilers: A Do It Yourself Guide (PDF). Macmillan Publishing. ISBN 978-0-333-21732-0. Arhivirano iz originala (PDF) 15. 6. 2007. g. Pristupljeno 11. 4. 2007.
- Calingaert, Peter (1979). Horowitz, Ellis, ur. Assemblers, Compilers, and Program Translation
. Computer software engineering series (1st printing, 1st izd.). Potomac, Maryland: Computer Science Press, Inc. ISBN 0-914894-23-4. ISSN 0888-2088. LCCN 78-21905. Pristupljeno 2020-03-20. (2+xiv+270+6 pages)
- Cooper, Keith Daniel; Torczon, Linda (2012). Engineering a compiler (2nd izd.). Amsterdam: Elsevier/Morgan Kaufmann. str. 8. ISBN 9780120884780. OCLC 714113472.
Spoljašnje veze
[uredi | uredi izvor]- Asembler na sajtu Curlie (jezik: engleski)
- Brzi kurs asemblera
- Asembler programiranje na Linuksu Arhivirano na sajtu Wayback Machine (1. novembar 2006)
- MenuetOS - Hobi projekat operativnog sistema napisanog u asembleru koji staje na jednu disketu od 1.44 MB
- KolibriOS - Nastao iz MenuetOS-a, članak ovde
- Unix Assembly Language Programming
- Linux Assembly
- PPR: Learning Assembly Language
- NASM – The Netwide Assembler (a popular assembly language)
- Assembly Language Programming Examples
- Authoring Windows Applications In Assembly Language
- Assembly Optimization Tips Архивирано на сајту Wayback Machine (7. мај 2019) by Mark Larson
- The Art of Assembly Language by Randall Hyde
- The table for assembly language to machine code