Я планирую реализовать динамическое связывание на моем диалекте. Проблема заключается в том, чтобы заставить передачу сообщений работать с динамическими ссылками.
Передача сообщений сама по себе так же проста: сообщение с селектором отправляется объекту, объект выбирает метод, соответствующий селектору из своего протокола, затем обрабатывает данные, связанные с сообщением, и возвращает результат.
В реализациях на основе изображений можно реализовать передачу сообщений очень простым способом - ваши селекторы сообщений могут быть просто целыми числами, переведенными из глобальной таблицы символов, ваши протоколы могут быть просто хеш-таблицами с целыми числами и адресами в них. Предполагая, что все это скомпилировано в одно большое изображение с этой глобальной таблицей символов.
При динамическом связывании нельзя использовать таблицу символов, указывающую на правильный селектор. Вы можете обойти проблему с использованием строк в качестве селекторов, но вы обречены на медленный язык.
Есть один способ, и он включает в себя копирование протоколов и таблицы селекторов для процесса, чтобы правильно их переместить. Но это звучит как большая работа.
Есть ли лучшие способы решить эту проблему? Кроме того, стоит ли динамическое связывание? Как я могу реализовать перемещение для селекторов и протоколов?