nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 16:36



Reply to topic  [ 295 posts ]  Go to page Previous  1 ... 13, 14, 15, 16, 17, 18, 19, 20  Next
Proteus C++ DLL's 
Author Message
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
По поводу SDI файлов
В принципе их без особых проблем можно получить из листинга ассемблера.
НО!!!
если прога собрана из нескольких файлов...
появляется много непоняток:
какой стартовый адрес в конкретном исходнике?
наверное можно эту информацию вытянуть из карты памяти, которую формирует линкер.
разные линкеры формируют карту памяти по своему.
а если используются сегменты/секции... (я их использую довольно активно)..
..........
думаю самое простое решение будет возможность подключения в модели файла SDI
а в конверторе, как опция возможность указания фактического стартового адреса.


02 Feb 2016 19:34
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
aav8 wrote:
По поводу SDI файлов
В принципе их без особых проблем можно получить из листинга ассемблера.

Именно так и делают. И даже указывают в настройках какую утилиту натравить на LST-файл.
Обычно это что-то типа mpasmddx.EXE или avrddx.EXE, ASM11DDX.EXE и т.д.

aav8 wrote:
НО!!!
если прога собрана из нескольких файлов...
появляется много непоняток:
какой стартовый адрес в конкретном исходнике?

Вероятно, я что-то не так понял... но в листингах уже есть конкретные адреса.
Вот у меня, к примеру, прямо рабочий листинг:
Code:
            00 00      ORG  0000H;
      START:
     3 0000 31 FF 7F      LXI SP,7FFFH; set Stack
      MC0:
     5 0003 3E 55      MVI A,55H
      MC1:
     7 0005 21 00 90      LXI H,9000H;
     8 0008 01 00 30      LXI B,3000H
      MC2:
    10 000B 77        MOV M,A
    11 000C 23        INX H
    12 000D 0D        DCR C
    13 000E C2 0B 00      JNZ MC2
    14 0011 05        DCR B
    15 0012 C2 0B 00      JNZ MC2
    16 0015 76        HLT
      FILE:
          END

В нем конкретно указаны реальные адреса. А что еще надо?
А в других листингах - будут свои адреса если файлов несколько.
Насколько я понял ISIS сам находит нужную строку в нескольких SDI
по уникальному адресу...

Я когда тут ранее делал вручную SDI-файл, сделал его прямо из листинга.

_________________
iLavr


02 Feb 2016 20:44
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
у меня ассемблер помечает каждую строчку с адресом - одинарной кавычкой - что линкер сам поставит
конкретный адрес.
и все листинги получаются с нулевого адреса...
кросс-пакет от avocet/avsim (точно не помню, а тот комп пока недоступен)


02 Feb 2016 22:13
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
aav8 wrote:
у меня ассемблер помечает каждую строчку с адресом - одинарной кавычкой - что линкер сам поставит конкретный адрес.

А линкер разве не с obj-файлами работает?

LST - это ж обычно листинг после всей сборки бинарника (или хекса) из всех асм-файлов...

Я посмотрел разные LST - файлы в папке примеров Протезуса, они все в основном по структуре,
как я показал свой выше - явные адреса присутствуют.

_________________
iLavr


02 Feb 2016 23:02
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
да он (линкер) работает с объекниками
из asm получается obj и lst
а из obj получается hex и map (или что-то для загрузки в проц)
и в этих lst нет информации где они конкретно будут работать - это будет известно после линкера.


02 Feb 2016 23:58
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
aav8 wrote:
в этих lst нет информации где они конкретно будут работать - это будет известно после линкера.

Необычный несколько пакет... Я сам, честно говоря, стараюсь не разводить много файлов
в проекте. Может это выглядит смешно, но я сам начинаю спустя время в них путаться...
Где и что объявлено и почему я не нахожу в отдельном файле "вот это", а где "оно" тогда? :lol:

_________________
iLavr


03 Feb 2016 08:34
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
у меня сам ассемблер выдает такой листинг:
один файл -
Code:
                         6     
                         7               seg CODE
                         8     
0000'                    9      a22hex   proc
                        10               public a22hex
                        11     
0000' F5                12               PUSH PSW
                        13     
0001' F5                14               PUSH PSW
0002' 0F                15               RRC
0003' 0F                16               RRC
0004' 0F                17               RRC
0005' 0F                18               RRC
0006' CD 0013'          19               CALL a2hex   ;qr`pxhe 4 p`gpd`
0009' 77                20               MOV  M,A
000A' 23                21               INX  H
                        22     
000B' F1                23               POP  PSW
000C' CD 0013'          24               CALL a2hex   ;lk`dxhe 4 p`gpd`
000F' 77                25               MOV  M,A
0010' 23                26               INX  H
                        27     
