자바 코드에 finally
절이있는 경우 finally
블록을 식별하거나 .catchall
레이블을 사용하여 인라인을 작성하기 위해 항상 .catchall
이 생성되었지만 사실인지 또는 그 이상인지에 대한 온라인 정보를 찾지 못했습니다. 설명, 아무도 이것에 대해 안다?.catchall은 Dalvik 바이트 코드에 대해 smali에서 finally 절을 나타내는 데 사용됩니까?
답변
예 .catchall이 생성 될 수있는 경우 finally 블록이 하나입니다. 그러나 다른 용도로도 사용할 수 있습니다. 예를 들어 동기화 된 메소드의 경우 잠금을 해제 할 수 있도록 생성 할 수도 있습니다.
모든 핸들러가 dex-format 사양에 설명되어 캐치. 특히, code_item에 포함 된 encoded_catch_handler 항목에 있습니다.
classfile specification의 데이터와 동일한 부분도 관련이 있습니다. exception_table의 catch_type 항목을 참조하십시오.
너무 많이 생각할 수도 있습니다.
davlik 코드 생성기/변환기의 코드 생성 패턴이 무엇인지 묻고 있습니다. 내 경험에 의하면, 사람들은 컴파일러/코드 생성기가 덮개 아래에 무엇에 대한 자세한 설명을 작성하지 않습니다
- 이러한 동작은 지정이 필요하지 않으며, 실제로 스펙은 해가 될 가능성이 높습니다.
- 이러한 문서는 작성하고 유지 보수하는 데 비용이 많이 듭니다.
- 이러한 문서에는 비용을 정당화하기위한 독자가 거의 없을 것입니다.
davlik 변환기의 소스 코드를보고 실제로 무엇을하는지 보시기 바랍니다. 덱스 형식 사양이 당신에게 출력 "언어"어떤 뜻을 준다
주 (... "캐치 올"에 대한 grepping보십시오). 이는 davlik 변환기 을으로 제한 할 수 있지만 모든 경우에 실제로 번역자가 수행 할 작업을 알려주지는 않습니다.
의견 및 제안에 감사드립니다. – monica
@JesysFreke 답변을 여러 번 upvote 할 수 있었으면 좋겠습니다. 이 문서는 코드를 읽는 데 도움이됩니다! 다시 한 번 감사드립니다! 내가 :) – monica
지금 https://s.android.com/devices/tech/dalvik/dex-format.html 또는 https://source.android.com/devices/tech/dalvik/dex입니다 -format.html – JesusFreke
링크를 도울 수 다행 –