Istnieje wiele książek na temat montażu. Zwykle jednak mają do czynienia z ISA, o które mnie to nie obchodzi, takie jak MIPS lub ARM. Nie mam do czynienia z tymi architekturami; nie ma powodu, abym próbował się ich nauczyć.
Ale książki z x86 wydają się ... nieistniejące.
Powiedzmy na przykład, że próbuję zbudować zabawkowy kompilator generujący pliki Windows Portable Executable.
Czy istnieje książka, która jest de facto standardem opisującym najlepsze praktyki, metodologie projektowania i inne pomocne informacje na temat montażu x86? Co z tą książką czyni ją wyjątkową?
Odpowiedzi:
Kiedy byłem na studiach, użyłem asemblera dla procesorów x86 jako podręcznika i bardzo łatwo było go zrozumieć. Mam starszą czwartą edycję i porównałem ją z szóstą edycją i nie zauważyłem dużych zmian, więc prawdopodobnie możesz tanio kupić starszą kopię. Ludzie narzekają na to, że korzysta z własnej biblioteki na potrzeby operacji we / wy, ale w kolejnych rozdziałach mówi ci, jak to zrobić „twardo”.
źródło
Oczywistym miejscem do odwiedzenia jest strona internetowa Intela, na której można znaleźć instrukcje programowania i podręczniki do pobrania, które zawierają wszystko, co należy wiedzieć o architekturze x86.
Tutaj: Instrukcje dla programistów Intel® 64 i IA-32 Architectures Software
źródło
Programowanie Art of Assembly jest doskonałym zasobem, który ma sporo na temat programowania x86.
Przydatna jest również dokumentacja x64 ABI . Próbowałem znaleźć link do wersji, która była na stronie AMD, ale wydaje się, że już nie mogę go znaleźć, więc chyba będzie musiał to zrobić.
Coś, co może pomóc [trochę] podczas nauki, to zamiast pisać kompletną aplikację od zera w asemblerze, zamiast tego napisz większość w C (lub jakimkolwiek innym skompilowanym języku), a następnie wywołaj fragment kodu asemblera z że. Gdy to zrobisz, odwróć to, napisz program asemblera i wywołaj z niego niektóre funkcje C.
Edycja: Naprawiono literówkę.
źródło
Bardzo dobrą książką do nauki montażu w x86 są narzędzia optymalizujące procesor Pentium . Chociaż głównym celem tej książki jest optymalizacja kodu asemblera, uczy ona całego procesu Pentium i jest także dobrą książką referencyjną.
Jest on wyczerpany, ale nie jest trudny do znalezienia.
Jest wyposażony w dyskietkę zawierającą „optymalizator kodu asemblera”. W rzeczywistości nie optymalizuje kodu, ale zamiast tego tworzy komentowaną listę, która wskazuje, gdzie leżą nieefektywności, takie jak przeciągnięcia rurociągu.
Narzędzie dostarczane z książką jest ograniczoną wersją bardziej charakterystycznego produktu, który firma autora sprzedała, ale z powodów, które nie są mi znane, już dawno nie działają. Nie wiem dlaczego - sądzę, że takie narzędzie sprzedawałoby się jak ciepłe bułeczki.
Ogólnie x86 jest bardzo złożonym tematem, ponieważ istnieje wiele wariantów obsługiwanych przez różne modele mikroprocesorów. Po zapoznaniu się z podstawami warto zapoznać się z książkami danych Intela lub AMD w celu uzyskania dokładnego układu docelowego. Niestety kod, który działa szybko na jednym modelu procesora, może nie być tak szybki na innym układzie.
źródło
Dlaczego nie spróbować Wikibook - http://en.wikibooks.org/wiki/X86_Assembly . Daje dobry wstęp do języka asemblera.
Najważniejsze w montażu jest uświadomienie sobie, jakie to proste, i że musisz pozostać przy tej prostocie.
źródło