![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ТарасАтавин |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Как скомпилить проект не в исполняемый код, а на язык ассемблера, чтоб можно было его прочитать?
-------------------- Не так всё плохо, как оно есть на самом деле. |
|||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Берёшь скомпилированный файл, и читаешь через бинарный поток.
Или ты про дизассемблер, чтобы перевести в инструкции? Это сообщение отредактировал(а) akizelokro - 3.9.2013, 07:07 -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| ТарасАтавин |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
В исполняемом файле все инструкции уже в опкодах, а мне бы в мнемониках. И дирректив там вроде уже нет совсем. Мне попадалось в литературе, что c/c++ иногда компилируют в два этапа: сначала на ASM, потом вручную оптимизируют, а потом уже окончательно компилируют в код. И листинги попадались. С именами не только функций, но даже переменных. Листинг на c++, рядом листинг на ASM, се имена сохранены и добавлены новые. Не очень похоже на дизасемблер. И ещё мне попадалось упоминание того, что и сам компилятор может компилировать дважды: сначала c++ в ASM, потом ASM в код. Так вот, я хочу скомпилить только первый этап и сохранить его в файл. Не для оптимизации, а для анализа. Хочу посмотреть, на что прога похожа на низком уровне. Можно, конечно, дизить. Но зачем, если есть исходник? Лучше с него. И получить файл на ASME со всеми именами сегментов, перегруженных функций, переменных.
Это сообщение отредактировал(а) ТарасАтавин - 3.9.2013, 08:06 -------------------- Не так всё плохо, как оно есть на самом деле. |
|||
|
||||
| ChipNDale |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.6.2010 Репутация: 1 Всего: 1 |
Опция -S.
http://linux.die.net/man/1/gcc Это сообщение отредактировал(а) ChipNDale - 3.9.2013, 08:14 |
|||
|
||||
| ТарасАтавин |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Кодоблоки почему то не хотят её понимать. Если на странице Compoile settings->#defines ввести -S, то вообще пишет ошибку синтаксиса, а если S, то не реагирует.
-------------------- Не так всё плохо, как оно есть на самом деле. |
|||
|
||||
| ChipNDale |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.6.2010 Репутация: 1 Всего: 1 |
Потому что это не макрос, а опция командной строки (как -Wall, -O2 и др).
Не знаю где они указываются в code blocks, но гугл подсказывает, что в Project -> Build Options -> Compiler Settings tab -> Other Options. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
И этот человек учит нас, что рекурсия это плохо, что прямой вызов конструкторов и деструкторов это зло, что профессионалы никогда не ошибаются и пр.
|
|||
|
||||
| ТарасАтавин |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Ну как где я это написал? Не уместная рекурсия так же плоха, как пара миллиардов мёртвых переменных. Но ведь она бывает и необходима, тогда от неё нельзя избавляться.
Добавлено @ 10:22 Ну ка где я это написал? Ошибаются все. Но есть чисто ученические ошибки по элементарному не знанию, а есть вполне общие, в том числе среди ещё более идиотских, чем = вместо ==. Добавлено @ 10:26
. Это сообщение отредактировал(а) ТарасАтавин - 7.9.2013, 10:28 -------------------- Не так всё плохо, как оно есть на самом деле. |
||||
|
|||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
S не отменяет компиляцию. Небось опции идут через "-", а "S" без "-" рассматривается как название входного файла. Ну и ладно, в принципе. Академик Ершов, кажется, из новосибирского академгородка считался одним из самых блестящих алгоритмистов в стране, а по клавиатуре печатал со скоростью... с очень незначительной скоростью. -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| ТарасАтавин |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
-------------------- Не так всё плохо, как оно есть на самом деле. |
|||
|
||||
| ChipNDale |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.6.2010 Репутация: 1 Всего: 1 |
Я так полагаю, там линкер не может найти объектные файлы. В конце концов, можно открыть консольку и руками получить ассемблерный код.
|
|||
|
||||
| ТарасАтавин |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Как?
-------------------- Не так всё плохо, как оно есть на самом деле. |
|||
|
||||
| ChipNDale |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.6.2010 Репутация: 1 Всего: 1 |
Путь к компилятору и название файла с исходником подставить свои. |
|||
|
||||
| ТарасАтавин |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Compiling: Test.cpp
mingw32-g++.exe: fatal error: cannot specify -o with -c, -S or -E with multiple files compilation terminated. Process terminated with status 1 (0 minutes, 0 seconds) 0 errors, 0 warnings -------------------- Не так всё плохо, как оно есть на самом деле. |
|||
|
||||
| ChipNDale |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 11.6.2010 Репутация: 1 Всего: 1 |
А как командная строка выглядела?
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |