Сокращенный набор команд байт-кода микрооперационной системы и устройство с ограниченными ресурсами Российский патент 2025 года по МПК G06F9/455 

Описание патента на изобретение RU2837139C1

Область техники

Настоящее изобретение относится к области техники набора команд виртуальной машины и, в частности, относится к сокращенному набору команд байт-кода микрооперационной системы и устройству с ограниченными ресурсами.

Уровень техники

Язык программирования Java является объектно-ориентированным языком. «Класс» описывает набор данных (описания доменов), а также данные для работы с различными методами. Поля и методы классов описывают состояние и поведения объекта. Интеллектуальный SE (Secure Element (элемент безопасности)), микросхема безопасности с MCU (Micro Controller Unit (микроконтроллер)) имеют ограниченные ресурсы, и в настоящее время широко используется виртуальная машина Java Card, которая может запускать написанные на языке Java приложения. Приложения, написанные на языке Java, должны сгенерировать файл Class посредством компилятора Java, а затем преобразовать файл Class в файл Cap с помощью инструмента преобразования, предоставляемого Java Card, загрузить его в микросхему и выполнить его виртуальной машиной Java Card. Существуют проблемы с низкой производительностью выполнения набора команд Java Card на основе стека операндов по сравнению с байт-кодом набора команд на основе регистра.

Раскрытие сущности изобретения

Принимая во внимание недостатки, существующие в предшествующем уровне техники, задача настоящего изобретения заключается в обеспечении сокращенного набора команд байт-кода микрооперационной системы и устройства с ограниченными ресурсами, такого как интеллектуальные SE, защищенные микросхемы MCU, которые могут быть использованы с различными объектно-ориентированными и архитектурно-независимыми программами, чтобы максимально уменьшить размер байт-кода, что может не только уменьшить требования к памяти микросхемы для постоянного хранения, но и повысить эффективность выполнения кода.

Для решения вышеуказанной задачи техническое решение, принятое в настоящем изобретении, заключается в следующем:

сокращенный набор команд байт-кода микрооперационной системы, включающий в себя:

первую команду, причем первая команда содержит код операции, при этом информация о параметрах первой команды выражена имплицитно в коде операции;

вторую команду, которая представляет собой высокочастотную команду, имеющую множество форматов команд;

третью команду, которая содержит команду, имеющую различные форматы команд на основе различного количества параметров;

четвертую команду, которая содержит команду часто используемого типа данных и команду редко используемого типа данных, причем команда часто используемого типа данных имеет множество форматов команд, а команда редко используемого типа данных имеет один формат команд;

пятую команду, которая представляет собой команду, имеющую однобайтовый индекс набора констант;

шестую команду, которая представляет собой макрокоманду.

Кроме того, в сокращенном наборе команд, как описано выше, первая команда содержит:

команду, которая имплицитно включает как операнд, так и номер регистра в коде операции;

команду, которая имплицитно включает номер регистра в коде операции;

команду, которая имплицитно включает константный операнд в коде операции;

команду доступа к элементу массива, которая имплицитно включает тип элемента массива в коде операции;

команду, которая имплицитно включает тип и параметры вызова метода в коде операции.

Кроме того, в сокращенном наборе команд, как описано выше, вторая команда содержит:

часто используемую команду арифметических операций, имеющую множество форматов операций;

команду доступа к элементу массива в формате 4-разрядного регистра;

команду создания массива, которая имплицитно включает тип элемента массива в коде операции;

команды ветвления, имеющую множество форматов команд на основе равных и неравных результатов сравнения.

Кроме того, в сокращенном наборе команд, как описано выше, третья команда содержит:

команду вызова статического метода, имеющую различные форматы команд, на основе различного количества параметров;

команду вызова виртуального метода, имеющую различные форматы команд, на основе различного количества параметров;

команду вызова метода частного экземпляра, имеющую различные форматы команд, на основе различного количества параметров.

Кроме того, в сокращенном наборе команд, как описано выше, четвертая команда содержит:

команду часто используемых типов данных, включающую в себя команду коротких типов данных;

команду редко используемых типов данных, включающую в себя команду типов данных int.

Кроме того, в сокращенном наборе команд, как описано выше, пятая команда содержит:

команду вызова статического метода, имеющую однобайтовый индекс набора констант;

команду вызова виртуального метода, имеющую с однобайтовый индекс набора констант;

команду доступа к статическому домену, имеющую однобайтовый индекс набора констант;

команду доступа к домену экземпляра, имеющую однобайтовый индекс набора констант.

Кроме того, в сокращенном наборе команд, как описано выше, шестая команда содержит:

макрокоманду, сформированную на основе замены команды вызова статического метода;

макрокоманду, сформированную на основе объединения множества смежных команд.

Устройство с ограниченными ресурсами, причем на устройстве с ограниченными ресурсами запущена виртуальная машина, причем виртуальная машина выполнена с возможность исполнения сокращенного набора команд по любому из пп. 1-7.

Положительными эффектами настоящего изобретения являются: в настоящем изобретении разработан набор команд виртуальной машины на основе регистра для устройств с ограниченными ресурсами, таких как интеллектуальные SE, защищенные микросхемы MCU, которые могут быть использованы с различными объектно-ориентированными и архитектурно-независимыми программами, чтобы максимально уменьшить размер байт-кода, что может не только уменьшить требования к памяти микросхемы для постоянного хранения, но и повысить эффективность выполнения кода.

Краткое описание чертежей

На фигуре проиллюстрирована схематическая диаграмма сокращенного набора команд байт-кода микрооперационной системы согласно варианту осуществления настоящего изобретения.

Подробное описание вариантов осуществления

