A.D.Danilecki, Poznan, Polska
Politechnika Poznanska, Wydzial Informatyki i Zarzadzania
W tej chwili adanilecki _malpa_ cs.put.poznan.pl
Z wykorzystaniem wielu listow z uwagami od wielu autorow
Krótki wstęp do programowania z wykorzystaniem inline assemblera x86


2. Punkt pierwszy : Dlaczego nie używać assemblera .



Zapoznaj się z Assembly-HOWTO, zazwyczaj w katalogu /usr/doc/Linux-HOWTO's, gdzie podane jest mnóstwo powodów dla których nie warto pisać w asmie. Przede wszystkim, jeżeli piszesz coś w asmie, efektem jest program nieprzenośny . Po drugie, sam się często przekonałem, że gcc potrafi często wyprodukować szybszy i mniejszy kod niż ja. Warto zawsze napisać coś w C i dopiero potem to samo w asmie, i swój kod w asmie akceptować dopiero wtedy gdy jest mniejszy i szybszy od tego napisanego w C. Pisanie w assemblerze dla samego pisania nie ma sensu. Najlepiej, gdy przekonasz się że kod napisany w C jest lepszy, sprawdź jak gcc przetłumaczył go na assembler, jest to najlepsza droga do nauki :
gcc nazwa_twojego_programu -S nazwa_programu_przetłumaczonego_na_assembler

Możesz również dissasemblować istniejące programy za pomocą ndisasma (disasembler z dystrubucji Nasma) lub objdump --disassemble. Istnial kiedys do niego ,,frontend'', właściwie programik przerabiający output na html znajdujacy się na stronie A.Radeckiego tutaj . Obecnie strona ta jest niestety nieaktywna.

W całym dokumencie opisuję assembler x86. Opis assemblerów na inne maszyny pojawi się może... może... Czasu mam coraz mniej a roboty coraz więcej więc uaktualnienia dokumentu pojawiać się będą rzadko.
Co do nieprzenośności programu w assemblerze, proponuję zawsze obok kodu assemblerowego umieszczać kod w C, i użyć odpowiedniego define'a. Mamy z głowy i komentarz, i przenośność.