Spec-Zone .ru
спецификации, руководства, описания, API
Содержание | Предыдущий | Следующий | ИндексСпецификация Виртуальной машины JavaTM


A B C D F Г Я J L М. N P R S T W

tableswitch

Работа

Таблица переходов доступа индексом и переходом

Формат

tableswitch
<0-3 byte pad\>
defaultbyte1
defaultbyte2
defaultbyte3
defaultbyte4
lowbyte1
lowbyte2
lowbyte3
lowbyte4
highbyte1
highbyte2
highbyte3
highbyte4
перейдите смещения...

Формы

tableswitch = 170 (0xaa)

Стек операнда

..., индекс...

Описание

tableswitch является инструкцией переменной длины. Сразу после tableswitch кода операции, между 0 и 3 нулевыми байтами (обнуленные байты, не нулевой объект) вставляются как дополнение. Число нулевых байтов выбирается так, чтобы следующий байт начался в адресе, который является кратным числом 4 байтов от запуска текущего метода (код операции его первой инструкции). Сразу после дополнения следуют за байтами, составляющими три 32-разрядных значения со знаком: значение по умолчанию, низко, и высоко. Сразу после тех байтов байты, составляющие серию высоких - низко + 1, подписал 32-разрядные смещения. Значение низко должно быть меньше чем или равным высоко. Верхний уровень - низко + 1 подписался, 32-разрядные смещения обрабатываются как таблица переходов на основе 0. Каждое из этих 32-разрядных значений со знаком создается как (byte1 << 24) | (byte2 << 16) | (byte3 << 8) | byte4.

Индекс должен иметь тип int и выталкивается от стека операнда. Если индекс менее чем низок, или индекс больше чем высокий, то целевой адрес вычисляется, добавляя значение по умолчанию к адресу кода операции этой tableswitch инструкции. Иначе, смещение по индексу позиции - низко таблицы переходов извлекается. Целевой адрес вычисляется, добавляя, которые смещают к адресу кода операции этой tableswitch инструкции. Выполнение тогда продолжается в целевом адресе.

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

Примечания

Выравнивание, требуемое 4-байтовых операндов tableswitch инструкции, гарантирует 4-байтовое выравнивание тех операндов, если и только если метод, который содержит tableswitch, запускается на 4-байтовой границе.


Содержание | Предыдущий | Следующий | Индекс

Спецификация Виртуальной машины JavaTM
Авторское право © Sun Microsystems, Inc 1999 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к jvm@java.sun.com

free hit counter