Настоящее изобретение более подробно описано ниже в сочетании с прилагаемыми чертежами и конкретными вариантами осуществления.

Команды состоят из кода операции длиной в байт, определяющую операцию, которая должна быть выполнена, за которой следует ноль или более операндов, представляющих значение, с которым необходимо работать. Каждая ячейка в описании формата команды представляет собой байт.Регистр в команде состоит из 16 битов, которые могут представлять булевый, байтовый, короткий, ссылочный тип и обратный адрес, тип int требует двух последовательно пронумерованных пар регистров. Нулевая ссылка представляет собой значение короткого типа 0, то есть (object) null=(short) 0. Последние несколько регистров в кадре стека вызова методов используются для передачи параметров методов. В настоящем изобретении разработан набор команд виртуальной машины TGoMOS на основе регистра (здесь и далее называемый сокращенным набором команд), предназначенный для устройств с ограниченными ресурсами, таких как интеллектуальные SE, защищенные микросхемы MCU, которые могут быть использованы с различными объектно-ориентированными и архитектурно-независимыми программами, чтобы максимально уменьшить размер байт-кода, что может не только уменьшить требования к памяти микросхемы для постоянного хранения, но и повысить эффективность выполнения кода.

Как показано на фиг. 1, вариант осуществления настоящего изобретения обеспечивает сокращенный набор команд для байт-кода микрооперационной системы, причем сокращенный набор команд содержит: первую команду, вторую команду, третью команду, четвертую команду, пятую команду и шестую команду.

Первая команда состоит из кода операции, при этом информация о параметрах первой команды выражена имплицитно в коде операции. Первая команда включает в себя:

a. команду, которая имплицитно включает как операнд, так и номер регистра в коде операции, например команду присваивания констант в табл. 1 ниже.

Таблица 1 Формат команды Мнемоника Представление op const-0/r0 r0=0 const-0/r1 r1=0 const-0/r2 r2=0 const-0/r3 r3=0 const-0/r4 r4=0 const-1/r0 r0=1 const-1/r1 r1=1 const-1/r2 r2=1 const-1/r3 r3=1 const-1/r4 r4=1 const-2/r0 r0=2 const-2/r1 r1=2 const-2/r2 r2=2 const-2/r3 r3=2 const-2/r4 r4=2 const-3/r0 r0=3 const-3/r1 r1=3 const-3/r2 r2=3 const-3/r3 r3=3 const-3/r4 r4=3 const-4/r0 r0=4 const-4/r1 r1=4 const-4/r2 r2=4 const-4/r3 r3=4 const-4/r4 r4=4

Из табл. 1 видно, что присвоение констант является очень частой операцией, и использование вышеуказанного кодирования может значительно сократить длину байт-кода способа.

b. Команду, которая имплицитно включает номер регистра в коде операции, такую как команда присваивания константы в Табл. 2, команда доступа к статическому домену в Табл. 3, необъектная команда результата, вызываемая методом возврата в Табл. 4, команда результата ссылки на объект, вызываемая методом в Табл. 5, и команда доступа к члену массива в Табл. 6.

Таблица 2 Формат команды Мнемоника Представление op AA const-c8/r0AA r0/1/2/3/4/5=AA
Символ AA расширен до 16 бит
const-c8/r1 AA const-c8/r2 AA const-c8/r3 AA const-c8/r4 AA const-c8/r5 AA

Таблица 3 Формат команды Мнемоника Представление op AA getstatic-o/r0 AA Возвращает значение статического поля ссылок в регистр r0-r4
AA: Индекс набора констант для статических полей
getstatic-o/r1 AA getstatic-o/r2 AA getstatic-o/r3 AA getstatic-o/r4 AA

Таблица 4 Формат команды Мнемоника Представление op mv-r/r0 Перемещают необъектный результат в виде одного слова самого последнего вызова метода в регистры r0-r4
Эта команда должна следовать за вызовом метода.
mv-r/r1 mv-r/r2 mv-r/r3 mv-r/r4

Таблица 5 Формат команды Мнемоника Представление op mv-ro/r0 Перемещают необъектный результат самого последнего вызова метода в регистры r0-r1
Эта команда должна следовать за вызовом метода.
mv-ro/r1

Таблица 6 Формат команды Мнемоника Представление op A | B getarray-b/r0 rA rB
getarray-b/r1 rA rB
getarray-b/r2 rA rB
getarray-b/r3 rA rB
getarray-b/r4 rA rB
getarray-b/r5 rA rB
r0-r5: Возвращаемое значение
rA: Ссылка на массив, 4-битный регистр
rB: Индекс элемента, 4-битный регистр

c. команду, которая имплицитно включает константный операнд в коде операции;

d. команду доступа к элементу массива, которая имплицитно включает тип элемента массива в коде операции;

e. команду, которая имплицитно включает тип и параметры вызова метода в коде операции.

Сокращенный набор команд по настоящему изобретению дополнительно содержит вторую команду, и вторая команда представляет собой высокочастотную команду, имеющую множество форматов команд. Вторая команда включает в себя:

a. часто используемую команду арифметических операций, имеющую множество форматов операций, такую как команда операции сложения в табл. 7, команда операции AND в табл. 8.

Таблица 7 Формат команды Мнемоника Представление op A | B add/2r rA rB rA=rA+rB op A | B add-c4/1r rA B rA=rA+B op A | B CC add-c8rA rB CC rA=rB+CC op AA B | C add/R44 rAA rB rC rAA=rB+rC op AA BB CC добавить rAA rBB rCC rAA=rBB+rCC op A | B iadd/2r rA rB rA=rA+rB op A | B CC iadd-c8rA rB CC rA=rB+CC op A | B CC h CC l iadd-c16rA rB CCCC rA=rB+CCCC op AA BB CC iadd rAA rBB rCC rAA=rBB+rCC

