После многочисленных перетряхиваний внутренностей DisAsm (что ещё не закончено) были сделаны подвижки и в работе с перекрытиями - начато опробование механизма работы с ссылками не только в пределах родного перекрытия, но и в другие. Механизм, который выглядит простым и логичным - ищём ячейку по адресу ещё и вниз по дереву перекрытий до корня, а так же в других корневых перекрытиях.
Первые результаты
И вот тут я налетел на факт, что я мало знаю о многопользовательских .TSK из RSX.
Напоминание о том, что это такое - это программа, в которой компоновщик собрал две больших части - read-write секции (RW) и read-only секции (RO). И RO часть оформлена наподобие современных dll библиотек, но
- она "встроена" в программу, а не хранится отдельным файлом
- при первом запуске создается область памяти, куда грузится эта секция
- для RW секции запускаемых первого и последующих экземпляров программ для виртуального адресного пространства программы создаётся окно-отображение на эту область памяти (с доступом только на чтение!)
- эта область памяти остаётся в физической памяти до тех пор пока а) есть хоть один запущенный экземпляр программы и б) системе не требуется память для выделения чего то, а свободной памяти нужного размера нет. Причём в случае б система данную область памяти не выгружает, а просто освобождает. А как только эта RO секция опять нужна - она подгружается из .TSK файла
И вот в EDT.TSK это RO часть, если судить по данным в описании этого перекрытия (а оформляется оно как перекрытие) оказалась (значительно!) больше окна, через которое она будет отображаться
Код:
Task name : ...EDT
Partition name : GEN
Identification : V03.20
Task UIC : [1,24]
Task priority : 65.
Stack limits: 000256 001255 001000 00512.
PRG xfr address: 123470
Task attributes: CP,-FP,MU
Total address windows: 4.
Task image size : 8096. words
Task address limits: 000000 117777
R-W disk blk limits: 000002 000041 000040 00032.
R-O disk blk limits: 000042 000334 000273 00187. <--- ???? это о размещении в файле образа
......
*** Root segment: ROOT
R/W mem limits: 000000 037421 037422 16146.
R-O mem limits: 120000 172777 053000 22016. <--- размеры окна
Disk blk limits: 000002 000041 000040 00032.
Ну и поскольку обнаружилось это в процессе доработок-отладок поздно ночью - я решил - утро вечера (и ночи) мудреннее и пошёл спать Детектив продолжается...
- - - Добавлено - - -
Вдогонку. Нужно ещё продумать механизм генерации меток, на которые идёт ссылка из других перекрытий. Потому как они получаются а) ака глобальные символы и б) существующий алгоритм будет приводить к (потенциальной) генерации одинаковых меток для перекрытий, загружаемых с одного адреса