0011' F1                28               POP  PSW
0012' C9                29               RET
                        30     
                        31               endproc
                        32     

и другой -
Code:
                        12     
0000'                   13      Ubin2dec proc
                        14               public Ubin2dec
                        15     
0000' 06 04             16               MVI  B,4   ;jnk-bn vhtp -1
0002' 36 20             17      ..1:      MVI  M,' ' ;opnohq`r| bqe opnaek`lh
0004' 23                18                INX  H
0005' 05                19                DCR  B
0006' C2 0002'          20                JNZ  ..1
0009' E5                21               PUSH H     ;qnup`mhr| `dpeq jnmv` dk
             p`qo`jnbjh
                        22     

это кусочки листингов
каждый адрес помечен кавычкой, что фактически он буден на другом месте
то, что не читается - это ассемблер выкидывает 7-ой бит, я букву я совсем не принимает.
мне этот пакет понравился из-за того, что линкер умеет вычислять выражения, чего к сожалению не умеет WinAVR...

а что, твой линкер смотрит исходники?
или в объектниках есть часть исходников?

я думаю все-же в модели сделать возможность указать SDI файл -


03 Feb 2016 21:21
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
aav8 wrote:
а что, твой линкер смотрит исходники?
или в объектниках есть часть исходников?
Не... меня просто вот эта фраза удивила:
aav8 wrote:
линкер сам поставит конкретный адрес. и все листинги получаются с нулевого адреса...

В объектниках должен быть объектный код же, а линкер согласует взаимные адреса и ссылки...
части исходников не видел в них.
aav8 wrote:
я думаю все-же в модели сделать возможность указать SDI файл -

Ну, возможно, это и правильно... чтобы однозначность была.

_________________
iLavr


04 Feb 2016 04:26
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
Ну вот - кой чего получилось.
Имя файла пока просто вбит в DLL.
Изучаю как сделать выбор файла...
Может сразу предусмотреть еще какие параметры чтоб не пересобирать модель?
Кстати можно указывать файл с ЛЮБЫМ расширением, а будет загружаться SDI.
И придется рисовать свой конвертор в SDI из листинга.
Почти подошел avrddx, но он адреса умножает на 2...
Пришлись править ручками.
Работает и по шагам, и просто исполнение, и останавливается на точках останова.


Attachments:
z80.JPG
z80.JPG [ 44.55 KiB | Viewed 11525 times ]
09 Feb 2016 02:41
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
Ну вот - вроде все заработало.
Сильно много не тестировал.
Сделал конвертор в SDI.
В модели можно выбирать файл с исходником (должен быть SDI в этом-же каталоге).


Attachments:
x80.rar [121.5 KiB]
Downloaded 380 times
11 Feb 2016 03:36
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
Думаю в тестовой схеме убрать все лишнее.
Переферию пересадить в память (с уменьшением размера).
И заняться i8080...
Благо корпус Lavr нарисовал, да и сама модель в принципе рабочая.


11 Feb 2016 21:10
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Привет всем.
работаю в 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
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
А инкреметы с другими регистрами также работают?
Имеется в виду флаг Z .
Проверить/поправить смогу только на след. неделе.
не помешал-бы код для проверки...
А реальном железе...


12 Feb 2016 20:43
Profile
Doomed

Joined: 12 Feb 2016 13:39
Posts: 463
Reply with quote
Действительно, проверил остальные коды с инкрементом(0x0C,1C,2C,3C,04,14,24,34), поведение одинаковое, флаг Z не выставляется. Во вложении проект специалиста, тестовые файлы для ROM и display.dll. root.bin - это оригинальный первый монитор спеца, с ним этот проект показывает стандартное приглашение на экране, а tst_L.bin - это тест памяти спеца из журнала, в который я добавил код на котором спец зацикливается. В реал прошивать ПЗУ проблематично, но в эмуляторе Башкирии2М этот тест работает адекватно. display.dll делал сам, по информации из начала этой ветки на базе готового проекта, который нашел, возможно даже, на этом сайте. Если нужно, то выложу исходники.


Attachments:
spec.zip [877.96 KiB]
Downloaded 449 times
13 Feb 2016 06:55
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
Подправил инкременты...
Интересно, чтоо тест ничего на счет этого не обругался...


Attachments:
x80-dll.rar [55.97 KiB]
Downloaded 445 times
14 Feb 2016 19:33
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 295 posts ]  Go to page Previous  1 ... 13, 14, 15, 16, 17, 18, 19, 20  Next

Who is online

Users browsing this forum: No registered users and 22 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.