Поскольку операции надстройки более распространены, предоставление множества форматов операций может уменьшить размер байт-кода. По сравнению с 4-байтовой длиной команды add rAA rBB rCC/iadd rAA rBB rCC использование других команд может уменьшить размер 1 или 2 байта.

Таблица 8 Формат команды Мнемоника Представление op A | B и/2r rA rB rA=rA & rB op A | B and-c4rA, B rA=rA & B op A | B s2b2s rA rB rA=rB & 0x00FF op A | B CC and-c8rA, rB, CC rA=rB & CC op AA B | C and/R44 rAA rB rC rAA=rB & rC op A | B CC h CC l and-c16rA rB CCCC rA=rB и CCCC op AA BB CC and rAA rBB rCC rAA=rBB & rCC op A | B iand/2r rA rB rA=rA & rB op A | B CC iand-c8rA, rB, CC rA=rB & CC op A | B CC h CC l iand-c16rA rB CCCC rA=rB и CCCC op AA BB CC iand rAA rBB rCC rAA=rBB & rCC

Поскольку операции более распространены, предоставление множества форматов операций может уменьшить размер байт-кода. По сравнению с 4-байтовой длиной команды and rAA rBB rCC/iand rAA rBB rCC использование других команд может уменьшить размер 1 или 2 байта. Например, третья строка команды s2b2s rA rB имплицитно включает операнд 0xFF в коде операции, уменьшая длину команды.

b. команду доступа к элементу массива в формате 4-разрядного регистра, как показано в табл. 9.

Таблица 9 Формат команды Мнемоника Представление op AA B | C getarray-o/R44 rAA rB rC rAA: Возвращает или задает значение 8-битного регистра
rB: Ссылка на массив, 4-битный регистр
rC: Индекс элемента, 4-битный регистр
op AA BB CC getarray-b rAA rBB rCC rAA: Возвращает или задает значение 8-битного регистра
rBB: Ссылка на массив, 8-битный регистр
rCC: Индекс элемента, 8-битный регистр
getarray-s rAA rBB rCC getarray-o rAA rBB rCC putarray-b rAA rBB rCC putarray-s rAA rBB rCC putarray-o rAA rBB rCC op AA BB CC igetarray rAA rBB rCC rAA: Возвращает или задает значение 8-битной регистровой пары
rBB: Ссылка на массив, 8-битный регистр
rCC: Индекс элемента, 8-битный регистр

Из табл. 9 видно, что команды в формате 4-разрядного регистра на один байт меньше команд в 8-битном регистре, а 4-разрядный регистр для часто используемых команд (таких как getarray-o) может значительно уменьшить длину байт-кода.

c. команду создания массива, которая имплицитно включает тип элемента массива в коде операции, как показано в табл. 10.

Таблица 10 Формат команды Мнемоника Представление op A | B newarray-b rA rB Создание массива типов байтов
rA: Хранение ссылки на новые массивы
rB: Количество элементов массива
op AA B | C newarray rAA rB C Создание булевого, короткого, int и основного типа массива
rAA: Хранение ссылки на новые массивы
rB: Количество элементов массива
C: тип массива, значение которого приведено в таблице ниже
op CC h CC l A | B newarray-o rA rB CCCC Создать массив ссылочного типа
rA: Хранение ссылки на новые массивы
rB: Количество элементов массива
CCCC: Индекс набора констант элемента массива ссылочного типа

Из табл. 10 видно, что первая строка команды newarray-b rA rB используется чаще, а тип элемента (байт) элемента массива имплицитно включен в коде операции, который может быть уменьшен на 1 или 2 байта по сравнению с двумя другими командами.

d. Основываясь на равных и неравных результатах сравнения, команды ветвления, имеющие множество форматов команд, включая команды ветвления, которые сравниваются со значениями 0, такими как в табл. 11, и команды ветвления, которые сравниваются с двумя операндами, такими как в табл. 12.

Таблица 11 Формат команды Мнемоника Представление op AA BB ifeqz rAA BB rAA: 8-битный регистр для сравнения
BB: 8-битное смещение ветви со знаком
ifnez rAA BB op AA BB h BB l ifeqz/t16 rAA BBBB rAA: 8-битный регистр для сравнения
BB: 16-битное смещение ветви со знаком
ifnez/t16 rAA BBBB

Таблица 12 op A | B CC ifeq rA rB CC rA: Первый регистр для сравнения
rB: Второй регистр для сравнения
CC: 8-битное смещение ветви со знаком
ifne rA rB CC op A | B CC h CC l ifeq/t16 rA rB CCCC CCCC: 16-битное смещение ветви со знаком
Другие команды, аналогичные вышеуказанной команде
ifne/t16 rA rB CCCC

В табл. 12 выше 8-битная команда смещения уменьшает длину одного байта.

Сокращенный набор команд по настоящему изобретению дополнительно включает в себя третью команду, которая содержит команду, имеющую другой формат команд на основе различного количества параметров. Третья команда включает в себя:

a. команду вызова статического метода, имеющую различные форматы команд, на основе различного количества параметров, такую как в табл. 13;

b. команду вызова виртуального метода, имеющую различные форматы команд, на основе различного количества параметров, такую как в табл. 14;

c. команду вызова метода частного экземпляра, имеющую различные форматы команд, на основе различного количества параметров.

Таблица 13 Формат команды Мнемоника Представление op AA B | C invstatic/01 {rC} AA 0 или 1 параметры регистра
AA: Индекс набора констант для статических методов
Количество параметров B
B=1 {rC}
B=0 {}
op AA B | C D | E invstatic/23 {rC rD rE} AA 2 или 3 параметры регистра
AA: Индекс набора констант для статических методов
Количество параметров B
B=3 {rC, rD, rE}
B=2 {rC, rD}
op AA B | C D | E F | G invstatic/45 {rC rD rE rF rG} AA 4 или 5 параметры регистра
AA: Индекс набора констант для статических методов
Количество параметров B
B=5 {rC, rD, rE, rF, rG}
B=4 {rC, rD, rE, rF}
op AA h AA l B | C invstatic/01cp16 {rC} AAAA 0 или 1 параметры регистра
AAAA: Индекс набора констант для статических методов
Количество параметров B
B=1 {rC}
B=0 {}
op AA h AA l B | C D | E invstatic/23cp16 {rC rD rE} AAAA 2 или 3 параметры регистра
AAAA: Индекс набора констант для статических методов
Количество параметров B
B=3 {rC, rD, rE}
B=2 {rC, rD}
op AA h AA l B | C D | E F | G invstatic/45cp16 {rC rD rE rF rG} AAAA 4 или 5 параметры регистра
AAAA: Индекс набора констант для статических методов
Количество параметров B
B=5 {rC, rD, rE, rF, rG}
B=4 {rC, rD, rE, rF}

Таблица 14 Формат команды Мнемоника Представление op AA B | C D | E invvirtual/13 {rC rD rE} AA 1 или 3 параметры регистра
AA: Индекс набора констант для виртуальных методов
Количество параметров B
B=3 {rC, rD, rE}
B=2 {rC, rD}
B=1 {rC}
op AA B | C D | E F | G invvirtual/45 {rC rD rE rF rG} AA 4 или 5 параметры регистра
AA: Индекс набора констант для виртуальных методов
Количество параметров B
B=5 {rC, rD, rE, rF, rG}
B=4 {rC, rD, rE, rF}

Из табл. 13-14 видно, что для вызовов способа без параметров или с относительно небольшим количеством параметров вышеупомянутые команды кодирования являются относительно короткими, в частности, такие вызовы используются чаще, и размер байт-кода способа может быть значительно уменьшен.

Сокращенный набор команд по настоящему изобретению дополнительно включает в себя четвертую команду, которая включает в себя команду часто используемого типа данных и команду редко используемого типа данных, при этом команда часто используемого типа данных имеет множество форматов команд, а команда редко используемого типа данных имеет формат команд. Часто используемые типы данных команды включают в себя короткие типы данных команды, а редко используемые типы данных команды включают в себя типы данных int команды.

Сокращенный набор команд по настоящему изобретению дополнительно содержит пятую команду, которая представляет собой команду, имеющую однобайтовый индекс набора констант.Пятая команды включает в себя:

a. команду вызова виртуального метода, имеющую с однобайтовый индекс набора констант, как показано в табл. 15;

b. команду вызова виртуального метода, имеющую с однобайтовый индекс набора констант,как показано в табл. 16;

c. команду доступа к статическому домену, имеющую однобайтовый индекс набора констант, как показано в табл. 17;

d. команду доступа к домену экземпляра, имеющую однобайтовый индекс набора констант, как показано в табл. 18.

Таблица 15 Формат команды Мнемоника Представление op AA B | C invstatic/01 {rC} AA 0 или 1 параметры регистра
AA: Индекс набора констант для статических методов
Количество параметров B
B=1 {rC}
B=0 {}
op AA B | C D | E invstatic/23 {rC rD rE} AA 2 или 3 параметры регистра
AA: Индекс набора констант для статических методов
Количество параметров B
B=3 {rC, rD, rE}
B=2 {rC, rD}
op AA B | C D | E F | G invstatic/45 {rC rD rE rF rG} AA 4 или 5 параметры регистра
AA: Индекс набора констант для статических методов
Количество параметров B
B=5 {rC, rD, rE, rF, rG}
B=4 {rC, rD, rE, rF}
op AA h AA l B | C invstatic/01cp16 {rC} AAAA 0 или 1 параметры регистра
AAAA: Индекс набора констант для статических методов
Количество параметров B
B=1 {rC}
B=0 {}
op AA h AA l B | C D | E invstatic/23cp16 {rC rD rE} AAAA 2 или 3 параметры регистра
AAAA: Индекс набора констант для статических методов
Количество параметров B
B=3 {rC, rD, rE}
B=2 {rC, rD}
op AA h AA l B | C D | E F | G invstatic/45cp16 {rC rD rE rF rG} AAAA 4 или 5 параметры регистра
AAAA: Индекс набора констант для статических методов
Количество параметров B
B=5 {rC, rD, rE, rF, rG}
B=4 {rC, rD, rE, rF}

Таблица 16 Формат команды Мнемоника Представление op AA B | C D | E invvirtual/13 {rC rD rE} AA 1 или 3 параметры регистра
AA: Индекс набора констант для виртуальных методов
Количество параметров B
B=3 {rC, rD, rE}
B=2 {rC, rD}
B=1 {rC}
op AA B | C D | E F | G invvirtual/45 {rC rD rE rF rG} AA 4 или 5 параметры регистра
AA: Индекс набора констант для виртуальных методов
Количество параметров B
B=5 {rC, rD, rE, rF, rG}
B=4 {rC, rD, rE, rF}

Таблица 17 Формат команды Мнемоника Представление op AA getstatic-o/r0 AA Возвращает значение статического поля ссылок в регистр r0-r4
AA: Индекс набора констант для статических полей
getstatic-o/r1 AA getstatic-o/r2 AA getstatic-o/r3 AA getstatic-o/r4 AA op BB AA getstatic-o/R8 rAA BB rAA: Возвращает значение статического поля, 8-битный регистр
BB: Индекс набора констант для статических полей
op BB h BB l AA getstatic-b/cp16rAA BBBB rAA: Возвращает или задает подлежащее установке значение статического поля, 8-битный регистр
BBBB: Индекс набора констант для статических полей
getstatic-s/cp16rAA BBBB getstatic-o/cp16rAA BBBB putstatic-b/cp16rAA BBBB putstatic-s/cp16rAA BBBB putstatic-o/cp16rAA BBBB op BB h BB l AA igetstatic rAA BBBB rAA: Возвращает или задает подлежащее установке значение статического поля, 8-битная регистровая пара
BBBB: Индекс набора констант для статических полей

Таблица 18 Формат Мнемоника Представление op CC A | B getfield-o rA rB CC rA: Возвращает или задает значение поля экземпляра
rB: Регистр объектов
CC: Индект набора констант домена экземпляра
op CC h CC l A | B getfield-b/cp16rA rB CCCC rA: Возвращает или задает значение поля экземпляра
rB: Регистр объектов
CCCC: Индект набора констант домена экземпляра
getfield-s/cp16rA rB CCCC getfield-o/cp16rA rB CCCC putfield-b/cp16rA rB CCCC putfield-s/cp16rA rB CCCC putfield-o/cp16 rA rB CCCC op CC h CC l A | B igetfield/cp16rA rB CCCC rA представляет собой регистровую пару, возвращает или задает подлежащее установке значение поля экземпляра
rB: Регистр объектов
CCCC: Индект набора констант домена экземпляра
iputfield/cp16rA rB CCCC

Из табл. 15-18 видно, что если можно использовать однобайтовый индекс набора констант, длина байт-кода может быть значительно уменьшена.

Сокращенный набор команд по настоящему изобретению дополнительно включает в себя шестую команду, которая представляет собой макрокоманду. Шестая команда включает в себя макрокоманду, сформированную на основе замены команды вызова статического метода, и макрокоманду, сформированную на основе слияния множества соседних команд, как показано в табл. 19.

Формат команды Мнемоника Представление op0A BC DE arrayCopy rA rB rC rD rE short arrayCopy(byte[] src, short srcOff, byte[] dest, short destOff, short length) throws ArrayIndexOutOfBoundsException, NullPointerException, TransactionException;
Значение каждого регистра:
rA: src
rB: srcOff
rC: dest
rD: destOff
rE: length
op0A BC DE arrayCopyNonAtomic rA rB rC rD rE short arrayCopyNonAtomic(byte[] src, short srcOff, byte[] dest, short destOff, short length) throws ArrayIndexOutOfBoundsException, NullPointerException, SystemException;
Значение каждого регистра:
rA: src
rB: srcOff
rC: dest
rD: destOff
rE: length
op A | B C | D arrayFill rA rB rC rD short arrayFill(byte[] bArray, short bOff, short bLen, byte bValue) throws ArrayIndexOutOfBoundsException, NullPointerException;
Значение каждого регистра:
rA: bArray
rB: bOff
rC: bLen
rD: bValue
op A | B C | D arrayFillNonAtomic rA rB rC rD short arrayFillNonAtomic (byte[] bArray, short bOff, short bLen, byte bValue) throws ArrayIndexOutOfBoundsException, NullPointerException;
Значение каждого регистра:
rA: bArray
rB: bOff
rC: bLen
rD: bValue
op0A BC DE arrayCompare rA rB rC rD rE byte arrayCompare(byte[] src, short srcOff, byte[] dest, short destOff, short length) throws ArrayIndexOutOfBoundsException, NullPointerException;
Значение каждого регистра:
rA: src
rB: srcOff
rC: dest
rD: destOff
rE: length
op0 | A B | C setShort rA rB rC short setShort(byte[] bArray, short bOff, short sValue) throws TransactionException, NullPointerException, ArrayIndexOutOfBoundsException;
Значение каждого регистра:
rA: bArray
rB: bOff
rC: sValue
op A | B makeShort rA rB short makeShort (байт b1, байт b2)
Значение каждого регистра:
rA: b1
rB: b2
op A | B getShort rA rB short getShort(byte[] bArray, short bOff) throws NullPointerException, ArrayIndexOutOfBoundsException
Значение каждого регистра:
rA: bArray
rB: bOff
op A | B C | D const-c4/2rA rB C D rA=C rB=D op A | C BB DD const-c4c8 rA rBB C DD rA=C rBB=DD op AA BB CC DD const-c8/2rAA rBB CC DD rAA=CC rBB=DD op A | B C | D mv/2 rA rB rC rD rA=rC, rB=rD op A | B CC getarray-b/I rA rB CC rA: Возвращаемое значение
rB: Ссылка на массив, 4-битный регистр
CC: Индекс члена, 8-битный регистр без знака
op AA BB h BB l invstatic/1c BBBB AA AA: Индекс набора констант для статических методов
BBBB: 16-битный параметр константы со знаком

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

Набор команд виртуальной машины TGoMOS по настоящему изобретению представляет собой сокращенный набор команд, в табл. 20 ниже представлен краткий перечень набора команд байт-кода.

