Asembler x86/Narzędzia
Aby móc cokolwiek zrobić z naszą wiedzą nt. języka Asembler, będziemy potrzebować kilku narzędzi, które nam to umożliwią.
Asembler i linker
edytujProgram tłumaczący kod z języka Asembler na pliki z wykonywalnym kodem nazywamy asemblerem. Obecnie dostępne są:
- Microsoft Macro Assembler (MASM) firmy Microsoft
- Turbo Assembler (TASM) firmy Borland
- Netwide Assembler (NASM)
- Flat Assembler (FASM)
MASM | TASM | NASM | FASM | |
---|---|---|---|---|
popularność | b. duża | średnia | średnia | ostatnio spora |
platformy | Windows, DOS | Windows, DOS | Windows, Unix, DOS, MacOS X | Windows, Unix, DOS |
wer. 64-bitowa | tak | nie | tak | tak |
aktywność | mała | brak | spora | spora |
dostępność | bezpłatny | komercyjny | open-source | open-source |
Pierwsze dwa asemblery są dostępne jedynie w wersjach dla systemu Windows, zaś NASM i FASM są wieloplatformowe. Wszystkie asemblery są niemal identyczne w działaniu. Nie ma tu większego znaczenia coś takiego jak optymalizacja znana z kompilatorów języków wysokiego poziomu. Główne różnice leżą w makroinstrukcjach i dyrektywach, lecz i tutaj można zauważyć wiele podobieństw.
Asembler tworzy pliki .obj, które następnie można połączyć w plik wykonywalny za pomocą linkera. MASM jest udostępniany z własnym linkerem link.exe, TASM z Turbo Linkerem, NASM jest z reguły używany w połączeniu z programem GNU Linker lub ALINK, zaś FASM posiada wbudowany linker.
Wybierz jeden z powyższych asemblerów i omijaj rozdziały, które go nie dotyczą (rozdziały, w których składnie asemblerów różnią się, są w kilku kopiach, po jednej dla każdego asemblera).
Debuger
edytujDebugery mają za zadanie pomóc programiście w odnalezieniu błędów w programie. Większość debugerów pozwala dodatkowo na wstawianie w kodzie tzw. punktów wstrzymania, gdzie to debugger wstrzymuje działanie programu do czasu, dopóki nie dostanie odpowiedniej komendy od programisty. Debugery dodatkowo pozwalają na odczytanie wartości rejestrów procesora, czy wartości poszczególnych zmiennych. Obecnie najpopularniejszy debuger to GDB(GNU Project debugger), jednak do prostych zastosowań wystarczą również proste debugery, dostarczane wraz z asemblerami. Wielu programistów uważa je za zupełnie opcjonalne narzędzie, jednak większość starszych doświadczonych programistów jest ich fanatycznymi zwolennikami i tępi tę pierwszą grupę niemal jak heretyków. Ze względu na należne uznanie dla tej drugiej grupy, nie należy traktować tego narzędzia zbyt pobłażliwie.
Disasembler
edytujDisasembler to program tłumaczący kod maszynowy na język asemblera. Z reguły proste disasemblery dostarczane są w pakiecie wraz z asemblerami (bardzo dobry disasembler dostarczany jest wraz z asemblerem NASM). Jako, że jest to proces dość złożony, istnieje wiele komercyjnych disasemblerów, z których wg ogólnej opinii najlepszy to IDA Pro Disassembler. Dzięki tej grupie programów możemy wejrzeć w kod cudzych programów, jednak zdeasemblerowany kod znacznie różni się od oryginału, przez co jego interpretacja może być dość trudna. Proces interpretacji tegoż kodu nazywamy mianem inżynierii wstecznej (ang. reverse engineering). Disasemblery są z reguły używane w połączeniu z debugerami (IDA Pro Disassembler jest jednocześnie disasemblerem jak i debugerem).
IDE
edytujZintegrowane środowisko programistyczne (ang. integrated development environment (IDE)) łączy w sobie wszystkie powyższe narzędzia, dodając edytor tekstowy oraz często dodatkowe narzędzia. Większość asemblerów pracuje w trybie konsolowym, więc korzystanie z nich jest niewygodne. IDE robią większość zbędnej pracy za nas. Nie ma wśród nich żadnego faworyta; oto kilka z nich:
- Chrome IDE
- RadASM
- WinASM Studio
- ASM Edit
- AsmIDE
- MicroASM - bardzo prosty
- Microsoft Visual Studio - potężny kombajn od Microsoftu. Jeden z dwóch legalnych i prostych sposobów aby uzyskać dostęp do najnowszej wersji MASM(drugi to narzędzia budowania Visual Studio). W obu przypadkach trzeba zainstalować narzędzia budowania dla C++.
Istnieje również możliwość pisania programów asemblerowych w bardzo popularnym, wielojęzykowym środowisku Eclipse z pluginem ASM Plugin.
Do wygodnego tworzenia kodu, nawet przy wykorzystaniu konsolowych kompilatorów, wystarczy dobry edytor tekstowy z możliwością ustawienia kolorowania składni i wywoływania kompilatora bezpośrednio z okna edytora. Jest to wygodne jeżeli często korzysta się z innych języków programowania - wtedy jeden edytor pełni rolę IDE do wielu języków.
W przygotowaniu: Wszystkie działy w tym rozdziale rozpaczliwie potrzebują rozwinięcia. |