Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Akú úlohu zohráva jazyk assembler v dnešnej dobe?

Dobry,
mam otázku. Vedel by mi niekto vysvetliť akú úlohu zohráva jazyk assembler v dnešnej dobe? Co presne sa nim píše? Prečo sa ešte používa ked ma uz vise 50 rokov? Pýtam sa preto lebo ucim sa zaklady v C a coraz castejšie sa stretavam aj s pojmom assembler. Podla toho co som si precital z netu tak je to zakladný jazyk procesora no nechápem potom preco sa najviac použiva C a nie assembler, ked je taký dobrý ze nepotrebuje na chod prakticky nic, ziadne knižnice, ani preklad, ani nic. Ked som tomu správne pochopil tak assembler je uz sam o sebe zdrojový kod, ktorý vie CPU hned vykonat, či?

Změna předmětu, původně: assembler (host)

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Jakou úlohu hraje: člověk ho použije především tam, kde potřebuje mít program (či jeho část) rychlý,… poslední
gilhad 12.10.2018 18:46
gilhad

Jakou úlohu hraje: člověk ho použije především tam, kde potřebuje mít program (či jeho část) rychlý, nebo malý, nebo mít nad ním plnou kontrolu, nebo použít speciální schopnosti HW (ať už procesoru, nebo jiných zařízení), nebo nemá jiný vhodný jazyk k dispozici

Stroje ho používají často při překladu vyšších jazyků (například C se klasicky nejdřív přeloží do assembleru, potom se ten assembler přeloží do strojového kódu, který následně čte procesor a (např u Intelu) ho interpretuje vlastním mikrokódem.

Do assembleru se vyšší jazyky překládají proto, že je to snazší a líp se při tom dělají optimalizace (překlad Céčka se zdrojákem souvisí velmi volně) a assembler umožní přeložit jednotlivé kusy kódy, knihovny a tak nezávisle na zbytku a až pak to pospojovat a určit, přesně adresy, kde budou které funkce, data ... čili optimalizátor toto nemusí deailně řešit. Zároveň, protože ho používá vícero vyšších jazyků jako mezistupeň, tak je zbytečné překladač assembleru zahrnovat do každého zvlášť (přičemž takový překladač assembleru klině může dělat i víc průchodů pro optimální překlad).

Psát se s ním dá cokoli, co se dá napsat v jakémkoli vyšším jazyce, jen to často může být pracnější. A je to náchylnější k lidským chybám. Třeba takový MS DOS byl v assembleru napsaný celý, včetně utilit.

Assembler je vlastně špatné označení - assembler jako takový je název překladače, který překládá jazyk symbolických adres do strojového kódu (a linker pak ty přeložené kusy spojuje do přeložených knihoven či programů), ale vžil se i jako název pro ten jazyk, který překládá.

Samozřejmě není jen jedinný assembler - pro různé procesory jsou různé assemblery a často i pro jeden procesor je víc různých dialektů, které se výrazně liší.

C se používá proto, že má spoustu knihoven (ne že by je nemohl mít i assembler), je rozšířený a píše se v něm snáze. A protože je vlastně nezávislý na platformě, pro kterou se píše, takže tentýž zdroják lze snadno přeložit pro různé procesory.

Proč se ještě používá, když už má 50 let? Protože zkrátka pro daný účel nemáme nic lepšího. Je zajímavé, že se na to ptáš v jazyce, který je více než 800 let starý (Česky psaná literatura se objevuje od 14. století. První písemné památky jsou však již z 12. století. https://cs.wikipedia.org/wiki/%C4%8Ce%C5%A1tina ) :)
Assembler se samozřejmě taky postupně vyvýjel, nejen, jak se vyvýjely procesory, ale i jak bylo více výpočetní síly, takže mohl umoňovat i složitější konstrukce a také jak se měnil náhled na jeho úlohu v programování. (něco jiného je překládat ho na moderním PC a něco jiného na počítači s kazeťákem a 16 kB RAM, kam se musel vejít neje překladač, ale i překládaný kód a navíc obrazovka)

Mimochodem se dodnes používá nejen pro psaní ovladačů, ale čaqsto i u mikrokontrolerů typu např. populárního Arduina, zvláště u nižších HW verzí, nebo u doma vyráběných počítačů (např. https://www.youtube.com/channel/UCS0N5baNlQWJCUrhCEo8WlA )

Pro své použití samozřejmě potřebuje překladač, který ho přeloží do strojové podoby, ale v té strojové podobě už je schopen běžet.

Většinou ale stejně používá i nějaké knihovny (protože proč psát stejné věci pořád dokola znovu), často i volání OS a rozhodně není pravda, že by si v počítači mohl (na rozdíl od C) dělat co chce, pokud tam už běží nějaký solidní OS. Pak se na uživatelem spouštěné programy vztahují stejná omezení (co se týče přístupu k paměti, disku, jiným zařízením), bez ohledu na to, v jakém jazyce jsou napsaná.

Konec konců, proč se prodávají počírače, když si je člověk může postavit z desek, nebo z integráčů, nebo třeba i z tranzistorů? Když jsou ty tranzistory tak dobré, tak nechápu, proč prodávat hotové počítača. (nebo proč používat C, když v assembleru to jde taky a ještě si to člověk může přiohnout víc dle svých potřeb ...) Jestli to nebude tím, že C a rozsáhlé knihovny na cokoli a počítače jsou na méně náročné použití jednodušší, než asssembler a tranzistory, které toho zvládnou případně i víc...

Zpět do poradny Odpovědět na původní otázku Nahoru