Assembler в Add-in

Разрабатывая аддин возникло желание добавить возможность просмотра ассемблерного кода для выбранного файла проекта – так же как это реализовано в CodeWarrior.
Для этого нам надо сделать следующее:

1. Добавить кнопку в контекстное меню файла.
2. Отдать компилятору на съедение выбранный файл
3. Создать окно отображения кода в студии
4. Вывести в это окно то, что нам отдал компилятор

Добавление кнопки.
Тут все просто, мы просто передираем код, любезно предоставленный нам Add-in Wizard когда мы создавали проект и меняем название и местоположение кнопочки 🙂
Единственным моментом является получение контекстного меню файла, это делается следующим образом:

_CommandBars cmdBars = (_CommandBars)_applicationObject.CommandBars;
CommandBar cmdBar = cmdBars[“Code Window”];
command.AddControl(cmdBar, 1);

Кормежка компилятора

Нам нужно получить название файла для скармливания – в данный момент мы делаем правый щелчок на открытом файле в текстовом редакторе и выбираем в нем нашу команду.
Имя файла получаем следующим образом:

_applicationObject.ActiveDocument.FullName;

Для того, чтобы компилятор сгенерировал нам ассемблерный код, мы запускаем его с ключем -S: gcc -S filename_cpp


ProcessStartInfo psi = new ProcessStartInfo();
psi.FileName = “psp-gcc”;
psi.Arguments = ” -S ” + filename;
psi.UseShellExecute = false;
psi.CreateNoWindow = true;
psi.WindowStyle = ProcessWindowStyle.Hidden;

Process.Start(psi);

Полученный файл с расширением .s будет лежать в текущей директории

Создание окна отображения кода в студии и вывод на экран.
Тут в принципе тоже ничего сложного.
_applicationObject.ItemOperations.OpenFile(asm_filename, Constants.vsViewKindCode);

Просто открываем файл, который нам сгенерировал компилятор.

Собсно вот и все 🙂

Similar Posts

  • Автомобиль

    Я наконец-то заимел возможность ездить на машине, вы думаете я стал крутым мачо, который может теперь перемещаться по городу со скоростью света и никуда не опаздывать? ХРЕН!!! Потому что это советский автомобиль, а это значит, что дня 3-4 ты ездишь, а потом столько же ты снова ездишь, но на обычном транспорте, потому что машина не…

  • Навеяно слонменами и бетменами

    Народ, если вы знаете, что бедмена нету, то почему вы решили, что все остальное должно существовать на самом деле? Откуда идет гон на то, что таких костюмов не существует, машины так не прыгают, а телки тают от одного взгляда? ЗЫ: Ну и мысли с бодуна 🙂 Share this post: Share on X (Twitter) Share on…

  • Отчёт: День восьмой (последний), возвращение

    В кои-то дни удалось выспаться. Пожалуй полезно, всё-таки вернувшись с горки и поужинав не начинать сразу пьянку, а тихонько свалить спать. В результате на утро состояние было очень даже радостным и позволило нормально рулить не отвлекаясь каждые полчаса на чашечку кавы. Стартовали мы даже по графику, в девять часов утра. Share this post: Share on…

  • Концерт Apocalyptica

    Вчера ходил на концерт апокалиптики. Ниче так, круто 🙂 Сначала был разогрев – в течении получаса выступали непонятные наши группы. Определенно им это удалось лучше чем группе “Supermax” перед концертом ДДТ пару лет назад, когда ее выгнали со сцены бутылками 🙂 А потом было полчаса затишья – разогрев закончился, а апокалиптика еще не вышла. От…

  • Rhythm of War

    Анонс, штоли 🙂 Надеюсь, что скоро релизнемся. http://rhythmofwar.com Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit