Jak pisać programy w języku asembler?
Pewnie wiele osób spośród Was słyszało już o tym, jaki ten asembler jest straszny. Ale te opinie możecie już śmiało wyrzucić do Kosza (użytkownicy Linuksa mogą skorzystać z /dev/null), gdyż przyszła pora na przeczytanie tego oto dokumentu.
Na początek, przyjrzyjmy się niewątpliwym zaletom języka asembler:
(przeskocz zalety!
1. Mały rozmiar kodu.
Tego nie przebije żaden kompilator żadnego innego języka. Dlaczego? Oto kilka powodów:
♦ Jako programista języka asembler (asma) wiesz co i gdzie w danej chwili się znajduje. Nie musisz ciągle przeładowywać zmiennych, co zabiera i miejsce i czas. Możesz eliminować instrukcje, które są po prostu zbędne.
♦ Do twojego pięknego kodu nie są dołączane żadne biblioteki z dziesiątkami procedur, podczas gdy ty używasz tylko jednej z nich. Co za marnotrawstwo!
♦ Jako znawca zestawu instrukcji wiesz, które z nich są krótsze.
2. Duża szybkość działania.
Znając sztuczki optymalizacyjne, wiedząc, które instrukcje są szybsze, eliminując zbędne instrukcje z pętli, otrzymujesz kod nierzadko dziesiątki razy szybszy od tych napisanych w językach wysokiego poziomu (high-level languages, HLLs). Nieprzebijalne.
3. Wiedza.
Nawet jeśli nie piszesz dużo programów w asmie, zdobywasz wprost bezcenną wiedzę o tym, jak naprawdę działa komputer i możesz zobaczyć, jak mamą czasem robotę wykonują kompilatory HLL-ów. Zrozumiesz, czym jest wskaźnik i często popełniane błędy z nim związane.
4. Możliwość tworzenia zmiennych o dużych rozmiarach, a nie ograniczonych do 4 czy 8 bajtów. W asemblerze zmienne mogą mieć dowolną ilość bajtów.
5. Wstawki asemblerowe.
Jeśli mimo to nie chcesz porzucić swojego ulubionego dotąd HLLa, to w niektórych językach istnieje możliwość wstawianie kodu napisanego w asemblerze wprost do twoich programów!
Teraz przyszła kolej na rzekome argumenty przeciwko językowi asembler:
(przeskocz wady)
1. Nieprzenośność kodu między różnymi maszynami.
No cóż, prawda. Ale i tak większość tego, co napisane dla procesorów Intela będzie działało na procesorach AMD i innych zgodnych z x86.1 na odwrót.
Nieprzenośność jest chyba najczęściej używanym argumentem przeciwko asemblerowi. Jest on