2013-09-27 1 views
3

유형별 Java 바이트 코드 명령어에는 명령어와 관련된 유형을 지정하는 단일 문자 접두사가 있습니다. 왜 'a'는 객체 참조를위한 자바 바이트 코드 접두사입니까?

enter image description here

는 각각의 경우에 Wikipedia's entry on Java bytecode

에서 촬영, 접두사 선택 (명령 접두사가하지 않는, 부울 제외) 형식의 첫 글자로 구성된 의미가 있습니다. 그러나 객체 참조 접두어는 논리적으로 보이지 않으므로 or (두 개의 첫 번째 문자)은 모두 무료입니다. 대신 객체 참조 명령어는 접두어로 a을 사용합니다.

o 또는 r이 아닌 좀 더 적절한 것보다 객체 참조 바이트 코드 명령어 앞에 a이 붙는 이유는 무엇입니까?

+2

흥미로운 질문이지만 확실한 것은 "그들이 생각한 것 같아요"라는 질문을 입력하십시오.이 질문은이 사이트에 적합하지 않을 수 있습니다. –

+3

이 질문은 주제를 벗어난 것 같습니다. Java devs를 읽는 것입니다. – Antimony

+0

** HTML과 같이 ** a ** nchor 일 수도 있습니다. –

답변

1

그 테이블은 의심 스럽습니다. boolean을 다루는 바이트 코드 명령어가 없으므로 "z"로 시작하는 명령어 이름이 없습니다. "z"는 Zboolean을 나타내지 만 형식 시그니처와 동일하지 않은 형식 시그니처에서 올 수 있습니다. Jlong을 나타내고 L은 클래스 이름을 시작합니다. 그래서 일관성이 없습니다. 명령어 "a"는 주소를 나타낼 수도 있습니다. astore 명령어는 리턴 주소를 로컬 변수에도 저장할 수 있습니다. 어쩌면, 더 일찍이 더 많은 것들이 ... 명령은 객체가 아닌 다른 주소를 처리 할 수 ​​있었고 나중에 제한되었습니다.

+0

사실, 나는 그 사실을 생각하지 않았다. 나는 위키 백과에서 테이블을 꺼내기 만했다. 객체 참조는 기본적으로 메모리 주소를 참조하므로 'a'라는 의미의 주소 아이디어가 정말 마음에 듭니다. – Vulcan

1

r은 JVM에 의해 내부적으로 사용되는 returnAddress 유형을 나타 내기 때문일 수 있습니다.

+0

'returnAddress'를 위해'r'을 피하는 것이 바람직합니다. – Vulcan