VSCode в качестве IDE для masm64

Тема в разделе "IDE. Интегрированные среды разработки", создана пользователем Mikl___, 22 апр 2023.

  1. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    Visual Studio Code  ―  популярный редактор кода, бесплатный, с открытым исходным кодом.

    Устанавливаем Visual Studio Code

    Скачайте последнюю версию Visual Studio Code с официального сайта. Рекомендуется загрузить системный установщик (System Installer), но если у вас нет прав администратора, то пользовательский установщик (User Installer) тоже подойдет. Выполните все обычные шаги по установке. Не доверяете установщику? Скачайте и распакуйте zip-файл.
    100.jpg

    Настраиваем внешний вид редактора

    Открываем asm-файл (Файл Открыть... Ctrl+O)
    Первое, что мы сделаем ― установим русский язык. Нажимаем «View Extensions» (Ctrl+Shift+X), набираем «russian language»
    Жмем на «install»
    Жмем на «Restart»
    107.jpg
    «Вид Расширения» (Ctrl+Shift+X) набираем «masm», выбираем и устанавливаем masm-code (подсветка синтаксиса) и masm runner (запуск компилятора, линкера, готового приложения)
    «Command Palete» (Ctrl+Shift+P)
    набираем «Change Language Mode»
    Выбираем «asm»
    Ищем в папке C:\Users\...\.vcode\extensions каталог istareatscreens.masm-runner-0.4.5, удаляем его и заменяем на содержимое запакованное в файле istareatscreens.zip. В каталоге istareatscreens.masm-runner-0.4.5\out ищем файл extension.js, в нем строку const getPath = getPathBuilder("d:\\masm39"); и меняем d:\\masm39 на положение masm64 на вашем компьютере.

    Работа в VSCode

    Открываем asm-файл (Файл Открыть... Ctrl+O) Нажимаем Ctrl+Shift+P набираем Masm runner: Compile and run code запускается компилятор, линкер и будет создано GUI/ CONSOLE/ DLL-приложение, в соответствии с содержимым первой закомментированной строки в asm-файле. Если в текущей папке есть rc-файл с тем же именем, что и у asm-файла запустится компилятор ресурсов и к EXE/DLL-файлу будут прилинкованы ресурсы.
     

    Вложения:

    • 101.jpg
      101.jpg
      Размер файла:
      83,4 КБ
      Просмотров:
      996
    • 102.jpg
      102.jpg
      Размер файла:
      27,6 КБ
      Просмотров:
      1.006
    • 104.jpg
      104.jpg
      Размер файла:
      56,8 КБ
      Просмотров:
      1.012
    • 105.jpg
      105.jpg
      Размер файла:
      116,9 КБ
      Просмотров:
      1.018
    • 106.jpg
      106.jpg
      Размер файла:
      118,6 КБ
      Просмотров:
      1.022
    • 108.jpg
      108.jpg
      Размер файла:
      36,8 КБ
      Просмотров:
      1.007
    • 109.jpg
      109.jpg
      Размер файла:
      69 КБ
      Просмотров:
      1.029
    • 110.jpg
      110.jpg
      Размер файла:
      124,5 КБ
      Просмотров:
      1.031
    • istareatscreens.zip
      Размер файла:
      5,9 МБ
      Просмотров:
      281
    Последнее редактирование: 25 апр 2023
    E.N.D., Application, GRAFik и ещё 1-му нравится это.
  2. mantissa

    mantissa Мембер Команда форума

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    138
    • Как запустить x64dbg с командной строки не в полноэкранном, а в оконном режиме?
      Запускается в том режиме, в котором он был в последний раз открыт. (Перепробовал все ключи при запуске - не работает, в оф. документации тоже ничего не нашел.)
    • Как с командной строки "x64dbg test.exe" перейти на начало test.exe в памяти? Аналог нажатия на F9
      x64dbg -> Параметры -> Параметры -> События ->
      В Прерываться на: убрать системную точку останова и вызове TLS, тогда сразу при запуске бряк будет на EntryPoint
     
    Mikl___ нравится это.
  3. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    К сожалению всё время x64dbg открывается в полноэкранном режиме :scratch_one-s_head:
    Совет оставить галочку только у EntryPoint сработал :good3:
    111.jpg
     
    mantissa нравится это.
  4. mantissa

    mantissa Мембер Команда форума

    Публикаций:
    0
    Регистрация:
    9 сен 2022
    Сообщения:
    138
    Прокачиваем VS Code до IDE
    Visual Studio Code — это прежде всего редактор, и он включает в себя функции, необходимые для высокопродуктивного редактирования исходного кода. Но, с помощью таких высокоуровневых средств как: расширения, интеграция с системами контроля версий, настройка среда разработки, поддержка отладки и др. — его можно превратить в настоящий IDE для любого языка программирования, в том числе MASM.

    IntelliSense
    IntelliSense — это комплекс функций редактирования кода, включающий авто дополнение кода, информацию о директивах и параметрах функций, краткую справку. Эти возможности IntelliSense могут также называться иными терминами, например, "авто завершение кода", "помощь в работе с содержимым" или "подсказки кода".
    К сожалению, VS Code не поддерживает язык программирования MASM с коробки, но мы можем это исправить, добавив для этого расширение.

    Расширения
    Расширения можно разделить на две группы:

    1. Декларативная группа расширений
    Это такие расширения, которые определяются в конфигурационных файлах, они позволяют добавить:
    • Подсветка синтаксиса
    • Завершение фрагмента кода (сниппеты)
    • Сворачивание фрагментов кода (фолдинг)
    • Авто закрытие скобок
    2. Программная группа расширений
    Данные расширения включают: авто завершение, проверку ошибок, форматирование, рефактор и др. Эти возможности часто обеспечиваются сервером языка - программой, которая анализирует ваш проект для обеспечения динамических возможностей.
    [​IMG]
    Для начала остановимся на декларативных расширениях и добавим возможности, которые они предоставляют.
    «Вид → Расширения» (Ctrl+Shift+X) вводим «masm» и скачиваем расширение «MASM» от blindtiger. Далее мы будем лишь расширять функционал данного расширения, чтобы не писать все с нуля.

    Подсветка синтаксиса
    Расширение добавляет подсветку синтаксиса для констант, директив и инструкций. Полный список ключевых слов, которые распознаются расширением можно посмотреть по пути C:\Users\...\.vcode\extensions\blindtiger.masm-0.0.5\syntaxes в файле masm.tmLanguage.json. Там же, можно добавить свои ключевые слова, дополнив соответствующее регулярное выражение.

    Завершение фрагментов кода (сниппеты)
    При программировании на языке ассемблера, в связи с краткостью мнемоник и директив, по моему мнению, сниппеты редко могут пригодиться. Но для тех, кто использует «высокоуровневые» директивы (.IF .WHILE .FOR и др.) эта возможность весьма полезна.
    Настроить список сниппетов (изменить, добавить, удалить) можно по пути C:\Users\...\.vcode\extensions\blindtiger.masm-0.0.5\snippets
    В данной директории содержатся 3 файла:
    1. flow.json – содержит определение сниппетов для директив контроля выполнения.
    [​IMG]
    Поле prefix – это сам сниппет, при вводе которого, он развернется в то, что написано в поле body. Тут же есть небольшое описание и поле scope – оно определяет, в файлах с каким расширением данный сниппет будет работать.
    2. macro.json – определяет сниппеты для макроопределений.
    3. segment.json – определяет сниппеты для сегментов.
    Данное разделение по файлам – лишь семантика. В какой файл из этих добавлять новые сниппеты – дело ваше. Обратите внимание на поле scope, не забудьте указать расширения файлов, в которых будут применяться сниппеты.
    [​IMG]

    Сворачивание фрагментов кода (фолдинг)

    По умолчанию, в VS code сворачивание стоит для уровней табуляции.
    [​IMG]
    Добавим также распознавание процедур и структур, даже если они находятся на одном уровне: в уже знакомой нам директории blindtiger.masm-0.0.5 открываем файл language-configuration.json и добавляем в конце поле “folding”:
    [​IMG]
    Включив туда два регулярных выражения:
    • Start: "^\\S*\\s+(proc|struc)(\\s|$)+(\\s|\\S)*"
    • End: "^\\S*\\s+(endp|ends)(\\s|$)+(\\s|\\S)*"
    Авто закрытие скобок уже настроено разработчиком расширения в этом же файле, в полях surroundingPairs, autoClosingPairs, brackets.
     
    E.N.D. и Mikl___ нравится это.