Здравствуйте whiteForest, Вы писали:
Исправлена подсветка синтаксиса. -- ПК.
Как верно сказал adontz, в лоб решения не видно.
Но можно сделать криво:
1.
void fun1
{
__asm
{
jmp q;
DB "Label1"
q:
bla-bla-bla
}
}
Потом найти в коде слово Label1
void main()
{
find ("Label1", &fun1, &main);
}
2.
int arr[100];
int arr_i = 0;
void fun1()
{
__asm
{
mov arr[arr_i++], $;
bla-bla-bla
}
}
Повызывать все функции, они сами заполнят массив
void main()
{
fun1();
for (int i = 0; i < arr_i; ++i)
{
std::cout << arr[i] << "\n";
}
}
3. Разобрать символьную информацию, который пихает компилятор для debugger-а.
В частности информацию о том, для какой линии C-кода, какой адрес соответствует.
Причем эту информацию можно получить и для Release-версии.
Компиляем Release с добавлением Debug-информации.
Разбираем Debug-информацию и на ее основание патчим exe-шник, заполняя какой-нибудь массив.
С помощью Strip-а убераем Debug-информацию.
3 путь мне кажется самым перспективным, т.к. исходную программу можно не менять.
Будет проблема с макросами, т.к. внутри макроса номер строки один, но и это можно победить, прогнав сначала код отдельно через препроцессор, а только потом компилировать.