Перейти к содержанию
    

VisualDSP 4.0 компилятор.

Как обычно пишем программу. На С, к примеру (или на С++, не суть важно). Компиляем, получаем результат - объектный файл. Все хорошо, но есть желание проконтролировать, чего там компилятор нагенерил. Нормальный, имхо, путь - это сказать компилятору, чтобы он выдавал листинг с нагенеренными мнемониками, чтобы сразу можно было видеть, какая ЯВУшная конструкция в какие асмовые команды выливается. Так и делается с IAR'ом, GCC, CCS. Но вот в сабжевом компиляторе что-то не нашел такого. Он умеет только выдавать ассемблерный файл (с раширением .s), который является просто временным (он его оставляет при указании сохранять временные файлы) и не содержит исходного текста.

 

Посему вопрос: имеется ли какая-нить возможность добиться желаемого. Про возможность загрузить исполняемый в симулятор и включить Mixed Mode, знаю, но это совсем не то, чего хоцца. А хоцца обычного листинга с асмовыми мнемониками.

 

В общем, не нашел что-то я такого (может плохо искал, хотя это вряд ли). Может есть какой-то другой способ? Кто как разруливает эту ситуацию?

 

Вообще, напрягло то, что с выдачей и листингов, и map'а от линкера конкретные траблы - map выдает в дурацком формате xml. Настолько дурацком, что даже в самом пакете есть специальный конвертор xml2html. Это ж надо до такого додуматься! А обычного текстового вида нет! Ну нравится если этот xml - оставьте, но почему других форматов-то нет? Хотя бы plain text! В том же IAR'е можно рулить между txt и html.

 

И размер кода результирующего линкер не выдает. Правда, с этим я успешно побился и достиг желаемого результата (с помощью elfdump и awk). :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как обычно пишем программу. На С, к примеру (или на С++, не суть важно). Компиляем, получаем результат - объектный файл. Все хорошо, но есть желание проконтролировать, чего там компилятор нагенерил. Нормальный, имхо, путь - это сказать компилятору, чтобы он выдавал листинг с нагенеренными мнемониками, чтобы сразу можно было видеть, какая ЯВУшная конструкция в какие асмовые команды выливается. Так и делается с IAR'ом, GCC, CCS. Но вот в сабжевом компиляторе что-то не нашел такого. Он умеет только выдавать ассемблерный файл (с раширением .s), который является просто временным (он его оставляет при указании сохранять временные файлы) и не содержит исходного текста.

 

Посему вопрос: имеется ли какая-нить возможность добиться желаемого. Про возможность загрузить исполняемый в симулятор и включить Mixed Mode, знаю, но это совсем не то, чего хоцца. А хоцца обычного листинга с асмовыми мнемониками.

 

В общем, не нашел что-то я такого (может плохо искал, хотя это вряд ли). Может есть какой-то другой способ? Кто как разруливает эту ситуацию?

 

Вообще, напрягло то, что с выдачей и листингов, и map'а от линкера конкретные траблы - map выдает в дурацком формате xml. Настолько дурацком, что даже в самом пакете есть специальный конвертор xml2html. Это ж надо до такого додуматься! А обычного текстового вида нет! Ну нравится если этот xml - оставьте, но почему других форматов-то нет? Хотя бы plain text! В том же IAR'е можно рулить между txt и html.

 

И размер кода результирующего линкер не выдает. Правда, с этим я успешно побился и достиг желаемого результата (с помощью elfdump и awk). :)

 

Ассемблерный код в s-файлах он выдаёт. По моему это - "Generate assembler code annotation" в закладке компилятора General.

 

По-поводу размеров кода - так он выдаёт размер секций и использованое пространство по секциям в мэпе. А общий размер вроде никого не волнует. Или я чего не понял...

 

По-поводу xml - это спросите у индусов, только им индусам из Бангалора ведомо

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ассемблерный код в 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 файле возле каждой инструкции ассемблеронной написана (в комментариях) ссылка на исходный файл с указанием номера строки. Ну почему бы просто не включить этот исходный текст? Не понимаю.

 

По-поводу размеров кода - так он выдаёт размер секций и использованое пространство по секциям в мэпе. А общий размер вроде никого не волнует. Или я чего не понял...

