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

Тема в разделе "FASM", создана пользователем _qwe8013, 24 дек 2016.

  1. _qwe8013

    _qwe8013 Active Member

    Публикаций:
    2
    Регистрация:
    30 ноя 2016
    Сообщения:
    125
    Введение

    Я начинаю цикл статей по ассемблеру 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 отсюда:https://habrahabr.ru/post/187522/, в WinDbg “File”->“OpenWorkspace in File…”
    Это — всё, что я хотел рассказать в первой части.
     

    Вложения:

    • Fasm.zip
      Размер файла:
      6,8 КБ
      Просмотров:
      644
    yashechka, Alexey и rococo795 нравится это.
  2. _qwe8013

    _qwe8013 Active Member

    Публикаций:
    2
    Регистрация:
    30 ноя 2016
    Сообщения:
    125
    Сразу оговорюсь: на момент залива статьи на новый васм отладчик x64dbg - вполне годная альтернатива WinDbg.
     
    rococo795 нравится это.
  3. Alexey

    Alexey Инициативный

    Публикаций:
    1
    Регистрация:
    28 сен 2002
    Сообщения:
    271
    Привет, я так понимаю эта статья и планируемый цикл ваше личное творчество? Несмотря на то, что в целом fasm не обделен доступными материалами в сети Интернет, втч труды Мики, я бы попросил вас закончить этот цикл и опубликовать его в разделе статей https://wasm.in/blogs/ Зачем это мне? Я имею контакты с неск. универами и уверен что местным студентам (и не только) ваш свежий, рассчитанный на новичков материал будет полезен.
     
  4. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
  5. _qwe8013

    _qwe8013 Active Member

    Публикаций:
    2
    Регистрация:
    30 ноя 2016
    Сообщения:
    125
    Alexey, Это я публиковал когда раздел статей не был закончен, продолжу не раньше июля.
     
    Alexey нравится это.