Програмирование на fasm под Win64 часть 1 «Ассемблер, отладчик, IDE»

Введение

Я начинаю цикл статей по ассемблеру fasm. Возможно у вас есть вопрос: “Зачем в 21 веке нужен ассемблер?”. Я бы ответил так: Конечно, знание ассемблера не обязятельно, но оно способствует пониманию, во что превращается ваш код, как он работает, это позволяет почувствовать силу. Ну и в конце концов: Писать на ассемблере просто приятно (ну по крайней мере небольшие приложения).
Так что надеюсь, что мои статьи будут вам полезны.

Где взять fasm?

Собственно тут: http://flatassembler.net/download.php
На этой странице Томаш Грыштар(создатель fasm-а) выкладывает последнюю версию ассемблера. Там есть версии для DOS, Linux, Unix и Windows, нам нужна для Windows. В скачанном архиве находятся следующие компоненты:

  • fasm.exe – собственно сам ассемблер
  • fasmw.exe – IDE (среда разработки)
  • fasm.pdf – документация
  • папка source – исходники fasm-а (написан на самом себе)
  • папка include – папка с заголовками, импортами, и т.д.
  • папка examples – примеры программ на fasm-е
    Содержимое fasm.pdf дублирует 2 раздела документации “flat assembler 1.71 Programmer’s Manual” и “Windows programming” отсюда: http://flatassembler.net/docs.php

IDE (среда разработки)

Перед тем, как писать программы нужно определиться, в чём их писать. Для fasm-а существуют разные IDE, например: fasmw.exe(находится в архиве с fasm-ом), RadAsm, WinAsm Studio, Fresh, … Выберайте, какая вам больше по вкусу. Сразу скажу, что IDE из поставки fasm-а обладает минимальным количеством фичей, так что я бы рекомендовал использовать альтернативную IDE. Я, например, использую RadAsm 3.0, его можно взять здесь: https://fbedit.svn.sourceforge.net/svnroot/fbedit/RadASM30/Release/RadASM.zip К статье приложен файл Fasm.ini, там выбрана чёрная тема, добавлены x64 регистры и добавлена подсветка для большего числа инструкций. Можете поставить его вместо Fasm.ini поумолчанию, только исправьте в нём пути к папке с fasm-ом в 6 и 7 строках.

Отладчик

Писать программы это — хорошо, но нужно находить и исправлять баги, для этого нужен отладчик. Существуют разные отладчики способные отлаживать 64-битный код например: WinDbg, fdbg, x64dbg. Я использую WinDbg.

Далее я скажу пару слов о WinDbg. Скачать WinDbg можно с сайта Microsoft. При первом открытии WinDbg производит ужасающее впечатление, но не пугайтесь, нужно просто правильно настроить workspace. Добавлять разные окна можно с помощью меню “View”: от пункта “Command”(то, что показано по умолчанию) до “Processes and Threads”. Чтобы менять цвета оформления в том же меню “View” щёлкните по пункту “Options…”. Кроме окна с командами, которое есть по умолчанию нам понадобятся следующие окна:

  1. “Disassembly” – окно дизассемблера, чтобы видеть код.
  2. “Registers” – регистры, о них в следующей статье.
  3. “Memory” – для просмотра участков памяти.
  4. И ещё один “Memory” – для стека, поставьте в нём поле “Virtual” в значение rsp, а поле “Display format” в “Pointer and symbol”, о стеке я расскажу позже.

В принципе можете не заморачиваться и взять мой workspace, приложенный к статье “ссылка”, в WinDbg “File”->“OpenWorkspace in File…”

Это — всё, что я хотел рассказать в первой части.

Программы для развития.