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
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