Да с этим понятно. Только вот не слишком это удобно - дампы эти рассматривать, размеры пересчитывать. Удобно сделано у IAR'а - линкер сразу и выдает. И тут бы тоже нелишне было бы если б можно было бы задавать вывод сразу после сборки в удобоваримом виде. Но это не вопрос - как сказал уже, с этим успешно поборолся, получилось вполне замечательно. А вот с листингом от компилятора прямо дыра какая-то. :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А понял. Хотелось, чтобы C-код тоже присутствовал, вместе с ассемблерным.

Мне показалось, что предъява такая - не выдаётся ассемблерный код.

Этого нет, да. В предыдущих версиях тоже не было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А чего XML напрягает? - запускаешь Explorer и после компиляции жмешь только на Refresh для обновления и смотришь, точно также как и в html.

 

Насчет кода си, да строки не вставляет. Если вы очень и очень хотите пишете свой постобработчик для вставки строк и запускаете его отдельно после компиляции.

И кстати таким образом можно в случае необходимости корректировать и сам код из *.s, после повторной компиляции будет браться более поздний файл *.s а не генериться из си.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Еще, после оптимизации (а именно этот код и интересен) код может настолько сильно разбросан по тексту,

что одна строка на ЯВУ не будет однозначно определяться - несколько сильно разбросанных точек вхождения. В таком случае использование аннотации кода наверно не оправдано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А чего XML напрягает? - запускаешь Explorer и после компиляции жмешь только на Refresh для обновления и смотришь, точно также как и в html.

Не вполне так. Не открывается он нормально эксплорером. Не зря же они там ковертор положили. Но это не самая проблема, с этим можно жить.

 

Насчет кода си, да строки не вставляет. Если вы очень и очень хотите пишете свой постобработчик для вставки строк и запускаете его отдельно после компиляции.

С этим понятно. Только уж больно много телодвижений. Эдак следующий шаг - типа, пишите себе свой компилятор и радуйтесь жизни. :)

 

В общем, недоделанная эта тулза. Элементарнейшая вещь, к тому же очень важная - ведь это ж не пень или атлон какой, на нем критические по размеру и скорости вещи работают, а нет ее! Приходилось довольлно плотно работать с несколькими комиляторами, везде оно в том или ином виде есть. А тут - шиш! :( Тут и вправду начинаешь думать, что какие-то штранные люди это разрабатывали (говорят, индусы).

 

 

И кстати таким образом можно в случае необходимости корректировать и сам код из *.s, после повторной компиляции будет браться более поздний файл *.s а не генериться из си.

Ага, а потом сишный сорец поправишь и при следующей сборке привет - все потуги в .s файле идут лесом вместе с самим файлом. Нет уж, спасибо, если меня заинтересует "рыба", сгенеренная из С, с целью потом руками рихтовать, то я этот файл лучше отдельно сохраню, положу в сорцы проекта.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С этим понятно. Только уж больно много телодвижений. Эдак следующий шаг - типа, пишите себе свой компилятор и радуйтесь жизни. :)

 

В общем, недоделанная эта тулза. Элементарнейшая вещь, к тому же очень важная - ведь это ж не пень или атлон какой, на нем критические по размеру и скорости вещи работают, а нет ее! Приходилось довольлно плотно работать с несколькими комиляторами, везде оно в том или ином виде есть. А тут - шиш! :( Тут и вправду начинаешь думать, что какие-то штранные люди это разрабатывали (говорят, индусы).

 

Тоды так. Сносите VDSP и ставите себе GHS Multi. Классическая в юниксовом смысле типа CASE-система с кучей профессиональных прибабахов типа Code Balance. Только DSP-код он оптимизирует хуже, зато всё остальное умеет делать лучше и как принято на других платформах.

 

И не надо думать ;-) Достаточно взглянуть на копирайты библиотек. Нормальные пацаны из Бангалора, типа тебя и меня

 

Не, ну это я загнул, сносить VDSP не надо, Multi использует его оптимизатор DSP-кода ;-) Но всё-таки неродной и опять-же эмулятор, виглер что ли прилаживать. Кстати никто не пробовал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

С этим понятно. Только уж больно много телодвижений. Эдак следующий шаг - типа, пишите себе свой компилятор и радуйтесь жизни. :)

 

В общем, недоделанная эта тулза. Элементарнейшая вещь, к тому же очень важная - ведь это ж не пень или атлон какой, на нем критические по размеру и скорости вещи работают, а нет ее! Приходилось довольлно плотно работать с несколькими комиляторами, везде оно в том или ином виде есть. А тут - шиш! :( Тут и вправду начинаешь думать, что какие-то штранные люди это разрабатывали (говорят, индусы).

 

Тоды так. Сносите VDSP и ставите себе GHS Multi. Классическая в юниксовом смысле типа CASE-система с кучей профессиональных прибабахов типа Code Balance. Только DSP-код он оптимизирует хуже, зато всё остальное умеет делать лучше и как принято на других платформах.

 

И не надо думать ;-) Достаточно взглянуть на копирайты библиотек. Нормальные пацаны из Бангалора, типа тебя и меня

 

Не, ну это я загнул, сносить VDSP не надо, Multi использует его оптимизатор DSP-кода ;-) Но всё-таки неродной и опять-же эмулятор.

:) Понял, спасибо. Видимо, все же останусь на этом, оптимизация не последнуюю роль играет. Да и, подозреваю, с эмуляторами родная софтина должна лучше дружить. Кроме того, уже со многим разобрался, жаль потраченного времени. Еще раз спасибо. :a14:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не вполне так. Не открывается он нормально эксплорером. Не зря же они там ковертор положили. Но это не самая проблема, с этим можно жить.

Так вроде вообще html собираются на свалку истории отправить, как раз с помощью XML. B в интернете сейчас полно сайтов на XML, за счет поддержки иерархии он позволяет отделить содержание от дизайна, также гораздо логически правильней по этой причине именно в нем и генерить MAP. Так что эту проблему Вам надо решить уже сейчас.

 

Проблемы просмотра XML были при просмотре в Operа, а в Мелкософте не замечаю (все время с ним и работаю), а текстовый файл при таком объеме и отсутствии навигации просто не рулит.

 

А написать свой постпроцессор, если вы планируете долго работать с VDSP и вам так удобней и облегчит жизнь - оправдано, сложность около часа, там инфа по стокам вся есть. Хотите вставте его в запуск Post Build и он будет автоматически вам все править после сборки.

Лично я просто, используя FIND и информацию о строках, смотрю в двух окнах и в принципе хватает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не вполне так. Не открывается он нормально эксплорером. Не зря же они там ковертор положили. Но это не самая проблема, с этим можно жить.

Так вроде вообще html собираются на свалку истории отправить, как раз с помощью XML. B в интернете сейчас полно сайтов на XML, за счет поддержки иерархии он позволяет отделить содержание от дизайна, также гораздо логически правильней по этой причине именно в нем и генерить MAP. Так что эту проблему Вам надо решить уже сейчас.

Вот когда его выкинут, тогда и вопросов не будет. А пока они есть. И вообще, вопрос с xml уже не стоит, проехали его.

 

Проблемы просмотра XML были при просмотре в Operа, а в Мелкософте не замечаю (все время с ним и работаю), а текстовый файл при таком объеме и отсутствии навигации просто не рулит.

Конкретно мап этот не открывается нормально ни в эксплорере, ни в опере. Т.ч. утилитка та ихняя очень кстати. Не зря они ее положили. Кстати, она не годится для любых xml'ей - на некоторые ругается. Т.ч. есть основания подозревать, что что-то там с ним у них не то.

 

Текстовый файл, кстати, у меня никаких трудностей не вызывает - в FAR'е все это отыскивается на раз. Очень быстро и оперативно. IAR вон тоже мап файл выдает будь здоров - ничего, жмем на F7 и вперед. Накрайняк там есть плагин для поиска с регулярными выражениями. И потоковому редактору текстовый форматированный файл скормить значительно проще.

 

А написать свой постпроцессор, если вы планируете долго работать с VDSP и вам так удобней и облегчит жизнь - оправдано, сложность около часа, там инфа по стокам вся есть. Хотите вставте его в запуск Post Build и он будет автоматически вам все править после сборки.

Я в курсе. Уже соорудил кое-что (выдирание размеров кода и данных из дампа и выдачу их в поток вывода). Вполне прилично. Оболочкой, кстати, я не пользуюсь для писания и сборки (для этого есть более достоный редактор + make), а только лишь в качестве отладчика. Т.ч. запуск левых тулзов никаких проблем не представляет, гибкость полная. Т.ч. по-настоящему нерешенной проблемой оставлось отсутствие нормального листинга у компилятора. Похоже, что тут ничего не поделаешь, придется с эти жить. :(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...