прям в инструкциях байткода? Вот например достаточно маленькие числа(i32 в моем случае). Идентификаторы хранятся также в нем? В питоне например я посмотрел есть LOAD_CONST и LOAD_NAME, какие могут быть причины такого разделения?
первое обычно кодирует константу в потоке байткода, а вторая — индекс константы в таблице констант Получается что в первом случае в стек (?) кладётся то что в байткоде лежит, а во-втором случае то что загружается из таблицы по индексу
И ещё, должны ли быть константы уникальными в нем?
Всё, что не помещается в регистр, то в пулл. Зачем держать i32 в пулле, когда указатель на него будет занимать больше места
Ну вот я также и подумал, поэтому и спросил собственно
Ну тут ещё нужно учесть, меняются ли "константы" или нет. Вон в erlang есть такой механизм как persistent_term: это типа пулл рантаймовых констант, которые можно менять в рантайме, что вызывает STW GC на всех процессах. Думаю такое тебе врятли нужно, так что я это просто как интересный факт упомянул
Не обязаны, но и записывать одно и то же по нескольку раз причин особых нет...
Обсуждают сегодня