У меня есть до того, как VC++ генерирует файлы ASM во время компиляции, которые я никогда раньше не использовал. Но это кажется весьма ограниченным, так как они просто лишние файлы, выброшенные во время компиляции. Я думал, возможно, что код ASM/C++ может быть связан, поэтому я могу перейти с C++ непосредственно на сгенерированный код ASM? Или можно установить точки останова в коде ASM? Возможно ли это, и я не знаю этих инструментов, или является генерацией ASM для автономного анализа?Понимание генерации ASM VC++
ответ
Файл языка ассемблера, созданный компилятором, в основном предназначен для автономного анализа. Если вы хотите сделать что-то вроде установки точки останова в сгенерированном коде сборки, вы можете это сделать. Когда откроется соответствующий исходный файл, щелкните правой кнопкой мыши и выберите «Перейти к разборке». Это покажет вам код языка ассемблера с инструкциями источника, чередующимися как комментарии (примерно как файл, который он генерирует отдельно). Затем вы можете установить точки останова для отдельных операторов языка ассемблера, которые были сгенерированы из любого конкретного оператора источника.
Это действительно работает только в режиме отладки, хотя сборка сгенерирована не так хорошо, как в выпуске. http://stackoverflow.com/questions/563000/can-optimizations-affect-the-ability-to-debug-a-vc-app-using-its-pdb –
@BlueRaja: Да и нет. Пока вы создаете отладочную информацию в режиме выпуска, вы все равно можете делать примерно то же самое. Разница в том, что глобальная оптимизация может изменить порядок кода, чтобы вы больше не получали соответствие 1: 1 между исходным кодом и тем, что оно генерирует. –
- 1. Понимание генерации генерации ANTIS profiler
- 2. Понимание этого бита кода ASM
- 3. inline asm to x64 - понимание
- 4. Stack walk with inline asm для VC++
- 5. MS VC++ ошибка синтаксиса встроенный ASM
- 6. VC встроенный ASM - переход с ОДК (RCR)
- 7. Преобразование вызовов GNU asm в VC++
- 8. Понимание генерации случайных чисел
- 9. Печатает код ASM для генерации данного класса
- 10. Понимание процедуры генерации и сеттера
- 11. Понимание небольшого кода asm со странной константой
- 12. Понимание ввода и вывода в ASM
- 13. Понимание вызовов функций в ARM ASM
- 14. Понимание ASM. Почему это работает в Windows?
- 15. Где * .lib после генерации * .dll с VC++?
- 16. Понимание иерархии файлов проекта проекта/решения VC++
- 17. Intrinsics Vs inline ASM для кодирования SSE в VC++ 2K8
- 18. Понимание случайной двумерной направленной генерации вектора
- 19. java.lang.VerifyError: Ожидание кадра стека, возникающего при генерации кода байта ASM
- 20. Насколько обязательными являются макросы asm/ioctl.h для генерации чисел ioctl?
- 21. Понимание того, почему реализация ASM fsqrt быстрее, чем функция стандартной
- 22. Понимание конвейера выполнения ASP.NET MVC для генерации времени создания страницы
- 23. Понимание кодовой базы C++ путем генерации UML-инструментов и методологии
- 24. VS C++ ASM для GCC ASM
- 25. DB ASM в Встраиваемый ASM C++
- 26. ASM/OPcode injection с C++
- 27. ASM: найти дескриптор родового типа
- 28. Код генерации: Haskell?
- 29. Проблема генерации XML-генерации
- 30. Как правильно включить ASM в проект sbt
Это будет трудно сделать, потому что C++ и asm не имеют представления 1: 1. –
Но компилятор точно знает, какой код он сгенерировал и должен иметь возможность сопоставлять с C++ -> ASM. Следовательно, вопрос, если файл PDB содержит данные для этого, или код ASM является только побочным продуктом. –