Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » objdump для AVR Object File (AOF)


objdump для AVR Object File (AOF)

Сообщений 181 страница 210 из 210

1

Платформа: .Net 4.5, C#, VS2013
Ссылка на git репозиторий проекта: https://github.com/ViacheslavMezentsev/objdump
Ссылка на последнюю откомпилированную сборку: (пока ссылки нет)

Документацию на AOF можно найти в репозитории.

Как это выглядит в реальности:

http://img.radiokot.ru/files/4453/thumbnail/6by6j47v5.png

Документация на набор инструкций: AVR Instruction Set Manual

Требования: Исходные файлы, указанные в объектном файле, должны находиться в той же папке, откуда вызывается программа, т.е. всё должно быть рядом.
Формат вызова: objdump -S имя_объектного_файла

Описание: Программа objdump формирует смешанные листинги с результатом компиляции исходных файлов при помощи компилятора bascomp.exe. Выходные файлы имеют имя, соответствующее исходному файлу, и расширение .lst. Если в результате компиляции какому-то модулю не соответствует ни одной ассемблерной инструкции, то выходной листинг для него не формируется.

П.С. Сочувствующим товарищам, желающим высказать своё оценочное мнение не по теме: не надо мусорить в сети, вы либо пишите что-то конкретное, связанное с обсуждаемым вопросом, либо не пишите вообще, а просто наблюдайте за процессом. Под чем-то конкретным я понимаю вопросы технического характера (в плане программирования, сборки, отладки).

Я считаю AVR Studio и Proteus в данном конкретном случае - протезом для мозга. Случай этот - изучение ассемблера AVR и просмотр листингов смешанного кода, не выходя из одной программы. Если вы владеете ассемблером, то пользуйтесь на здоровье чем хотите, если нет, то не пишите в этой теме про удобство указанных программ.

Отредактировано uni (2015-02-10 14:55:36)

+2

181

Доброго, почту смотрел, но не читал. Если что-то не работает в Proteus, то это вопрос не ко мне, а к Марку. objdump ни на что не влияет в процессе компиляции. Если ты используешь опцию auto, то по идее CHIP указывать не надо, этот параметр он тоже должен брать из основного файла исходника.

По поводу ret или ijmp. В том месте, где я эту технику буду использовать, проще как раз - использование ret. По очень простой причине, которая будет понятна позже.

Сейчас мой командный файл для сборки проекта выглядит вот так (можете поправить для себя):

Код:
@echo off

"C:\Program Files\MCS Electronics\BASCOM-AVR\bascomp.exe" MainUnit.bas auto

if not %errorlevel% == 0 goto ShowError

echo Create listing...

objdump -S MainUnit.obj

if exist objbump.log type objbump.log

cscript //NoLogo showrpt.js MainUnit.rpt

goto Exit

:ShowError
type MainUnit.err

:Exit

Чтобы выводились ошибки нужно поправить строку с условием: if not %errorlevel% == 0 goto ShowError

Отредактировано uni (2013-11-06 20:06:55)

0

182

dibor написал(а):

Все окозалось очень просто.
Нужно скачать новый bascomp.exe с http://www.mcselec.com/index.php?option … ;Itemid=54 .(не обращать внимание на то что он якобы с 2005-12-29, внутри 2013 года файлик).
Оказывается он не обновляется с основной программой ( Вот геморой то)
Отредактировано dibor (Вчера 02:42:31)

Спасибо, это помогло. Теперь auto работает как надо.

0

183

При компиляции в последней версии программы, эмуляция в Протеусе не работает.

При компиляции этого-же исходника силами Bascom, все в норме!

0

184

Саша, нужно показать свой пример неработающего исходника на форуме Bascom, приложив файл отчета.

Отредактировано uni (2013-11-08 08:08:45)

0

185

uni написал(а):

Саша, нужно показать свой пример неработающего исходника на форуме Bascom, приложив файл отчета.

Отредактировано uni (Сегодня 06:08:45)


Все было отправленно тебе на почту 2 дня назад!

0

186

Это вопрос не ко мне, а к автору компилятора. Это у Марка нужно спрашивать почему тут работает, а тут нет.

0

187

uni написал(а):

Это вопрос не ко мне, а к автору компилятора. Это у Марка нужно спрашивать почему тут работает, а тут нет.


Странно, что не к тебе!

С предыдущей версией твоей программы, все компилируется, не работает с последней версией.

0

188

Какой моей программы? objdump? Она не имеет совершенно никакого отношения к процессу компиляции, она лишь интерпретирует результаты работы компилятора, вот и всё.

0

189

uni написал(а):

Какой моей программы? objdump? Она не имеет совершенно никакого отношения к процессу компиляции, она лишь интерпретирует результаты работы компилятора, вот и всё.

Она в процессе сборки кекса вообще не учавствует?

0

190

Конечно нет, ни в процессе получения obj, ни bin, ни hex файлов. С чего ты это взял? Ведь сам же вводишь команду для запуска её в работу и там указываешь объектный файл. Всё, что она делает, это читает obj файл и переводит его содержимое в текстовое представление.

0

191

uni написал(а):

Конечно нет, ни в процессе получения obj, ни bin, ни hex файлов. С чего ты это взял? Ведь сам же вводишь команду для запуска её в работу и там указываешь объектный файл. Всё, что она делает, это читает obj файл и переводит его содержимое в текстовое представление.


Стормозил, прошу прощения!

Будем шукать причину. Найду , отпишусь.

0

192

А не проще в "Файлах проекта" поставить галку "файл AVR Studio OBJ" и компильнуть проект?

0

193

Пётр написал(а):

А не проще в "Файлах проекта" поставить галку "файл AVR Studio OBJ" и компильнуть проект?

В каком это смысле? Не понял.

0

194

Вы господин uni здесь человек новый и мне очень жаль, что вы начали с минусования людей, которые высказывают свои мнения. Это весьма не прилично и не красит вас, как одного из любителей BASCOMа. Каждый имеет свое мнение и имеет право высказывать его на этом ресурсе. Мне по барабану ваше отношение ко мне лично, но сам принцип вашего подхода к критике заставляет задуматься.  :disappointed:

0

195

Я не господин, господа все в Париже, я предупреждал и просил не обижаться.
Я не делю людей на новых и старых, своих и не очень. Интересно человеку - я поделюсь с ним своим опытом, не интересно - проходите мимо, не мешайте.

+2

196

uni написал(а):

В каком это смысле? Не понял.

http://bascomavr.3bb.ru/uploads/0000/25/b8/3374-1-f.png

0

197

Пётр, я не понял цель вашего совета, объясните что он "улучшает" с ваших слов? Где вы увидели недостаток?

0

198

uni написал(а):

Описание: Программа objdump формирует смешанные листинги с результатом компиляции исходных файлов при помощи компилятора bascomp.exe. Выходные файлы имеют имя, соответствующее исходному файлу, и расширение .lst. Если в результате компиляции какому-то модулю не соответствует ни одной ассемблерной инструкции, то выходной листинг для него не формируется.

Что программа делает как бы понятно. Вопрос новичка: А зачем или кому нужны смешанные листинги? Какая от Ваших файлов (.lst) польза?

0

199

Это не "мои" файлы. Это стандартный вывод дополнительной информации о сборке для разработчиков. Как правило, в любом наборе, который идёт вместе с компилятором, есть такая утилита. Она предназначена для разбора того, что накомпилировал компилятор. Набор средств компилятора обычно имеет консольный интерфейс. Я просто дополнил bascomp такой утилитой. Такие листинги смотрят те, кому важно знать что в действительности выполняется контроллером на уровне его ассемблера, где расположены данные, как выглядит таблица векторов прерываний и подобные сопутствующие вещи. Люди, которые понимают такие листинги, не имеют вопросов по работе кода.

0

200

Спасибо за подробный ответ.

0

201

В хранилище добавлены все файлы проекта, т.е. теперь можно скачать полный набор исходников.

+1

202

Проект обновлён: objdump version 0.1.5227.2107 (24 апреля 2014 г. 1:10:14)

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

+3

203

uni написал(а):

Проект обновлён: objdump version 0.1.5227.2107 (24 апреля 2014 г. 1:10:14)

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

Да уж, прям САЛО В ШОКОЛАДЕ!!!

СПАСИБО!

Вот если-бы ещё комментарии на русском языке!

Отредактировано sasha_1973 (2014-04-24 06:36:02)

0

204

sasha_1973 написал(а):

Да уж, прям САЛО В ШОКОЛАДЕ!!!
Вот если-бы ещё комментарии на русском языке!


