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


Co nowego ?

Sprawdzone pod : lynx 2.8.rel2 , netscape 4.5., kfm (Z KDE 1.0) Internet Explorerem (z windows 95 osr 2 nie pamiętam wersji) i areną, a także pod mozillą, gzillą, oglądany bezpiecznie pod amayą i webmakerem więc podejrzewam że każda przeglądarka poradzi sobie z tym tekstem (he,he).
Pod kfm i ie nie działają linki tak jakbym tego sobie życzył.
Wciąż tekst dotyczy tylko i wyłącznie maszyn intelowskich, x86, aczkolwiek dodany w charakterze dodatku jest list o asmie na RISC-cach (list M.Różyckiego)

6.01.2003: Dodano informacje z listow Macieja Wojtczuka na temat instrukcji FWAIT, FNINIT, FINIT, poprawiono zgodnie z jego sugestiami CMPXCHG, dodano informacje o wyrownywaniu pamieci.

18-12.2003: W wersji pre-O.7 jak dotad dodano lub zmieniono:

  • Przejscie na PHP - to taki mini szczegol, ktory powinien mi nieco pomoc w automatyzacji niektorych prywatnych spraw
  • Aktualizacja adresu
  • Punkt o Makrach
  • Punkt o parametrach nazwanych
  • Skladnia intelowska w gcc
  • Kilka poprawek po uwagach z listow,
  • Usuniecie adresow emailowych i zastapienie @ _mailto_ aby oszukac roboty spamerow.
  • 18-11-1999W wersji 0.6 w stosunku do 0.5 dodano lub zmieniono :
  • Opis mastępujących poleceń : FINCSTP , FINIT , FIST , FISTP , FISUB , FLD , FLDCW , FLDENV , FMUL , FMULP , FNCLEX , FNDISI , FNINIT , FNOP , FPATAN , FPREM , FPREM1 , FPTAN , FRNDINT , FRSTOR , FSCALE , FSETPM , FSIN , FSINCOS , FSQRT , FST , FSTP , FSTENV , FSUB , FSUBP , FSUBR , FSUBRP , FSTSW , FTST , FXAM , FXTRACT , FXDISI , FUCOMxx , FYL2X , FYL2XP1 , FXCH , F2XM1 , IBTS , LOADALL , LSL , PACKSSDW , PACKSSWB , PACKUSWB , PADDxx , PAVEB , PDISTIB , PMAGW , PMACHRIW , PMULHRW , PMULHRIW , PMVccZB , POPAx , POPFx , PSLLx , PSRLx , PSRAx , PSUBSIW , PUNPCKxx , PUSHAx , PUSHFx , RDMSR , RDPMC , RDTSC , RSM , SCASB , SCASW , SCASL , SHLD , SHRD , SMI , VERR , VERW , WRMSR , XBTS - wreszcie opisane wszystkie (chyba :-) ) instrukcje akceptowalne przez gcc.
  • wyrzucenie "root wymagany" z dodg.php i dodp.php i zamiana tego tam gdzie trzeba na "instrukcja uprzywilejowana"
  • drobne poprawki pewnych błędów (literówek itp.) oraz kilka niewielkich zmian w wishlist.php, koniec.php itp.
  • dokopałem się jaką postać w gcc mają instrukcje movzx i movsx :-)
  • modyfikacja opisu cbw, cdq, cwd, cwde - mianowicie dodana informacja że można też używać nazw cbtw,cltd, cwtl i cwtd jako synonimy.
  • Dodany rozdział na temat używania assemblera bez gcc (trzaskanie bezpośrednio w asmie)
  • dodane tłumaczenie specyfikacji ELF . Tłumaczenie jest bardzo kiepskie i stanowi co najwyżej przymiarkę. Komentarze mile widziane
  • uaktualnienia adresów i informacji w wielu miejscach.
  • 12.05.1999: W wersji 0.5 w stosunku do 0.4 dodano bądż zmieniono :
  • Wstawilem opis polecen nadeslanych przez A.Wolnego : INVLPG , CLTS , STR , SMSW , SLDT , LXX , LAR , LTR , LEAVE , ENTER , SGDT , SIDT , LIDT , LGDT , LLDT , LMSW
  • Poprawione bledy (korzystajac z listu A.Wolnego )
  • Dodany punkt "instrukcje uprzywilejowane" (autor A.Wolny z moimi lekkimi przerobkami)
  • Dodane odnośniki "poprzedni" "nastepny" w celu polepszenia wygody czytania
  • Ponieważ mam troche mało czasu, więc na razie zamiast konkretnych opisów dołączam list który dostałem od M.Różyckiego gdy prosiłem na pl.comp.os.linux o informacje na temat procesorów SPARC, motorola itd.
  • Dodany fragment z listu P.Gackiewicza na temat gprofa. Jak bedzie mi sie chcialo, w co watpie, to w nastepnej wersji, o ile taka powstanie, zapewne napisze wiecej na ten temat.
  • Dodany opis następujących poleceń : FDLDP , FDSTP , FCHS , FCLEX , FCMOV , FCOMI , FCOMIP , FCOMP , FCOMPP , FCOS , FDECSTP , FDISI , FDIV , FDIVP , FDIVR , FDIVRP , FENI , FFREE , FIADD , FICOM , FICOMP , FIDIV , FIDIVR , FILD , FIMUL ,
  • Uzupełniono rozdział o koprocesorze
  • Zacząłem poprawki tekstu (wyrzucanie root wymagany i wsatwianie instrukcja uprzywilejowana zamiast tego. na razie poprawilem doda.php
  • wersja ma 8768 linijek i 369 kb tekstu
  • ??-??-????: W wersji 0.4 w stosunku do 0.3 dodano bądż zmieniono :
  • Opis FABS , FADD , FADDP , FLDCW , FSAVE , FSTCW , IN , INSB , INSL , INSW , LDS , LES , LFS , LGS , LSS
  • Podział pliku na mniejsze części, by zlikwidować błędy pojawiające się przy wyświetlaniu pliku pod areną. Efektem ubocznym jest rozrost o 100 kb i o 2000 linijek całości.
  • Uzupełnienie rodziału o instrukcjach mmx-a
  • Zapewne pojawiło się mnóstwo niespójnych linków. Podejrzewam jednak że udało mi się wyłapać 80% z nich
  • Zdobycie zgody A.Marciniaka na wykorzystanie materiałów z jego książki
  • Uzupełnienie rozdziału o optymalizacji o reguły tyczące parowania instrukcji. Brakuje tam jeszcze tylko tabelki z instrukcjami koprocesora, opisu algorytmu predykcji skoków, opisu "aligned data" itp. Nie spodziewam się zmian tutaj w najbliższej dającej się przewidzieć przyszłości, chyba że ktoś mi pomoże.
  • Drobne poprawki błędów i uzupełnienia w niektórych miejscach.
  • Zaczęty dodatek o koprocesorze .
  • Wersja miała 7500 linijek i 315 kb tekstu
  • ??-??-????: W wersji 0.3 w stosunku do 0.2 dodano :
  • Opis CBW , CDQ , CMPXCHG8B , CWD
    CWDE ,
  • programik cpuid.c jako przykład wykorzystania instrukcji charakterystycznych dla pentium
  • Liczne poprawki edytorskie (poprawienie linków etc. )
  • Pod kfm dokument wygląda już normalnie : poprawienie dziesiątek błędów w stylu </BR>, zapomnienia domknięcia <small> itd.
  • ??-??-????: W wersji 0.2 w stosunku do 0.1 dodano :
  • Opis gdb rozszerzono i wydzielono jako osobny rozdział.
  • Poprawiony błąd, który powodował, w przeglądarkach graficznych literki stawały się bardzo, bardzo malutkie (nie podomykane znaczniki <SMALL>) i inne drobne poprawki edytorskie.
  • Dodanie linku do polskiej wersji GPL. Nie wiem czy to tłumaczenie jest już zatwierdzone przez FSF, więc angielski oryginał pozostawiam.
  • Sformalizowany wishlist
  • Dodany opis dla komend RCL , RCR , ROL , ROR , SAL , SAR , SHL , SHR
  • Dodane przykłady do JCXZ , JECXZ