ГОСТ Р ИСО/МЭК 8825-3—2016
D.4.2.2 Неявно генерируемой структурой кодирования является:
«Profilelndication ::= «SEQUENCE-OF {
«SEQUENCE{
more-bit
reserved
protocol-Profile-ID
«BOOLEAN,
«BIT-STRING (SIZE (2)),
«INTEGER (0..31)} }
D.4.2.3 Сначала мы образуем обобщенный объект кодирования для
«SEQUENCE-OF.
который использует
«бит-еще» в поле, указанном в виде параметра объекта кодирования и имеющим булево значение
TRUE
(кодиру
емое одиночным битом «1» в PER) для последнего элемента:
more-bit-encoding {< REFERENCE:more-bit >} «SEQUENCE-OF ::= {
REPETITION-ENCODING {
REPETITION-SPACE
SIZE variable-with-determinant
DETERMINED BY flag-to-be-set
USING more-bit
ENCODER-TRANSFORMS
{ { BOOL-TO-BOOL AS logicalmot} } } }
D.4.2.4 Этот объект кодирования используется также в D.4.3 и D.4.4. так как он дает фундаментальное опи
сание кодирования, необходимого для повторения.
D.4.2.5 При первом подходе (простом, но «нечистом»!) мы можем теперь определить наш объект кодирова
ния для
«Profilelndication.
используя
ENCODE STRUCTURE,
и применить этот объект кодирования в ELM. завер
шая данный пример. Этот объект кодирования определяется как:
profilelndicationEncoding «Profilelndication ::= {
ENCODE STRUCTURE{
STRUCTURED WITH
more-bit-encoding {< more-bit >} }
WITH PER-BASIC-UNALIGNED }
D.4.3 Использование отображений значения для обеспечения детерминанта «бит-еще»
D.4.3.1 При этом подходе мы скрываем структуру кодирования вопределении ECN для определяемой пользовате
лем структуры кодирования и используем отображение значения при помощи полей сопоставления, давая возможность
кодированиюопределяемой пользователем структуры кодирования закодироватьупрощенное определение типа АСН.1.
D.4.3.2 Теперь определение типа АСН.1 равно:
Profilelndication2 ::= SEQUENCE OF
protocol-Profile-ID INTEGER (0..31)
D.4.3.3 Это имеет следующую неявно генерируемую структуру кодирования (к которой мы применяем наши
кодирования в ELM):
«Profilelndication2 ::= «SEQUENCE-OF {
protocol-Profile-ID «INTEGER (0..31)}
D.4.3.4 Мы определяем структуру кодирования для кодирования, нужного нам. аналогично тому, как мы за писали
для АСН.1 в первом подходе (см. D.4.2.1). за исключением того, что мы используем
«PAD
для зарезерви
рованных битов:
«ProfilelndicationStruct ::= «SEQUENCE-OF {
«SEQUENCE{
more-bit-field
reserved
protocol-Profile-ID
«BOOLEAN,
«PAD,
«INTEGER (0..31) >}
D.4.3.5 Чтобы мы могли завершить кодирование, нам нужен теперь объект кодированиядлядвухбигоэого
«PAD:
pad-encoding «PAD ::= {
ENCODING-SPACE SIZE 2
PATTERN bits:‘00‘B }
189