Все хорошо, но сальца бы еще доложить  :crazyfun:  :flag:  :D

Отредактировано Skull (2014-04-24 12:41:54)

0

205

Эт можно... :)

0

206

А можно не сальца, а ключики, отключающие вывод столбцов?. :)
Лично мне практически никогда не нужен цифровой код инструкции, достаточно мнемоники, не всегда нужны описания инструкций, хорошо бы иметь возможность их отключать (или хотя бы что бы они были с одиночной кавычкой и при копировании воспринимались бы как комментарии ).

0

207

IgorL написал(а):

А можно не сальца, а ключики, отключающие вывод столбцов?.
Лично мне практически никогда не нужен цифровой код инструкции, достаточно мнемоники, не всегда нужны описания инструкций, хорошо бы иметь возможность их отключать (или хотя бы что бы они были с одиночной кавычкой и при копировании воспринимались бы как комментарии ).

Полностью поддерживаю!!!

Славик, ответ за тобой!

0

208

sasha_1973 написал(а):

Полностью поддерживаю!!!

Поддерживаю поддерживающих! :flag:

0

209

Ключиков добавлю. На форуме bascom попросили ещё нестандартную возможность: удалять имеющиеся комментарии в bascom-исходнике, которые находятся после строки с выражением. Народ, я заметил, добавляет комментарии после команды в той же строке, от чего получается длиннющая строка, которая при печати переносится на следующую. Видимо смешанный листинг получается некрасивым и попросили опцию по отсечению "лишних" комментов, но не строк с комментариями просто. Их оставить.

Посмотрю что смогу сделать. Ещё хочу добавить расшифровку адресов регистров ввода-вывода, но для этого нужно будет указывать тип мк, т.к. они отличаются от одного к другому. Поэтому сейчас у меня так не делается.

Лично мне практически никогда не нужен цифровой код инструкции, достаточно мнемоники, не всегда нужны описания инструкций, хорошо бы иметь возможность их отключать (или хотя бы что бы они были с одиночной кавычкой и при копировании воспринимались бы как комментарии ).

Здесь пока можно использовать редакторы с блочным копированием. Обычно блок можно скопировать, удерживая нажатой клавишу Alt и выделяя его мышкой. Одиночную кавычку не обещаю, а вот возможность отключить я сделаю.

Отредактировано uni (2014-04-24 16:01:35)

+1

210

uni написал(а):

Ключиков добавлю. На форуме bascom попросили ещё нестандартную возможность: удалять имеющиеся комментарии в bascom-исходнике, которые находятся после строки с выражением. Народ, я заметил, добавляет комментарии после команды в той же строке, от чего получается длиннющая строка, которая при печати переносится на следующую. Видимо смешанный листинг получается некрасивым и попросили опцию по отсечению "лишних" комментов, но не строк с комментариями просто. Их оставить.

Посмотрю что смогу сделать. Ещё хочу добавить расшифровку адресов регистров ввода-вывода, но для этого нужно будет указывать тип мк, т.к. они отличаются от одного к другому. Поэтому сейчас у меня так не делается.

Здесь пока можно использовать редакторы с блочным копированием. Обычно блок можно скопировать, удерживая нажатой клавишу Alt и выделяя его мышкой. Одиночную кавычку не обещаю, а вот возможность отключить я сделаю.

Отредактировано uni (Сегодня 17:01:35)

Спасибо, сейчас так и делаю, но редакторов с блочным выделением текста сейчас все меньше. Расшифровка адресов это было бы очень замечательно! Тип МК как правило указан тегом $regfile =, может быть подключать уже описанные в *.dat адреса регистров? Так же ключем указывать каталог где лежат *.dat (по умолчанию "c:\Program Files\MCS Electronics\BASCOM-AVR\" ) ?

Читабельность резко бы повысилась! Лично я частенько вставляю ассемблерные вставки, посмотрев на то, что скомпилировал Bascom. Особенно если я работаю с переменной типа Byte (мой любимый тип), компилятор постоянно ее тягает то в память, то из памяти, а я раз загрузив врегистро провожу все действия в регистре и только потом пишу готовый результат в память. Если оно конечно того требует. Это дает отличный прирост по скорости и очень минимизирует код!. Особенно это ценно в обработчике прерывания!

PS Запускаю через cmd файл:

Отредактировано IgorL (2014-04-24 21:32:49)

0


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » objdump для AVR Object File (AOF)