Využitie JSA

V súčasnosti už moderné optimalizačné kompilátory dokážu previesť vyššie programovacie jazyky do kódu, ktorý je schopný bežať skoro rovnako rýchlo ako ručne písaný kód v assembleri. Naviac vzrastajúca výkonnosť procesorov spôsobila, že procesory sú vačšinu času nečinné, s oneskoreniami vyvolanými vstupno/výstupnými operáciami prípadne stránkovaním. Z toho vyplýva, že aj menej optimálne programy napísané vo VPJ by nemali mať problém bežať dostatočne rýchlo. Napriek tomu si ale symbolické jazyky nájdu uplatnenie aj v súčasnosti a v mnohých prípadoch sú jedinou alebo tou najefektívnejšou možnosťou. Tu je niekoľko najzákladnejších využití symbolických jazykov v súčasnosti aj v minulosti:

Embedeed systémy (Vnorené systémy)
Keď je vyžadované spustenie bez prepojenia na run-time komponenty alebo knižnice, ktoré sú asociované s vyššími programovacími jazykmi. Sú to takzvané embedeed systémy (zabudované systémy), ktoré majú len malú pamať a zariadenia sú skonštruované na vykonávanie jednoduchých operácií. Reč je napríklad o telefónoch, automobilových nádržiach, systémoch na ovládanie klimatizácie, bezpečnostných systémoch a senzoroch.

Ovládače pre zariadenia
Keď pracujeme priamo s hardvérom, napríklad ovládače pre zariadenia.

Limitujúci kompilátor
Keď používame špecifické inštrukcie pre procesor, ktoré niesú využívané kompilátorom alebo nie sú dostupné v kompilátore.

Vývoj PC hier
Ak je nevyhnutná maximálna optimalizácia. Niektorí programátori hier sú experti v písaní kódu, ktorý využíva schopnosti hardvérových súčastí v systéme, ktoré umožnujú rýchlejší beh hier.

Absencia vyššieho programovacieho jazyka
Ak neexistuje vyšší programovací jazyk, napríklad pri nových špecializovaných procesoroch.

Real time programy
Real time programy, ktoré potrebujú precízne načasovanie a rýchle odozvy, napr. navigačné systémy, lekárske príslušenstvo. Takéto systémy musia eliminovať akékoľvek zdroje nepredvítateľných oneskorení, ktoré možu vznikať interpretovanými jazykmi, automatickým garbage collection (zbieraním odpadu), stránkovacími operáciami alebo preemtívnym multitaskingom. Vyššie programovacie jazyky začleňujú run-time komponenty a rozhrania pre operačné systémy, ktoré dokážu predložiť podobné oneskorenia. Výberom symbolických jazykov získava programátor veľký prehľad a kontrolu nad procesmi, ktoré sa vykonávajú.

Kontrola nad prostredím
Ak je potrebná úplná kontrola nad prostredím.

Vírusy
Pri písaní vírusov, ovládačov pre zariadenia alebo iných vecí, ktoré sú blízke hardvéru alebo nízkej úrovni operačných systémov.

Prelamovanie ochrany (crackovanie)
Pri reverznom inžinierstve binárnych súborov, ktoré mohli byť napísané vo vyššom programovacom jazyku, napríklad pri crackovaní / prelamovaní ochrany proti kopírovaniu softwareu. Binárne súbory sa veľmi ťažko prekladajú do vyšších programovacích jazykov a preto sa skôr prekladajú do jednoduchších symbolických jazykov.

Programovanie kalkulačiek
V ASM sa píšu softvéry pre kalkulačky schopné vykresliť grafy.

Písanie kompilátorov
Znalosť JSA je nutná taktiež pri písaní kompilátorov, tie totiž generujú JSA kód z vyšších programovacích jazykov.

Vývoj BIOSu
Jednoduchý symbolický jazyk sa využíva aj pri systémovych boot ROM (BIOS na IBM kompatibilných PC systémoch). Tento nízkoúrovňový kód je využívaný okrem iného na inicializáciu a test hardvéru nutného pre štart operačného systému a je uložený v ROM. Na tieto účely sa využívajú SOJ hlavne preto, lebo po zapnutí počítača, nemusí byť ešte inicializovaná pamäť RAM. JSA program sa môže vykonať aj bez explicitného využitia pamäte, hlavne vo forme zásobnika.

Písanie jadra operačného systému
Pri písaní jadier operačných systémov(kernel) potrebujem mať úplnú kontrolu nad hardvérom, ktorú ponúknu jedine JSA.

Písanie operačných systémov
Hlavne v minulosti (70te-80te roky) boli mnohé operačné systémy napísané celé v JSA. Napríklad MS-DOS.

Aplikácie na pretaktovanie procesora
Pretaktovanie procesora sa dá uskuťočniť v BIOSe, ktorý je tiež napísaný v JSA ale aj v špeciálnych aplikáciach, ktoré vyžadujú úplnú kontrolu nad procesorom.

Ak je veľkosť programu limitujúca
Programy v jednoduchých symbolických jazykoch sú pomerne malé a preto ak je obmedzujúcou podmienkou práve veľkosť, častokrát sa využívajú.
Hry pre staré konzoly
Dokonca v 90tych rokoch sa JSA požívali na písanie takýchto hier, napríklad pre Super Nintendo Entertainment System.

Odkazy na stránky s podobným obsahom

Assembly language
http://en.wikipedia.org/wiki/Assembly_language

Thornley, David: Assemblers vs. Compilers
http://www.visi.com/~thornley/david/squirrel/squirrelasm.html

Slovník skratiek

  • JSA - jazyky symbolických adries
  • VPJ - vyššie programovacie jazyky
  • CPU - procesor
  • ISA - inštrukčná sada
  • ASM - assembler
  • OS - operačný systém

Diskusia