Spec-Zone .ru
спецификации, руководства, описания, API
|
Содержание | Предыдущий | Следующий | Индекс | Спецификация Виртуальной машины JavaTM |
Работа
Таблица переходов доступа индексом и переходом
Формат
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