Таблица 20 op Мнемоника op Мнемоника op Мнемоника op Мнемоника 0 nop 52 mv-r/r3 104 ixor 156 getstatic-o/R8 1 const-0/r0 53 mv-r/r4 105 ishl 157 getstatic-b/cp16 2 const-0/r1 54 mv-r 106 ishr 158 getstatic-s/cp16 3 const-0/r2 55 mv-ro/r0 107 iushr 159 getstatic-o/cp16 4 const-0/r3 56 mv-ro/r1 108 goto 160 putstatic-b/cp16 5 const-0/r4 57 mv-ro 109 goto/t16 161 putstatic-s/cp16 6 const-1/r0 58 mv-e 110 icmp 162 putstatic-o/cp16 7 const-1/r1 59 imv 111 ifeqz 163 igetstatic 8 const-1/r2 60 imv/R8 112 ifnez 164 iputstatic 9 const-1/r3 61 imv-r 113 ifeqz/t16 165 newinstance 10 const-1/r4 62 return-v 114 ifnez/t16 166 getfield-o 11 const-2/r0 63 return/r0 115 ifltz/t16 167 getfield-b/cp16 12 const-2/r1 64 return 116 ifgez/t16 168 getfield-s/cp16 13 const-2/r2 65 return-o 117 ifgtz/t16 169 getfield-o/cp16 14 const-2/r3 66 ireturn 118 iflez/t16 170 putfield-b/cp16 15 const-2/r4 67 s2b 119 ifeq 171 putfield-s/cp16 16 const-3/r0 68 s2i 120 ifne 172 putfield-o/cp16 17 const-3/r1 69 i2s 121 ifeq/t16 173 igetfield/cp16 18 const-3/r2 70 i2b 122 ifne/t16 174 iputfield/cp16 19 const-3/r3 71 add/2r 123 iflt/t16 175 invstatic/01 20 const-3/r4 72 add/R44 124 ifge/t16 176 invstatic/23 21 const-4/r0 73 add-c4/1r 125 ifgt/t16 177 invstatic/45 22 const-4/r1 74 add-c8 126 ifle/t16 178 invstatic/01cp16 23 const-4/r2 75 add 127 packedswitch 179 invstatic/23cp16 24 const-4/r3 76 sub 128 sparseswitch 180 invstatic/45cp16 25 const-4/r4 77 mul 129 newarray-b 181 invvirtual/13 26 const-c4 78 div 130 newarray 182 invvirtual/45 27 cosnt-c8/r0 79 rem 131 newarray-o 183 invspecial/13 28 cosnt-c8/r1 80 iadd 132 fillarray 184 invspecial/45 29 cosnt-c8/r2 81 isub 133 arraylength 185 invinterface/13 30 cosnt-c8/r3 82 imul 134 getarray-b/r0 186 invinterface/45 31 cosnt-c8/r4 83 idiv 135 getarray-b/r1 187 invvirtual/r 32 cosnt-c8/r5 84 irem 136 getarray-b/r2 188 invstatic/r 33 const-c8 85 neg 137 getarray-b/r3 189 invspecial/r 34 const/r0 86 not 138 getarray-b/r4 190 invinterface/r 35 const/r1 87 and/2r 139 getarray-b/R44 191 throw 36 const/r2 88 and/R44 140 getarray-o/R44 192 instanceof 37 const/r3 89 and-c4/1r 141 putarray-b/R44 193 checkcast 38 const/r4 90 and-c8 142 putarray-o/R44 194 arrayCopy 39 const/r5 91 s2b2s 143 getarray-b 195 arrayCopyNonAtomic; 40 const 92 and 144 getarray-s 196 arrayFill 41 iconst-c4 93 or-c8 145 getarray-o 197 arrayFillNonAtomic 42 iconst-c8 94 or 146 putarray-b 198 arrayCompare 43 iconst-c16 95 xor-c8 147 putarray-s 199 setShort 44 iconst 96 xor 148 putarray-o 200 makeShort 45 mv 97 shl 149 igetarray 201 getShort 46 mv/R8 98 shr 150 iputarray 202 const-c4/2 47 mv-o 99 ushr 151 getstatic-o/r0 203 const-c4c8 48 mv-o/R8 100 ineg 152 getstatic-o/r1 204 const-c8/2 49 mv-r/r0 101 inot 153 getstatic-o/r2 205 mv/2 50 mv-r/r1 102 iand 154 getstatic-o/r3 206 getarray-b/I 51 mv-r/r2 103 ior 155 getstatic-o/r4 207 invstatic/1c

Вариант осуществления настоящего изобретения дополнительно обеспечивает устройство с ограниченными ресурсами, причем на устройстве с ограниченными ресурсами запущена виртуальная машина, и виртуальная машина используется для выполнения вышеупомянутого сокращенного набора команд.

Набор команд виртуальной машины на основе регистра, разработанный в настоящем изобретении, используют для устройств с ограниченными ресурсами, таких как интеллектуальные SE, защищенные микросхемы MCU, которые могут быть использованы с различными объектно-ориентированными и архитектурно-независимыми программами, чтобы максимально уменьшить размер байт-кода, что может не только уменьшить требования к памяти микросхемы для постоянного хранения, но и повысить эффективность выполнения кода.

Чтобы проверить вышеуказанные полезные эффекты сокращенного набора команд по настоящему изобретению, сравнивают набор команд Java Card и набор команд TGoMOS (сокращенный набор команд по настоящему изобретению), в дополнение к коду интерпретатора байт-кода, система виртуальной машины, реализованная в той же микросхеме, имеет в основном такой же код, в команде отключен трудоемкий криптографический алгоритм и операция записи во флеш-память, для сравнения используют среднее время 10 результатов выполнения и получают результаты сравнения. Результат сравнения размеров преобразованного байт-кода набора команд Java Card и набора команд TGoMOS показано в табл. 21. Результаты сравнения производительности приложений электронного кошелька EDEP на платформах Java Card и TGoMOS приведены в табл. 22.

Таблица 21 Пакет приложений/библиотек Java Card TGoMOS framework 0x41B 0x498 security 0x5A8 0x57A guomi 0x1D5 0x1F2 crs 0xE2 0xE3 securitydomian 0x12C 0x135 open 0x6A4 0x6BA prepaid 0x2352 0x24C4

Таблица 22 Тип операции TGoMOS Java Card Повышение производительности % Выбор приложения 2898 3078 5,85 Инициализация кольцевой конфигурации памяти 5958 6826 12,72 Память 3118 3232 3,53 Промежуточный итог 14188 15690 9,57 Выбор приложения 2904 3079 5,68 Инициализация потребления 5646 6438 12.30 Потребление 4192 4378 4.25 Получение баланса 2214 2554 13,31 Промежуточный итог 14956 16449 9,08 Выбор приложения 2906 3080 5,65 Инициализация потребления соединения 5542 6439 13,93 Обновить файл-1A 2501 2579 3,02 Обновить файл-1E 2675 2756 2,94 Потребление соединения 4164 4356 4.41 Получение баланса 2214 2554 13,31 Промежуточный итог 20002 21764 8.10

Из табл. 21 видно, что по сравнению с набором команд Java Card размер байт-кода набора команд TGoMOS (сокращенный набор команд по настоящему изобретению) близок к набору команд Java Card. Из табл. 22 видно, что производительность применения электронного кошелька EDEP к платформе набора команд виртуальной машины TGoMOS лучше.

Очевидно, что специалисты в данной области техники могут вносить различные изменения и вариации в настоящее изобретение, не выходя за рамки сущности и объема настоящего изобретения. Таким образом, если эти модификации и вариации настоящего изобретения попадают в объем формулы настоящего изобретения и его эквивалентной технологии, настоящее изобретение также предназначено для включения этих модификаций и вариаций.

Похожие патенты RU2837139C1

название год авторы номер документа
СПОСОБ СИНТЕЗА ИНГИБИТОРОВ Е1-АКТИВИРУЮЩЕГО ФЕРМЕНТА 2008
  • Армитэйдж Иан
  • Эллиот Эрик Л.
  • Лэнгстон Мэрианн
  • Лэнгстон Стивен П.
  • Маккаббин Квентин Дж.
  • Мизутани Хиротаке
  • Стирлинг Мэттью
  • Чжу Лэй
RU2553476C2
ИЗОКСАЗОЛИНЫ В КАЧЕСТВЕ ИНГИБИТОРОВ АМИДГИДРОЛАЗЫ ЖИРНЫХ КИСЛОТ 2010
  • Бенке Марк Л.
  • Кастро Альфредо С.
  • Чан Лоуренс К.
  • Эванс Кэтрин А.
  • Гренье Луи
  • Гроган Майкл Дж.
  • Леблан Ив
  • Лю Тао
  • Пелюзо Стефан
  • Снайдер Дэниел А.
  • Тиббиттс Томас Т.
RU2539595C2
СКАЛЯРНО-ВЕКТОРНЫЙ ПРОЦЕССОР 2021
  • Петричкович Ярослав Ярославович
  • Солохина Татьяна Владимировна
  • Кузнецов Денис Александрович
  • Беляев Андрей Александрович
  • Александров Юрий Николаевич
  • Деревянко Дмитрий Александрович
  • Беляев Иван Андреевич
  • Миронова Юлия Викторовна
  • Гаврилов Виталий Сергеевич
RU2781355C1
УСТРОЙСТВО И СПОСОБ ОБРАБОТКИ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ НАБОРОВ КОМАНД 1995
  • Давид Вивьян Джаггар
RU2137183C1
ОТОБРАЖЕНИЕ С ПОМОЩЬЮ МУЛЬТИНАБОРОВ КОМАНД 1995
  • Давид Вивиан Джаггар
RU2137184C1
ПРОИЗВОДНЫЕ ПОЛИМИКСИНА И ИХ ПРИМЕНЕНИЕ В КОМБИНИРОВАННОЙ ТЕРАПИИ СОВМЕСТНО С РАЗЛИЧНЫМИ АНТИБИОТИКАМИ 2015
  • Браун Памела
  • Доусон Майкл
  • Симонович Мона
  • Боукс Стивен
  • Дюперчи Эстер
  • Стэнвэй Стивен Джеймс
  • Уилсон Антуанетта
  • Мосс Стивен Фредерик
RU2740190C2
НЕЙРОАКТИВНЫЕ СТЕРОИДЫ, КОМПОЗИЦИИ И ИХ ИСПОЛЬЗОВАНИЕ 2014
  • Мартинес Ботелья Габриэль
  • Харрисон Бойд Л.
  • Робишо Альбер Жан
  • Салитуро Франческо Джеральд
RU2754534C2
Генератор кодирующих или декодирующих байтов 1983
  • Луи Клод Гийу
  • Раймон Ле Бри
  • Амбруаз Ле Рес
SU1207407A3
СПОСОБ И УСТРОЙСТВО ДЛЯ ПЕРЕДАЧИ И ПРИЕМА РАДИОСИГНАЛА В СИСТЕМЕ БЕСПРОВОДНОЙ СВЯЗИ 2018
  • Янг, Сукчел
  • Ким, Кидзун
  • Ким, Сеонвоок
  • Парк, Чангхван
  • Ахн, Дзоонкуи
  • Парк, Хандзун
  • Хванг, Сеунггие
RU2735328C1
СПОСОБ И УСТРОЙСТВО ДЛЯ ПЕРЕДАЧИ И ПРИЕМА БЕСПРОВОДНОГО СИГНАЛА В СИСТЕМЕ БЕСПРОВОДНОЙ СВЯЗИ 2015
  • Янг Сукчел
  • Ахн Дзоонкуи
  • Ли Сеунгмин
RU2658340C1

Иллюстрации к изобретению RU 2 837 139 C1

