dxp 56 14 сентября, 2005 Опубликовано 14 сентября, 2005 · Жалоба Как обычно пишем программу. На С, к примеру (или на С++, не суть важно). Компиляем, получаем результат - объектный файл. Все хорошо, но есть желание проконтролировать, чего там компилятор нагенерил. Нормальный, имхо, путь - это сказать компилятору, чтобы он выдавал листинг с нагенеренными мнемониками, чтобы сразу можно было видеть, какая ЯВУшная конструкция в какие асмовые команды выливается. Так и делается с IAR'ом, GCC, CCS. Но вот в сабжевом компиляторе что-то не нашел такого. Он умеет только выдавать ассемблерный файл (с раширением .s), который является просто временным (он его оставляет при указании сохранять временные файлы) и не содержит исходного текста. Посему вопрос: имеется ли какая-нить возможность добиться желаемого. Про возможность загрузить исполняемый в симулятор и включить Mixed Mode, знаю, но это совсем не то, чего хоцца. А хоцца обычного листинга с асмовыми мнемониками. В общем, не нашел что-то я такого (может плохо искал, хотя это вряд ли). Может есть какой-то другой способ? Кто как разруливает эту ситуацию? Вообще, напрягло то, что с выдачей и листингов, и map'а от линкера конкретные траблы - map выдает в дурацком формате xml. Настолько дурацком, что даже в самом пакете есть специальный конвертор xml2html. Это ж надо до такого додуматься! А обычного текстового вида нет! Ну нравится если этот xml - оставьте, но почему других форматов-то нет? Хотя бы plain text! В том же IAR'е можно рулить между txt и html. И размер кода результирующего линкер не выдает. Правда, с этим я успешно побился и достиг желаемого результата (с помощью elfdump и awk). :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fontp 0 14 сентября, 2005 Опубликовано 14 сентября, 2005 · Жалоба Как обычно пишем программу. На С, к примеру (или на С++, не суть важно). Компиляем, получаем результат - объектный файл. Все хорошо, но есть желание проконтролировать, чего там компилятор нагенерил. Нормальный, имхо, путь - это сказать компилятору, чтобы он выдавал листинг с нагенеренными мнемониками, чтобы сразу можно было видеть, какая ЯВУшная конструкция в какие асмовые команды выливается. Так и делается с IAR'ом, GCC, CCS. Но вот в сабжевом компиляторе что-то не нашел такого. Он умеет только выдавать ассемблерный файл (с раширением .s), который является просто временным (он его оставляет при указании сохранять временные файлы) и не содержит исходного текста. Посему вопрос: имеется ли какая-нить возможность добиться желаемого. Про возможность загрузить исполняемый в симулятор и включить Mixed Mode, знаю, но это совсем не то, чего хоцца. А хоцца обычного листинга с асмовыми мнемониками. В общем, не нашел что-то я такого (может плохо искал, хотя это вряд ли). Может есть какой-то другой способ? Кто как разруливает эту ситуацию? Вообще, напрягло то, что с выдачей и листингов, и map'а от линкера конкретные траблы - map выдает в дурацком формате xml. Настолько дурацком, что даже в самом пакете есть специальный конвертор xml2html. Это ж надо до такого додуматься! А обычного текстового вида нет! Ну нравится если этот xml - оставьте, но почему других форматов-то нет? Хотя бы plain text! В том же IAR'е можно рулить между txt и html. И размер кода результирующего линкер не выдает. Правда, с этим я успешно побился и достиг желаемого результата (с помощью elfdump и awk). :) <{POST_SNAPBACK}> Ассемблерный код в s-файлах он выдаёт. По моему это - "Generate assembler code annotation" в закладке компилятора General. По-поводу размеров кода - так он выдаёт размер секций и использованое пространство по секциям в мэпе. А общий размер вроде никого не волнует. Или я чего не понял... По-поводу xml - это спросите у индусов, только им индусам из Бангалора ведомо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 56 14 сентября, 2005 Опубликовано 14 сентября, 2005 · Жалоба Ассемблерный код в s-файлах он выдаёт. По моему это - "Generate assembler code annotation" в закладке компилятора General. Не, это не то. При включенных аннотациях он просто включает закомментриованный блок вида: //------------------------------------------------------------------- // Procedure statistics: // // Frame size = 24 // // Scratch registers modified:{R0-R3,P0,P2,ASTAT} // // Call preserved registers used:{R7} // // Registers clobbered by function calls:{R0-R3,P0-P2,I0-I3,B0-B3,M0-M3,ASTAT,SEQSTAT,RETS,CC,A0-A1,LC0-LC1,LT0-LT1,LB0-LB1,SYSCFG,CYCLES,CYCLES2} //------------------------------------------------------------------- И все. А это существенно не то. Причем в самом .s файле возле каждой инструкции ассемблеронной написана (в комментариях) ссылка на исходный файл с указанием номера строки. Ну почему бы просто не включить этот исходный текст? Не понимаю. По-поводу размеров кода - так он выдаёт размер секций и использованое пространство по секциям в мэпе. А общий размер вроде никого не волнует. Или я чего не понял... <{POST_SNAPBACK}> Да с этим понятно. Только вот не слишком это удобно - дампы эти рассматривать, размеры пересчитывать. Удобно сделано у IAR'а - линкер сразу и выдает. И тут бы тоже нелишне было бы если б можно было бы задавать вывод сразу после сборки в удобоваримом виде. Но это не вопрос - как сказал уже, с этим успешно поборолся, получилось вполне замечательно. А вот с листингом от компилятора прямо дыра какая-то. :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fontp 0 14 сентября, 2005 Опубликовано 14 сентября, 2005 · Жалоба А понял. Хотелось, чтобы C-код тоже присутствовал, вместе с ассемблерным. Мне показалось, что предъява такая - не выдаётся ассемблерный код. Этого нет, да. В предыдущих версиях тоже не было. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bmf 0 14 сентября, 2005 Опубликовано 14 сентября, 2005 · Жалоба А чего XML напрягает? - запускаешь Explorer и после компиляции жмешь только на Refresh для обновления и смотришь, точно также как и в html. Насчет кода си, да строки не вставляет. Если вы очень и очень хотите пишете свой постобработчик для вставки строк и запускаете его отдельно после компиляции. И кстати таким образом можно в случае необходимости корректировать и сам код из *.s, после повторной компиляции будет браться более поздний файл *.s а не генериться из си. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bmf 0 14 сентября, 2005 Опубликовано 14 сентября, 2005 · Жалоба Еще, после оптимизации (а именно этот код и интересен) код может настолько сильно разбросан по тексту, что одна строка на ЯВУ не будет однозначно определяться - несколько сильно разбросанных точек вхождения. В таком случае использование аннотации кода наверно не оправдано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 56 15 сентября, 2005 Опубликовано 15 сентября, 2005 · Жалоба А чего XML напрягает? - запускаешь Explorer и после компиляции жмешь только на Refresh для обновления и смотришь, точно также как и в html. Не вполне так. Не открывается он нормально эксплорером. Не зря же они там ковертор положили. Но это не самая проблема, с этим можно жить. Насчет кода си, да строки не вставляет. Если вы очень и очень хотите пишете свой постобработчик для вставки строк и запускаете его отдельно после компиляции. С этим понятно. Только уж больно много телодвижений. Эдак следующий шаг - типа, пишите себе свой компилятор и радуйтесь жизни. :) В общем, недоделанная эта тулза. Элементарнейшая вещь, к тому же очень важная - ведь это ж не пень или атлон какой, на нем критические по размеру и скорости вещи работают, а нет ее! Приходилось довольлно плотно работать с несколькими комиляторами, везде оно в том или ином виде есть. А тут - шиш! :( Тут и вправду начинаешь думать, что какие-то штранные люди это разрабатывали (говорят, индусы). И кстати таким образом можно в случае необходимости корректировать и сам код из *.s, после повторной компиляции будет браться более поздний файл *.s а не генериться из си. <{POST_SNAPBACK}> Ага, а потом сишный сорец поправишь и при следующей сборке привет - все потуги в .s файле идут лесом вместе с самим файлом. Нет уж, спасибо, если меня заинтересует "рыба", сгенеренная из С, с целью потом руками рихтовать, то я этот файл лучше отдельно сохраню, положу в сорцы проекта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
fontp 0 15 сентября, 2005 Опубликовано 15 сентября, 2005 · Жалоба С этим понятно. Только уж больно много телодвижений. Эдак следующий шаг - типа, пишите себе свой компилятор и радуйтесь жизни. :) В общем, недоделанная эта тулза. Элементарнейшая вещь, к тому же очень важная - ведь это ж не пень или атлон какой, на нем критические по размеру и скорости вещи работают, а нет ее! Приходилось довольлно плотно работать с несколькими комиляторами, везде оно в том или ином виде есть. А тут - шиш! :( Тут и вправду начинаешь думать, что какие-то штранные люди это разрабатывали (говорят, индусы). Тоды так. Сносите VDSP и ставите себе GHS Multi. Классическая в юниксовом смысле типа CASE-система с кучей профессиональных прибабахов типа Code Balance. Только DSP-код он оптимизирует хуже, зато всё остальное умеет делать лучше и как принято на других платформах. И не надо думать ;-) Достаточно взглянуть на копирайты библиотек. Нормальные пацаны из Бангалора, типа тебя и меня Не, ну это я загнул, сносить VDSP не надо, Multi использует его оптимизатор DSP-кода ;-) Но всё-таки неродной и опять-же эмулятор, виглер что ли прилаживать. Кстати никто не пробовал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 56 15 сентября, 2005 Опубликовано 15 сентября, 2005 · Жалоба С этим понятно. Только уж больно много телодвижений. Эдак следующий шаг - типа, пишите себе свой компилятор и радуйтесь жизни. :) В общем, недоделанная эта тулза. Элементарнейшая вещь, к тому же очень важная - ведь это ж не пень или атлон какой, на нем критические по размеру и скорости вещи работают, а нет ее! Приходилось довольлно плотно работать с несколькими комиляторами, везде оно в том или ином виде есть. А тут - шиш! :( Тут и вправду начинаешь думать, что какие-то штранные люди это разрабатывали (говорят, индусы). Тоды так. Сносите VDSP и ставите себе GHS Multi. Классическая в юниксовом смысле типа CASE-система с кучей профессиональных прибабахов типа Code Balance. Только DSP-код он оптимизирует хуже, зато всё остальное умеет делать лучше и как принято на других платформах. И не надо думать ;-) Достаточно взглянуть на копирайты библиотек. Нормальные пацаны из Бангалора, типа тебя и меня Не, ну это я загнул, сносить VDSP не надо, Multi использует его оптимизатор DSP-кода ;-) Но всё-таки неродной и опять-же эмулятор. <{POST_SNAPBACK}> :) Понял, спасибо. Видимо, все же останусь на этом, оптимизация не последнуюю роль играет. Да и, подозреваю, с эмуляторами родная софтина должна лучше дружить. Кроме того, уже со многим разобрался, жаль потраченного времени. Еще раз спасибо. :a14: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bmf 0 15 сентября, 2005 Опубликовано 15 сентября, 2005 · Жалоба Не вполне так. Не открывается он нормально эксплорером. Не зря же они там ковертор положили. Но это не самая проблема, с этим можно жить. Так вроде вообще html собираются на свалку истории отправить, как раз с помощью XML. B в интернете сейчас полно сайтов на XML, за счет поддержки иерархии он позволяет отделить содержание от дизайна, также гораздо логически правильней по этой причине именно в нем и генерить MAP. Так что эту проблему Вам надо решить уже сейчас. Проблемы просмотра XML были при просмотре в Operа, а в Мелкософте не замечаю (все время с ним и работаю), а текстовый файл при таком объеме и отсутствии навигации просто не рулит. А написать свой постпроцессор, если вы планируете долго работать с VDSP и вам так удобней и облегчит жизнь - оправдано, сложность около часа, там инфа по стокам вся есть. Хотите вставте его в запуск Post Build и он будет автоматически вам все править после сборки. Лично я просто, используя FIND и информацию о строках, смотрю в двух окнах и в принципе хватает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dxp 56 15 сентября, 2005 Опубликовано 15 сентября, 2005 · Жалоба Не вполне так. Не открывается он нормально эксплорером. Не зря же они там ковертор положили. Но это не самая проблема, с этим можно жить. Так вроде вообще html собираются на свалку истории отправить, как раз с помощью XML. B в интернете сейчас полно сайтов на XML, за счет поддержки иерархии он позволяет отделить содержание от дизайна, также гораздо логически правильней по этой причине именно в нем и генерить MAP. Так что эту проблему Вам надо решить уже сейчас. Вот когда его выкинут, тогда и вопросов не будет. А пока они есть. И вообще, вопрос с xml уже не стоит, проехали его. Проблемы просмотра XML были при просмотре в Operа, а в Мелкософте не замечаю (все время с ним и работаю), а текстовый файл при таком объеме и отсутствии навигации просто не рулит. Конкретно мап этот не открывается нормально ни в эксплорере, ни в опере. Т.ч. утилитка та ихняя очень кстати. Не зря они ее положили. Кстати, она не годится для любых xml'ей - на некоторые ругается. Т.ч. есть основания подозревать, что что-то там с ним у них не то. Текстовый файл, кстати, у меня никаких трудностей не вызывает - в FAR'е все это отыскивается на раз. Очень быстро и оперативно. IAR вон тоже мап файл выдает будь здоров - ничего, жмем на F7 и вперед. Накрайняк там есть плагин для поиска с регулярными выражениями. И потоковому редактору текстовый форматированный файл скормить значительно проще. А написать свой постпроцессор, если вы планируете долго работать с VDSP и вам так удобней и облегчит жизнь - оправдано, сложность около часа, там инфа по стокам вся есть. Хотите вставте его в запуск Post Build и он будет автоматически вам все править после сборки. <{POST_SNAPBACK}> Я в курсе. Уже соорудил кое-что (выдирание размеров кода и данных из дампа и выдачу их в поток вывода). Вполне прилично. Оболочкой, кстати, я не пользуюсь для писания и сборки (для этого есть более достоный редактор + make), а только лишь в качестве отладчика. Т.ч. запуск левых тулзов никаких проблем не представляет, гибкость полная. Т.ч. по-настоящему нерешенной проблемой оставлось отсутствие нормального листинга у компилятора. Похоже, что тут ничего не поделаешь, придется с эти жить. :( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться