TO JEST WERSJA 0.6 TEGO TEKSTU - CZYLI WCIĄŻ BETA
PROSZE O KOMENTARZE, TYCZĄCE STYLU, EWENTUALNYCH BŁEDOW ITD
JEŻELI SAM DAŁBYŚ RADE LEPIEJ NAPISAĆ NINIEJSZY DOKUMENT,
PROSZE O KONTAKT A PRZEKAŻE WSZYSTKIE MATERIAŁY W MOIM POSIADANIU
18 października 1999 . Wszystkie linki zamieszczone w tekście
do tego dnia istniały (were valid) o ile nie jest podane
inaczej w tekście
avly@castle.net - adres nieaktualny, nie znam nowego adresu
NEXT - Punkt1 : Dlaczego nie używać assemblera?
PREV - Co nowego w tym dokumencie ?
do spisu treści
Autor poniższego tekstu nie rości sobie pretensji do miana guru. Nawet
więcej, ja kiepsko znam assembler i sam się go cały czas uczę.
Ale po prostu nigdzie nie mogłem znaleźć żadnych informacji po polsku
na temat pisania w assemblerze pod linuxa. W końcu, zrezygnowany pomyślałem,
że warto by było kilka z moich doświadczeń i efektów poszukiwań spisać,
by innym było łatwiej zaczynać, zwłaszcza że na pl.comp.os.linux już kilka
razy pojawiały się prośby o tego rodzaju dokument. I te moje zapiski powoli
się rozrosły. Mam
nadzieję że uda mi się z nich zrobić coś pomocnego w nauce programowania
w asmie pod gcc, lub przynajmniej ktoś lepiej się na tym znający przejmie
ode mnie pałeczkę i znajdzie może coś wartego wykorzystania w tym tekście.
Dokument jest rozpowszechaniany na licencji GNU public
license , której pełen tekst znajduje się na końcu tego dokumentu. W skrócie
możesz z nim robić co chcesz tak długo, jak długo będziesz pozwalał wszystkim innym
na korzystaniu na podobnych zasadach z dokumentów które napiszesz za jego pomocą
lub na jego podstawie. Jeżeli kiepsko znasz angielski, przeczytaj jej
polskie
tłumaczenie. Niestety nie wiem czy to tłumacznenie jest zatwierdzone przez FSF
Jeżeli znajdziesz w poniższym dokumencie błędy, proszę wyślij
list na adres
szopen@aurora.put.poznan.pl . Być może uznasz że lepiej sam napisałbyś
taki krótki wstęp, wtedy proszę skontaktuj się ze mną, byśmy nie powtarzali dwa razy
tej samej roboty. Na końcu dokumentu znajduje się kilka
pytań na które nie znalazłem odpowiedzi. Jeżeli ty je znasz, proszę skontaktuj
się ze mną.
Materiały do poniższego tekstu znalazłem na następujących stronach : -
1. DJGPP QuickAsm Programming Guide
( mail: AVLY )
Adres ten był nieaktualny gdy ostatnio go sprawdzałem
2. Brennan's Guide to Inline Assembly
(mail: Brennan Underwood)
3. Strona Intela (Znajdujące się tam manuale w formacie
pdf, jeżeli nie masz niczego do odczytywania tego formatu, łatwo
możesz przerobić na pliki tekstowe programem pdftotext, który
powinien standardowo być dostarczany z Twoją dystrybucją Linuxa)
Korzystałem poza tym z następujących materiałów : -
4. A.Marciniak "Borland Pascal 7.0 z elementami programowania",
część Ic (dodatek poświęcony instrukcjom assemblera).
5. Materiałów zawartych w informacjach standardowo dostarczanych
w dystrybucjach Linuxa (info gcc, info gdb, info as, źródła jądra ...)
6. dokumentacji NASM'a
www.cryogen.com/Nasm
7. PC Games Programmers Encyclopedia
ftp://teeri.oulu.fi/pub/msdos/programming/gpe"
8. Michael K. Johnson, Linux Hacker's Guide
9. Konstantin Boldyshev, Asm-utils
lightning.voshod.com/asm
10. Brian Reiter, A Whirlwind tutorial on Creating Really Teensy
ELF Executables on Linux
www.muppetlabs.com/~breadbox/tiny/teensy.html
11. Assembler Programming Journal
asmjournal.freeservers.com
oraz w Assembly-HOWTO autorstwa
-
12. Francois'a Rideau, rideau@clipper.ens.fr
Skorzystałem także z listów:
-
Paweł Krawczyk , dziękuję
za list na temat używania gdb w programie bez symboli
Adam Wolny , dzieki za list z ogromem
informacji, poprawek i opisem wielu polecen. Czesc listu lekko przerobilem
i wstawilem jako punkt "Instrukcje uprzywilejowane"
-
M. Różycki jego list
wstawiłem jako Dodatek D
-
Wszystkie te teksty są wykorzystane za zgodą autorów, za wyjątkiem
pozycji 5-8. Tekst Assembly-HOWTO
jest przetłumaczony na polski przez
wegorzg@polbox.com
Szukaj w
przetłumaczonego Assembly-HOWTO na stronach polskiego projektu
JTZ (Jak To Zrobić) .
Do nauki assemblera możesz wykorzystać frontend do objdump --disassemble,
programik autorstwa
Andrzeja Radeckiego ktory konwertuje wyjscie objdumpa na html.
Programik ten znajduje sie na stronie
http://www.wpk.p.lodz.pl/~radecki/disasm.tar.gz
Zakładam, że mniej więcej wiesz co to jest assembler i gcc. Jeżeli wiesz
trochę więcej, nie irytuj się, że niektóre rzeczy będę wykładał jak krowie
na miedzy. Powtarzam: jeśli uważasz, że napisałbyś ten tekst lepiej, napisz
do mnie, a ja chętnie będę pierwszym czytelnikiem i na swojej stronie postawię
odnośnik do Twoich materiałów.
Niniejsze HOWTO opisuje głownie inline assembler pod x86 z wykorzystaniem
gcc; możesz jednak wykorzystać informacje w nim zawarte do nauki asma
pod inne maszyny. Jeden rozdział opisuje też jak
pisać bezpośrednio w assemblerze, bez żadnego C. Tam też dodałem opis
odwołań do jądra, czyli wołań systemowych - szybki i prosty sposób na
zmniejszenie rozmiaru kodu i zwiększenia jego nieczytelności.
NEXT - Punkt1 : Dlaczego nie używać assemblera?
PREV - Co nowego w tym dokumencie ?