В своих страданиях на тему системности я дошел до перемещаемых библиотек. https://github.com/salextpuru/sdcc-n.../master/libsrc
И тут меня ждало горькое разочарование.
Интерфейс я продумал. Он работает. Но вот с таблицей релокации не получается.
Суть в том, что sdldz80 (линкер) не выдаёт таблицу и я написал простой скрипт, который сравнивает два откомпилированных по разным адресам файла. Но плохое состоит в том, что SDCC часто генерирует код, где используются половинки адреса. И как с этим быть не знаю. Метод сравнения двух файлов не работает.
То есть например, есть массив:
_array: .ds 200
И SDCC шпарит код навроде:
ld l,# (_array & 0x0F)
.......
ld h,# (_array >> 8)
Разумеется, сравнением двуж таблиц ни фина не сделать
Как заставить линкер выдавать таблицу перемещений? Или как её вообще получить? Она получается не простой.