ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 марта
1037761 Топик полностью
fk0, легенда (18.09.2020 23:52, просмотров: 480) ответил Aleksey_75 на Угу! Но мне нужно было само понимание, я его получил! Описаний на этот счет фактически нету!
Такая методика широко известна, для тех кто сталкивался с 8-битными игрушками прибитыми к полу. Но так же известно, что она малоприменима на практике. Ещё доисторический M80 в CP/M умел генерировать таблицу релокаций, причём лучше (чем вот так)... Вообще я не совсем понимаю, как ты сможешь разделить .text и .data, в смысле избавиться от фиксированного смещения между ними. Допустим, ты по адресу понял, что относится к .text, что к .data и при загрузке каждый сегмент 

релоцировал по-своему, да? А теперь, внимание, слон в комнате: в сегменте .data могут запросто оказаться указатели на функции, а в сегменте .text отсылки к данным в .data. И как это будет работать???


Хотел тебе дать почитать:

https://github.com/riscv/riscv-elf-psabi-doc/issues/128

https://s3.amazonaws.com/connect.linaro.org/sfo15/Presentations/09-24-Thursday/SFO15-406-%20ARM%20FDPIC%20Toolchains.pdf (см. про указатели на функции).


Реально даже с теми опциями gcc что я давал достаточно печально: без указателей на функции в явном виде. В неявном можно: через ассемблер и оффсет от текущей операции вычислять адрес искомой функции -- смещения внутри объектника допустимы и не ведут к релокациям.

[ZX]