|
1 / 1 / 0
Регистрация: 18.08.2014
Сообщений: 54
|
|
Как увидеть часть своего С++ кода на ассемблере?10.10.2016, 12:14. Показов 4630. Ответов 39
Метки нет (Все метки)
Есть код на С++, но...
Но программа "огромна" и работает "медленно". Хочется улучшить... Например, 1. вместо байтов использовать полубайты избегая операций разделения/сборки 2. вместо некоторых "целых" использовать биты 3. ... Но как увидеть "интересные" куски своего же С++ код на asm, чтобы понять как минимум: - 1. как там называются мои переменные и адреса их хранения (для последующих их обработок группами, вместо кучи индивидуальных) - 2. чем различаются некоторые мои подпрограммы. Стоит ли их сливать/разделять - 3. ...
0
|
|
| 10.10.2016, 12:14 | |
|
Ответы с готовыми решениями:
39
Как узнать имя компьютера (своего, чужого) из кода на VB? |
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
| 10.10.2016, 12:25 | |
|
Какой компилятор?
Как на VC++, так и на GCC можно получить ассемблерный листинг, сгенерированный из исходного кода. (Правда, для "огромной" программы и листинг будет немаленький.) Ну и да, как сказал коллега BOGG ART, копаться на уровне ассемблера в 99% случаев малоэффективно. Гораздо больше пользы принесет оптимизация алгоритмов на высоком уровне, на C++.
0
|
|
|
1 / 1 / 0
Регистрация: 18.08.2014
Сообщений: 54
|
|
| 10.10.2016, 12:28 [ТС] | |
|
Байт - 8 бит
Полубайт - 4. Зачем и правила это другой вопрос. Главный вопрос - как и можно или нет. Есть ряд задач, где важны размеры обрабатываемой информации и скорость. Да. Весь листинг - неподъёмен. Можно ли увидеть "интересную" часть кода?
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 10.10.2016, 12:29 | |||
|
откройте для себя "дата ориентированное программирование". или как сделать "кэш-френдли". профайлер? не, не слышал.
0
|
|||
|
Неэпический
|
|
| 10.10.2016, 12:52 | |
|
Оставлю здесь: http://gcc.godbolt.org/
4
|
|
|
1 / 1 / 0
Регистрация: 18.08.2014
Сообщений: 54
|
|||
| 10.10.2016, 13:09 [ТС] | |||
|
Croessmah,
Добавлено через 8 минут
Но если мои объекты "описываются" 16 "вариантами" (4 бита), то мне желательно пользоваться не байтами, а "полубайтами". Но дело не в этом. Дело в том, чтобы увидеть более подробный (чем С++) код. И не всей программы, а "интересного" места (3-5 строк). Вероятно, что это возможно, т.к. при ошибках иной раз вываливается "не интересный" кусок кода из "непонятного" места.
0
|
|||
|
Неэпический
|
||
| 10.10.2016, 13:13 | ||
|
Ключи компилятора, платформы и синтаксис можно выбирать. Также есть режим подсветки разных строчек разными цветами. И еще что-то там тоже есть.
0
|
||
|
1 / 1 / 0
Регистрация: 18.08.2014
Сообщений: 54
|
|
| 10.10.2016, 13:23 [ТС] | |
|
Если можно, поясните. У меня есть С++ и тексты моих модулей.cpp.
Но ассемблера у меня нет. Я могу выделить "интересную" мне часть кода, но как подать команду на её "расшифровку"? Как выйти на список и описание "ключей компилятора" позволяющих расшифровать "интересную" мне часть С++ кода?
0
|
|
| 10.10.2016, 13:36 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 18.08.2014
Сообщений: 54
|
||
| 10.10.2016, 13:54 [ТС] | ||
|
Упаковка и распаковка (особенно многократные) - ужасны. Поэтому вместо массивов из байт (или int-ов) желательны "полубайтовые" = "4х битные" (или иногда "3х битные") массивы. Но это действительно не по теме. Как "паковать" информацию решается в диалоге программиста и компьютера. Именно они вдвоём находят "лучшую комбинацию". А вопрос пока - как заменить часть С++ кода asm кодом? Например, имеем: ... a=b+c; d=a+b; c=0; ... Хотим увидеть asm-код средней строки ( d=a+b; ) конкретно в этом месте программы. Если это возможно, то как это сделать?
0
|
||
|
Любитель чаепитий
|
||
| 10.10.2016, 13:57 | ||
|
Потому что от того, что будет 4 бита вместо 8 скорость не поднимется. Я думаю, что компьютер и сам не будет трогать те биты, которые ему не нужны.
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 10.10.2016, 14:01 | |
|
0
|
|
| 10.10.2016, 14:02 | |
|
Не по теме: Так если вы сами говорите "ужасны", то почему они вам "желательны"?
0
|
|
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
|
|||||||||||||||||||||||||
| 10.10.2016, 14:18 | |||||||||||||||||||||||||
![]() процессор заточен не определенные типы данных,например 32х битный работает быстрее на 32хразрядных данных ставим точку останова запускаем в режиме отладки когда программа остановится в отладчике на нужной строчке, открываем окно дизасемблерного листинга и смотрим Добавлено через 2 минуты
0
|
|||||||||||||||||||||||||
|
1 / 1 / 0
Регистрация: 18.08.2014
Сообщений: 54
|
||
| 10.10.2016, 15:20 [ТС] | ||
|
Вы меня заинтриговали. Возможно, я что-то неправильно понимаю в "сегодняшнем" ...? В своё время (мне 63) я программировал на FORTRAN-е и там были объединения (общие области). Так что(?) разве здесь невозможно что-то типа: struct a {unsigned bi 3;} union c {int d[3]; bi[16];} где 3*16 бит совпадают в памяти с 16*3 бита? И возможно обращение к нужным 3м битам? Но (не помню где читал) более мелкие, чем байт данные существуют? Или уже нет? Жаль, если так... Это способно повлиять на кое-какие мои планы... Это не по теме, но спасибо Вам за это уточнение... Добавлено через 3 минуты Avazart, У меня С++ Builder 6 Где такое меню? Добавлено через 17 минут ValeryS, мне сложно ответить на Ваши вопросы. Но если в большом массиве битов мне надо несколько раз разыскать нужные комбинации, потом как-то изменить их и запомнить, то распаковки и упаковки обойдутся мне "в копеечку". Ещё раз... Могу ли я получить массив - 3х (или 4х) битных элементов, чтобы не использовать почти "пустые" байты? - или 9-ти битные элементы, чтобы не использовать почти "пустые" int-ы? Надо ли мне "плевать" на расход памяти? На "дыры/пустоты" в моих данных?
0
|
||
|
Модератор
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
|
||||
| 10.10.2016, 15:29 | ||||
|
есть битовые поля, но в данном случае, по моему,непригодны Добавлено через 4 минуты хотя вопрос в абстрактном ракурсе решения не имеет ![]() извечная проблема скорость/память реши что тебе важнее
0
|
||||
| 10.10.2016, 15:29 | |
|
Помогаю со студенческими работами здесь
20
Не понимаю как работает часть кода Объяснить как работает часть кода Как вырезать часть из кода страницы? Как вынести часть кода в процедуру? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|