Author |
Message |
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
По поводу SDI файлов В принципе их без особых проблем можно получить из листинга ассемблера. НО!!! если прога собрана из нескольких файлов... появляется много непоняток: какой стартовый адрес в конкретном исходнике? наверное можно эту информацию вытянуть из карты памяти, которую формирует линкер. разные линкеры формируют карту памяти по своему. а если используются сегменты/секции... (я их использую довольно активно).. .......... думаю самое простое решение будет возможность подключения в модели файла SDI а в конверторе, как опция возможность указания фактического стартового адреса.
|
02 Feb 2016 19:34 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Именно так и делают. И даже указывают в настройках какую утилиту натравить на LST-файл. Обычно это что-то типа mpasm ddx.EXE или avr ddx.EXE, ASM11 DDX.EXE и т.д. Вероятно, я что-то не так понял... но в листингах уже есть конкретные адреса. Вот у меня, к примеру, прямо рабочий листинг: В нем конкретно указаны реальные адреса. А что еще надо? А в других листингах - будут свои адреса если файлов несколько. Насколько я понял ISIS сам находит нужную строку в нескольких SDI по уникальному адресу... Я когда тут ранее делал вручную SDI-файл, сделал его прямо из листинга.
_________________ iLavr
|
02 Feb 2016 20:44 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
у меня ассемблер помечает каждую строчку с адресом - одинарной кавычкой - что линкер сам поставит конкретный адрес. и все листинги получаются с нулевого адреса... кросс-пакет от avocet/avsim (точно не помню, а тот комп пока недоступен)
|
02 Feb 2016 22:13 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
А линкер разве не с obj-файлами работает? LST - это ж обычно листинг после всей сборки бинарника (или хекса) из всех асм-файлов... Я посмотрел разные LST - файлы в папке примеров Протезуса, они все в основном по структуре, как я показал свой выше - явные адреса присутствуют.
_________________ iLavr
|
02 Feb 2016 23:02 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
да он (линкер) работает с объекниками из asm получается obj и lst а из obj получается hex и map (или что-то для загрузки в проц) и в этих lst нет информации где они конкретно будут работать - это будет известно после линкера.
|
02 Feb 2016 23:58 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Необычный несколько пакет... Я сам, честно говоря, стараюсь не разводить много файлов в проекте. Может это выглядит смешно, но я сам начинаю спустя время в них путаться... Где и что объявлено и почему я не нахожу в отдельном файле "вот это", а где "оно" тогда?
_________________ iLavr
|
03 Feb 2016 08:34 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
у меня сам ассемблер выдает такой листинг: один файл - и другой - это кусочки листингов каждый адрес помечен кавычкой, что фактически он буден на другом месте то, что не читается - это ассемблер выкидывает 7-ой бит, я букву я совсем не принимает. мне этот пакет понравился из-за того, что линкер умеет вычислять выражения, чего к сожалению не умеет WinAVR... а что, твой линкер смотрит исходники? или в объектниках есть часть исходников? я думаю все-же в модели сделать возможность указать SDI файл -
|
03 Feb 2016 21:21 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Не... меня просто вот эта фраза удивила: В объектниках должен быть объектный код же, а линкер согласует взаимные адреса и ссылки... части исходников не видел в них. Ну, возможно, это и правильно... чтобы однозначность была.
_________________ iLavr
|
04 Feb 2016 04:26 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
Ну вот - кой чего получилось. Имя файла пока просто вбит в DLL. Изучаю как сделать выбор файла... Может сразу предусмотреть еще какие параметры чтоб не пересобирать модель? Кстати можно указывать файл с ЛЮБЫМ расширением, а будет загружаться SDI. И придется рисовать свой конвертор в SDI из листинга. Почти подошел avrddx, но он адреса умножает на 2... Пришлись править ручками. Работает и по шагам, и просто исполнение, и останавливается на точках останова.
|
09 Feb 2016 02:41 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
Ну вот - вроде все заработало. Сильно много не тестировал. Сделал конвертор в SDI. В модели можно выбирать файл с исходником (должен быть SDI в этом-же каталоге).
|
11 Feb 2016 03:36 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
Думаю в тестовой схеме убрать все лишнее. Переферию пересадить в память (с уменьшением размера). И заняться i8080... Благо корпус Lavr нарисовал, да и сама модель в принципе рабочая.
|
11 Feb 2016 21:10 |
|
|
PVV
Doomed
Joined: 12 Feb 2016 13:39 Posts: 463
|
Привет всем. работаю в proteus v8.3sp2 наткнулся на глюк в работе z80, след. код работает неправильно: LOOP: INR L JNZ LOOP NEXT: ... (если расположить код с нулевого адреса, то в hex это- 2c c2 00 00) в NEXT не попадаем никогда, вечный перебор адресов 0000-0003, тогда как след. код отрабатывает правильно: LOOP: DCR L JNZ LOOP NEXT: ... такое впечатление, что при инкременте L переход через 0 не устанавливает флаг Zero. наткнулся на это когда в специалиста, собранного в proteus, решил загрузить тест Рюмика.
|
12 Feb 2016 14:04 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
А инкреметы с другими регистрами также работают? Имеется в виду флаг Z . Проверить/поправить смогу только на след. неделе. не помешал-бы код для проверки... А реальном железе...
|
12 Feb 2016 20:43 |
|
|
PVV
Doomed
Joined: 12 Feb 2016 13:39 Posts: 463
|
Действительно, проверил остальные коды с инкрементом(0x0C,1C,2C,3C,04,14,24,34), поведение одинаковое, флаг Z не выставляется. Во вложении проект специалиста, тестовые файлы для ROM и display.dll. root.bin - это оригинальный первый монитор спеца, с ним этот проект показывает стандартное приглашение на экране, а tst_L.bin - это тест памяти спеца из журнала, в который я добавил код на котором спец зацикливается. В реал прошивать ПЗУ проблематично, но в эмуляторе Башкирии2М этот тест работает адекватно. display.dll делал сам, по информации из начала этой ветки на базе готового проекта, который нашел, возможно даже, на этом сайте. Если нужно, то выложу исходники.
|
13 Feb 2016 06:55 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
Подправил инкременты... Интересно, чтоо тест ничего на счет этого не обругался...
|
14 Feb 2016 19:33 |
|
|