12 / 12 / 2
Регистрация: 05.06.2016
Сообщений: 248
|
|
1 | |
Просмотр генерируемого кода специальных членов функций08.06.2017, 12:53. Показов 814. Ответов 5
Метки нет (Все метки)
Можно ли как-нибудь посмотреть код который генерирует компилятор для специальных членов функций для отдельных классов?
0
|
08.06.2017, 12:53 | |
Ответы с готовыми решениями:
5
TinyMCE. Как изменить шаблон генерируемого html кода? Найти сумму не используя специальных функций Генератор специальных функций (синуса, пилы на базе ШИМ) Перевести число в строку, не используя никаких специальных функций |
зомбяк
1584 / 1218 / 345
Регистрация: 14.05.2017
Сообщений: 3,939
|
|
08.06.2017, 13:00 | 2 |
компилятор не генерирует исходный код таких функций, он генерирует всё уже в машинном виде. Так что если нужен машинный код, дизассемблируешь и смотришь место, где создаются экземпляры нужного класса.
0
|
12 / 12 / 2
Регистрация: 05.06.2016
Сообщений: 248
|
|
08.06.2017, 13:04 [ТС] | 3 |
TRam_, я понимаю, но я спросил "Можно ли как-нибудь", может быть кто-нибудь сделал утилиту или способ для визуализации кода специальных членов функций.
0
|
Ушел с форума
|
|
08.06.2017, 13:15 | 4 |
Можно.
Например, MS C/C++ имеет такую опцию для сохранения ассемблерного листинга: /FA, /Fa (Listing File) https://msdn.microsoft.com/en-... y26c6.aspx Нечто подобное есть у всех (или почти всех) компиляторов.
0
|
12 / 12 / 2
Регистрация: 05.06.2016
Сообщений: 248
|
|
08.06.2017, 13:23 [ТС] | 5 |
Убежденный, С ассемблером всё понятно, я его не знаю, под кодом я имею ввиду C++ код.
0
|
18899 / 9857 / 2410
Регистрация: 30.01.2014
Сообщений: 17,300
|
|
08.06.2017, 13:35 | 6 |
Имеются в виду конструкторы, деструкторы и т.п.?
Посмотреть код можно, есть несколько способов: * нужно запустить компилятор в режиме генерации ассемблерного листинга. Для разных компиляторов это делается по-разному. Например, в gcc, mingw для этого служит ключ -S . Далее находим интересующее нас место и смотрим.* можно воспользоваться отладчиком и дойти в отладке до нужного места в программе, а потом вывести ассемблерный код. В отладчике GDB это можно сделать, например, получив нужное смещение в файле с помощью команды info line , а затем выведя ассемблерный листинг с помощью команды disassemble <смещение> . Или можно просто вывести ассемблер нужной функции с помощью disassemble 'файл'::имя_функции . Например, для operator= в классе MyClass будет disassemble 'твой файл.cpp'::MyClass::operator= .Однако это все условно. В том смысле, что во-первых эти функции вообще не существуют в программе, если не используются. Во-вторых у них может не быть адреса - т.к. все они были успешно встроены по месту вызова. А после того, как за код взялся оптимизатор, границы могут быть еще более размазаны. Поэтому задам классический вопрос: вы таки с какой целью интересуетесь? Добавлено через 3 минуты А, ну тут все просто. Никакого С++ кода у этих функций нет.
5
|
08.06.2017, 13:35 | |
08.06.2017, 13:35 | |
Помогаю со студенческими работами здесь
6
Просмотр функций dll Убрать из $watch() просмотр функций Просмотр алгоритмов функций php в Си Просмотр кода Просмотр кода с сайта Просмотр исходного кода Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |