jak na ironie: temat i treść postu to 2 zupełnie różne pytania! :)
co mozna programowac w asemblerze?
WSZYSTKO! mozna to nawet latwo wykazac - jezeli napiszesz program w dowolnym innym jezyku programowania, w ktoryms momencie (czy to w procesie kompilacji, czy tez na poziomie interpretera/maszyny wirtualnej) musi byc on przetlumaczony na jezyk procesora, czyli jezyk przekladalny 1:1 na asemblera. krotko mowiac: jezeli cos sie da zapisac w postaci przetlumaczalnej dla danej maszyny, ZAWSZE da sie sie to zapisac w asemblerze.
co sie programuje w asemblerze?
skoro da sie zapisac wszsytko, dlaczego sie tego nie robi? z bardzo prostego powodu - asembler jest (delikatnie mowiac) uperdliwy w programowaniu, kompilator nie sprawdza praktycznie niczego (bo nie bardzo jest jak) i programista pozostaje praktycznie zdany na wlasna wiedze, doswiadczenie, wyobraznie i b. dobra znajomosc platformy docelowej (btw: kod w asemblerze jest zupelnie nie przenosny miedzy roznymi platformami sprzetowymi). do tego kod jest dlugi (bo instrukcje sa dosc elementarne) i malo zrozumialy dla czlowieka (aka: jezyk tylko do zapisu programow :)).
biorac pod uwage realne ograniczenia w asemblerze da sie pisac i utrzymywac tylko stosunkowo proste programy.
do czego wiec uzywa sie asemblera? sa 2 glwne zastosowania:
1) urzadzenia wbudowane, w ktorych zasoby sprzetowe sa bardzo ograniczone (np: pare kB pamieci programu i naredziesiat B (!) ram'u) i kazdy bajt jest na wage zlota.
2) fargmenty kodu krytyczne ze wzgledu na wydajnosc. jezeli program dziala zbyt wolno, na poziomie algorytmu nie da sie juz niczego zrobic, czasem siega sie po wstawki asmblerowe, realizujace pewne atomowe, czesto wykonywane operacje (btw: szukanie tego typu punktow nazywa sie profile'ingiem).
btw: czy ten temat nie nadawalby sie bardziej na forum komputerowe? :)
_______________________________
[baszerr.org]