Jaki jest najlepszy sposób na naukę montażu x86 na platformie Linux? [zamknięte]

Nie znam się wcześniej na programowaniu assembly i chciałbym się nauczyć jak kodować assembly x86 na platformie Linux. Jednak trudno mi znaleźć dobry zasób, z którym mogę się uczyć.

Sztuka montażu książka wygląda dobrze, ale uczy HLA. Nie chcę uczyć się w jeden sposób, a potem uczyć się od nowa. Wygląda na to, że architektury RISC mają lepsze zasoby do montażu, ale niestety nie mam procesora RISC, z którym mogę się uczyć. Czy ktoś ma jakieś sugestie?

Author: Mirzhan Irkegulov, 2009-04-06

10 answers

Http://asm.sf.net ma trochę materiałów na architekturach poza x86.

Jeśli interesuje Cię Architektura RISC, możesz uruchomić Linuksa na Qemu. Qemu emuluje kilka architektur RISC, takich jak PowerPC, ARM i MIPS. Możesz znaleźć gotowy do użycia obraz dysku twardego Qemu tutaj .

Innym sposobem eksperymentowania z architekturami RISC byłoby użycie wbudowanego symulatora gdb.

 10
Author: sigjuice,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-26 19:15:05

Uznałem Język asemblowania krok po kroku za bardzo dobry zasób. Ma sekcję z tyłu, która ma również na celu montaż Linuksa.

 9
Author: fARcRY,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-06 14:18:26

Prawdopodobnie nie ma nic lepszego niż sztuka programowania w języku Assembly i inne zasoby na tej stronie.

 2
Author: Charlie Martin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-06 14:07:00

Nauka programowania na poziomie assembly składa się z dwóch części: podstawowych pojęć, a następnie konkretnych architektur. Jeśli nie miałeś żadnej ekspozycji na programowanie asm, zdecydowanie sugeruję, abyś najpierw opanował podstawy za pomocą prostej, małej architektury, nawet jeśli prawdopodobnie nie ma to bezpośredniego zastosowania do żadnego prawdziwego sprzętu. Jeśli wielu ludzi wskazuje na konkretny zasób, taki jak " sztuka...", przyjrzyj się temu jeszcze raz, użyj go, aby dowiedzieć się, czym jest architektura, jak korzystać z podstawowych narzędzia (asm, debugger, disasm, etc).

Gdy już ich nie będzie, możesz zacząć szukać bardziej zaawansowanych zestawów instrukcji. Architektura x86 i zestaw instrukcji są dość zawiłe i istnieje wiele niejasnych sposobów na przekręcenie mózgu-naucz się czegoś prostego, zanim poradzisz sobie z tym.

 2
Author: Shannon Nelson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-08 03:03:48

X86 assembly to tak naprawdę język Intela, najlepiej poznany z chipem Intela i platformą windows, która robi DOS

Jeśli masz coś takiego jak WinXP, kiedyś istniał interpreter DOS, który pokazywał użytkownikowi podstawy asm i pozwalał na odwrócenie polecenia i dostosowanie kodu w czasie rzeczywistym, a następnie złożenie kodu w blok, który można uruchomić na interpreterze

Nazywano go "tłumaczem Ketmana"

To było tylko dla DOS asm, ale było dość unikalne ponieważ pozwala Ci zobaczyć, co dzieje się ze wszystkimi rejestrami i flagami i pozwala całkowicie bezmyślnej osobie uzyskać kontrolę nad logiką

 1
Author: ady,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-10 14:08:32

Try http://www.emu8086.com który jest emulatorem 8086 hostowanym przez windows z asemblerem i debuggerem. Zawiera samouczek.

 0
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-06 14:22:16

Asemblera x86 nauczyłem się z książki o 8086 (której obecnie nie pamiętam nazwy... był oczywiście dość stary i fioletowy. jeśli jesteś naprawdę zainteresowany mogę go wykopać, gdy wrócę do domu). To nauczy Cię tylko 16-bitowych rzeczy, dla bardziej zaawansowanych 32-bitowych rzeczy przeczytałem kilka samouczków online. Nigdy nie robiłem 64 bitów. Przynajmniej na początku system operacyjny, który kierujesz, prawdopodobnie nie będzie miał znaczenia, ponieważ jesteś zbyt niski... zależy Ci tylko na BIOSie. Jeśli nie masz dostęp do systemu testowego, emulator jest prawdopodobnie dobrym wyborem, jak inni wspominali, ale można również zbudować sobie 8088 lub 8086 bez większych problemów z dyskretnych części. Możesz łatwo znaleźć samouczki i schematy obwodów online. Powinien kosztować mniej niż $50 i jest to świetne doświadczenie uczenia się-zasadniczo budujesz płytę główną od podstaw.

Jeśli nie jesteś zbyt przywiązany do montażu x86 i chcesz nauczyć się RISC, polecam Microchip PIC mikrokontrolery. Możesz odebrać starter kit za mniej niż $50 (PICKit 1, który mam, działa nawet pod Linuksem). Mają obszerną dokumentację i mnóstwo samouczków innych firm skierowanych do hobbystów.

 0
Author: rmeador,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-06 14:51:02

Nie zapomnij pobrać książki Guide-Assembly-Language-Programming-in-Linux.

 0
Author: avar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-11 04:52:32

Mimo, że wiele osób, które znam w szkole nienawidziło tej książki, i tak ją linkuję:

Http://www.amazon.com/Professional-Assembly-Language-Programmer/dp/0764579010

Głównym powodem, dla którego użyłem tej książki jest to, że używa ona x86 na Linuksie z asemblerem GNU. Ten ostatni punkt pomógł, ponieważ musiałem użyć tego asemblera w naszym szkolnym laboratorium, a jeśli nie wiesz-składnia jest inna niż składnia Intela.

Dodam jeszcze, że uczenie się jak wysoki poziom języki są kompilowane do języka asemblacji naprawdę pomogło mi przejść.

 0
Author: Mr. Shickadance,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-11 05:28:50

Sztuka programowania języka asemblera

 -3
Author: rtacconi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-06 14:48:17