MASM & Visual Studio

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by greki_hoy, 9 Feb 2012.

  1. greki_hoy

    greki_hoy Member

    Joined:
    4 Mar 2010
    Messages:
    326
    Likes Received:
    57
    Reputations:
    41
    как привыкшему к комфорту сишнику программирующему на
    Visual Studio знающему множество хоткеев и прекрасно ориентирующемуся во встроенном отладчике также легко
    программировать на ассемблере пользуясь всеми
    накопленными знаниями в любимом редакторе со всеми
    фишками "incremetal search" "run to cursor" и иметь под
    рукой "зверя" встроенный отладчик который запускается так же легко как при компиляции си программы так же имеется возможность отлаживать по исходным кодам или переключится в режим дизассемблера в режиме отладки
    ассемблер будем использовать MASM32
    с его прекрасными высокоуровневыми макросами
    (а на этапе изучения асма это очень помогает)
    сейчас мы с вами будем учить Visual Studio работать как нам надо я буду использовать VS 2008


    итак качаем masm32 устанавливаем куда нить
    теперь создаем новый проект в visual studio
    file->new->project->general->empty project
    вводим имя проекта и жмем "ok"
    теперь
    solution explorer->source files->add->new item->code
    выделяем с++ file но ВАЖНО вводим имя файла main.asm


    ок теперь надо настроить
    solution explorer->main.asm->properties->custom build step
    приведу пример с моего проекта
    command line: C:\masm32\bin\ml.exe /c /coff /nologo /Zi /Fo $(InputDir)$(IntDir)\$(InputName).obj $(InputName).asm
    description: Assembling...
    output: $(InputDir)$(IntDir)\$(InputName).obj
    все понятно ? прописываем путь к асмовскому компилеру все опции
    узнаете запуском компилятора из командной строки

    project->properties->linker->optimization->link time code generation: Default

    все теперь работайте так же как и раньше запускайте отладчик делайте "run to cursor"
    пересборка и компиляция как и для сишной программы
    вообщем исходник будет компилиться асмовским компилем ml.exe
    а вот линкер будет использоваться от студии
    интересно получается смотриш через peid прога скомпилена через
    ml.exe а линкер версия стоит 9.0 но это все неважно

    собственно чего мы добились а вот что
    работаем в любимом редакторе
    пользуемся многими его фишками типа "inremental search" "run to cursor"
    главное имеем под рукой мощного зверя без которого невозможно работать
    а именно встроенный отладчик которым пользоваться очень удобно
    не отходя от кассы особенно радует "run to cursor" ну и прочие окна
    встроенного отладчика доступны
    вообщем по мне не жизнь а рай
    теперь качаем AsmHighlighter1_3.msi это аддон добавляет подсветку синтаксиса для
    .asm файлов ставим и вообще красота получается
    вот вам пару скринов
    [​IMG]
    [​IMG]
    [​IMG]
    а теперь тест драйв заходим сюда http://kaimi.ru/2010/09/masm32-часть-3-брутальная-бессердечность/
    берем исходник на масме вставляем в свой файл main.asm
    далее берем файл ресурсов вставляем в свой файл ресурсов
    жмем ctrl+alt+f7 запускаем вот что запустилось у меня
    [​IMG]

    все теперь мы можем писать программы на масме в родной студии и с любимым отладчиком под рукой
    и любой масмовский код рипнутый как например этот компилить прямо в студии
    удачи в постигании асма

    [append]
    если выполнить следующее

    tools->options->text editor->file extension
    в поле extension вводим .asm в поле editor
    выбираем microsoft visual c++ жмем "ok"
    перезапускаем студию

    то станет вообще круто ставиш курсор
    на имя функции жмеш F1 открывается мсдн с описанием функции
    так же если подвести курсор к имени переменной типа
    структуры то раскроется список с внутренними полями
    (в отладочной сессии) прямо как в сишных исходниках

    [append]
    да похоже эти настройки отрубают аддон
    ну не беда строки и так будут выделяться как
    сишные строковые литералы а подсветку других ключевых слов
    мы добавим другим путем создаем в папке
    C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE
    файл usertype.dat и пишем туда ключевые слова которые
    вы бы хотели выделять вот я собрал небольшой списочек

    Code:
    REPEAT
    repeat
    UNTIL
    until
    WHILE
    while
    ENDW
    endw
    IF
    if
    ENDIF
    endif
    ELSEIF
    elseif
    ELSE
    else
    BREAK
    break
    CODE
    code
    CONST
    const
    CONTINUE
    continue
    DATA
    data
    OFFSET
    offset
    SIZEOF
    sizeof
    PROC
    proc
    ENDP
    endp
    PROTO
    proto
    STRUCT
    ENDS
    ENDSW
    endsw
    ADDR
    addr
    END
    end
    получается довольно симпатично
    скрин:
    [​IMG]
    сохраните и перезапустите
    студию теперь и структуры разворачиваются и мсдн на
    нужном месте открывается и подсветка основных ключевых слов
    есть и отладчик под рукой магический "run to cursor"

    вообщем получился полный рулез
    кто еще не программирует на масме ?
    самое время начать
     
    #1 greki_hoy, 9 Feb 2012
    Last edited by a moderator: 22 Apr 2012
    3 people like this.
  2. greki_hoy

    greki_hoy Member

    Joined:
    4 Mar 2010
    Messages:
    326
    Likes Received:
    57
    Reputations:
    41
    кстати в прошлый раз подсветка была только ключевых слов синим через файл usertype.dat и только "строк" теперь если поставить VAssistX то с файлом usertype.dat останется все как и раньше а вот дополнительно имена апи функций стандартные типы данных и дефайны тоже будут подвечиваться разными цветами и плюс при этом сохраняется авто разворачивание структур (под отладчиком естественно) вот скрин
    [​IMG]
     
  3. CJ1

    CJ1 New Member

    Joined:
    6 Apr 2009
    Messages:
    29
    Likes Received:
    1
    Reputations:
    0
    Вот это пост! Спасибо большое!
     
  4. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    Неужели глаза не вытекают при такой цветовой теме?
     
  5. greki_hoy

    greki_hoy Member

    Joined:
    4 Mar 2010
    Messages:
    326
    Likes Received:
    57
    Reputations:
    41
    вытекают... но так у меня только ночью чтобы монитор не светил сильно...