Реферат патента 2025 года Сокращенный набор команд байт-кода микрооперационной системы и устройство с ограниченными ресурсами

Изобретение относится к устройству с ограниченными ресурсами для запуска виртуальной машины. Технический результат заключается в уменьшении размера байт-кода, обеспечивающем уменьшение требований к памяти микросхемы для постоянного хранения и повышение эффективности выполнения кода при ограниченных ресурсах вычислительного устройства. Устройство содержит микросхемы в виде интеллектуальных элементов безопасности (Secure Element) и микроконтроллерные защищенные микросхемы (secure Micro Controller Unit chips), причем сокращенный набор команд, исполняемый виртуальной машиной, содержит первую команду, причем первая команда содержит код операции, при этом информация о параметрах первой команды содержится имплицитно в коде операции; вторую команду, которая представляет собой высокочастотную команду, имеющую множество форматов команд; третью команду, которая содержит команды, имеющие различные форматы команд на основе количества различных параметров; четвертую команду, которая содержит команды часто используемого типа данных и команды редко используемого типа данных, причем команды часто используемого типа данных имеют множество форматов команд, а команды редко используемого типа данных имеют один формат команд; пятую команду, которая представляет собой команду, имеющую однобайтовый индекс набора констант; шестую команду, которая представляет собой макрокоманду; причем сокращенный набор команд на основе регистра выполнен с возможностью снижения потребности к памяти микросхем для постоянного хранения за счет минимизации размера байт-кода. 6 з.п. ф-лы, 1 ил., 22 табл.

Формула изобретения RU 2 837 139 C1

1. Устройство с ограниченными ресурсами для запуска виртуальной машины, содержащее микросхемы в виде интеллектуальных элементов безопасности (Secure Element) и микроконтроллерные защищенные микросхемы (secure Micro Controller Unit chips), отличающееся тем, что сокращенный набор команд на основе регистра, исполняемый виртуальной машиной, содержит:

первую команду, причем первая команда содержит код операции, при этом информация о параметрах первой команды содержится имплицитно в коде операции;

вторую команду, которая представляет собой высокочастотную команду, имеющую множество форматов команд;

третью команду, которая содержит команды, имеющие различные форматы команд на основе количества различных параметров;

четвертую команду, которая содержит команды часто используемого типа данных и команды редко используемого типа данных, причем команды часто используемого типа данных имеют множество форматов команд, а команды редко используемого типа данных имеют один формат команд;

пятую команду, которая представляет собой команду, имеющую однобайтовый индекс набора констант;

шестую команду, которая представляет собой макрокоманду;

причем сокращенный набор команд на основе регистра выполнен с возможностью снижения потребности к памяти микросхем для постоянного хранения за счет минимизации размера байт-кода.

2. Устройство с ограниченными ресурсами по п. 1, отличающееся тем, что первая команда содержит:

команду, которая имплицитно включает как операнд, так и номер регистра в коде операции;

команду, которая имплицитно включает номер регистра в коде операции; команду, которая имплицитно включает константный операнд в коде операции;

команду доступа к элементу массива, которая имплицитно включает тип элемента массива в коде операции;

команду, которая имплицитно включает тип и параметры вызова метода в коде операции.

3. Устройство с ограниченными ресурсами по п. 1, отличающееся тем, что вторая команда содержит:

часто используемую команду арифметических операций, имеющую множество форматов операций;

команду доступа к элементу массива в формате 4-разрядного регистра;

команду создания массива, которая имплицитно включает тип элемента массива в коде операции;

команду ветвления, имеющую множество форматов команд на основе равных и неравных результатов сравнения.

4. Устройство с ограниченными ресурсами по п. 1, отличающееся тем, что третья команда содержит:

команду вызова статического метода, имеющую различные форматы команд, на основе различного количества параметров;

команду вызова виртуального метода, имеющую различные форматы команд, на основе различного количества параметров;

команду вызова метода частного экземпляра, имеющую различные форматы команд, на основе различного количества параметров.

5. Устройство с ограниченными ресурсами по п. 1, отличающееся тем, что четвертая команда содержит:

команду часто используемого типа данных, включающую в себя команду короткого типа данных;

команду редко используемого типа данных, включающую в себя команду типа данных int.

6. Устройство с ограниченными ресурсами по п. 1, отличающееся тем, что пятая команда содержит:

команду вызова статического метода, имеющую однобайтовый индекс набора констант;

команду вызова виртуального метода, имеющую однобайтовый индекс набора констант;

команду доступа к статическому домену, имеющую однобайтовый индекс набора констант;

команду доступа к домену экземпляра, имеющую однобайтовый индекс набора констант.

7. Устройство с ограниченными ресурсами по п. 1, отличающееся тем, что шестая команда содержит:

макрокоманду, сформированную на основе замены команды вызова статического метода;

макрокоманду, сформированную на основе объединения множества смежных команд.

Документы, цитированные в отчете о поиске Патент 2025 года RU2837139C1

US 6021469 A, 01.02.2000
Пломбировальные щипцы 1923
  • Громов И.С.
SU2006A1
US 6275830 B1, 14.08.2001
US 6129460 A, 10.10.2000
KR 100809293 B1, 04.03.2008
УВЕЛИЧЕНИЕ ЧИСЛА ДОСТУПНЫХ ДЛЯ КОМАНД РЕГИСТРОВ ОБЩЕГО НАЗНАЧЕНИЯ 2010
  • Дан Грейнер
  • Марсель Митран
  • Тимоти Слиджл
RU2562430C2

RU 2 837 139 C1

Авторы

Ши, Юйпин

Чжэн, Цзяндун

Ван, Юцзюнь

Даты

2025-03-26Публикация

2021-07-06Подача