Какой объект postscript обычно 8-байтовый, но упакован 9-байтовым? - PullRequest
2 голосов
/ 08 сентября 2011

Предполагается, что упакованный массив в Postscript является компактной функцией, где объекты могут быть плотно сжаты в памяти, исключая постороннюю информацию. Как нуль может быть только один байт, потому что он не несет никакой информации. Булевы значения тоже могут быть байтом-сигнатором. Целые числа могут быть 5 (или 3) байтов (если это небольшое число). Эталонным объектам потребовались бы полные 8 байтов, которые делает нормальный объект. Но в руководстве Postscript говорится, что упакованные объекты занимают 1-9 байт!

Когда сканер языка PostScript встречает процедуру, ограниченную {…}, Он создает массив или упакованный массив в соответствии с текущей упаковкой режим (см. описание оператора setpacking в главе 8). Значение массива занимает 8 байт на элемент. Значение упакованного массива занимает от 1 до 9 байт на элемент, в зависимости от типа и значения каждого элемента; типичный средний 2,5 байта на элемент. - PLRM 3ed, B.2. Использование виртуальной памяти, с. 742

Так какой объект становится больше, когда упакован? И почему? Водород-склеивание ??!

1 Ответ

1 голос
/ 08 сентября 2011

Любое значение, которое вы не можете представить в 7 байтах или меньше, будет нуждаться в 9 байтах.

Упакованный формат начинается с байта, который содержит количество следов байтов данных, поэтому любое значение, для которого нужны все 8байты данных будут 9 байтов, включая старший байт длины.

...