Visual studio дизассемблер
Автор Андрей задал вопрос в разделе Другие языки и технологии
Где в Visual Studio 2012 дизассемблер? надо посмотреть что компилирует масм32 при .IF... .ELSEIF... и получил лучший ответ
Ответ от Миоко Таканава[гуру]
Имеется в виду MASM, встроенный в Visual Studio? Т. е. вы компилируете проект, целиком написанный на ассемблере, а не ассемблерные вставки в C или C++?
Выберите в меню СЕРВИС -> Параметры... -> Отладка -> Общие и поставьте галочку "Показывать дизассемблированный код, если исходный код недоступен".
Теперь после компиляции при нажатии клавиши F10 среда сразу покажет окно с дизассемблированным кодом для отладки.
Например, такая простенькая программа с использованием макросов .if и .elseif
.586
.model flat, c
option casemap :none
printf proto :dword, :vararg
_getch proto
_exit proto :dword
.data
Mess1 db "0", 0
Mess2 db "1", 0
Mess3 db ">1", 0
.code
N169470640:
rdtsc
and eax, 3
.if eax == 0
invoke printf, addr Mess1
.elseif eax == 1
invoke printf, addr Mess2
.else
invoke printf, addr Mess3
.endif
invoke _getch
invoke _exit, 0
end N169470640
в окне отладки будет выглядеть так:
P.S. Не знаю, можно ли в Visual Studio 2012 Express загрузить откомпилированную программу без исходного кода (у меня не получилось) , но на мой взгляд для этих целей лучше использовать OllyDbg. Он более удобный, чем встроенный в Visual Studio отладчик. Но это вопрос вкуса и привычки.
а что VS есть проекты для асма? не знал.
чем можно открыть .exe файл, чтобы посмотреть исходный код?
Хм.. .Сначала, с вашего позволения, пара вопросов. А что такое пинч? И как, посмотрев исходный код
подробнее...