2013-09-27 1 views
3

Инструкции по байт-коду, специфичные для конкретного языка, имеют односимвольные префиксы, чтобы указать тип, к которому относится инструкция.Почему «a» префикс байт-кода Java для ссылок на объекты?

enter image description here Взятые из Wikipedia's entry on Java bytecode

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

Почему инструкции по использованию байт-кода объекта с префиксом a, а не, по-видимому, более подходящие o или r?

+2

Интересный вопрос, конечно, но вопрос типа «догадаться, что они думают», что может быть неприемлемо для этого сайта. –

+3

Этот вопрос кажется не по теме, потому что речь идет о разуме, читающих Java-разработчики. – Antimony

+0

Возможно, для ** a ** nchor, как в HTML. –

ответ

1

Эта таблица сомнительна. Нет инструкции байтового кода, касающейся boolean, поэтому нет названия инструкции, начинающейся с «z». «Z» может исходить от сигнатур типов, где Z обозначает boolean, но это не то же самое, что и для сигнатур типа J означает long и L начинает название класса. Таким образом, нет никакой согласованности. Для инструкций «a» может стоять адрес, так как инструкции astore могут также хранить обратные адреса в локальной переменной. Возможно, в более ранние времена больше из них ... инструкции были способны иметь дело с адресами, отличными от объектов, и это было ограничено позже.

+0

Очень верно, я об этом не думал; Я просто выскочил из Википедии. Мне очень нравится идея «a' означает адрес, поскольку ссылка на объект по существу относится к адресу памяти. – Vulcan

1

Возможно, потому, что r относится к типу returnAddress, который используется внутри JVM.

+0

Отличная идея, это разумно использовать для использования 'r' в пользу' returnAddress'. – Vulcan

Смежные вопросы