私はスマリ語を学ぼうとしていますが、グーグルで検索しても見つからない質問がいくつかあります。
1)自分自身をよりよく説明するために簡単なテストケースを作成しました
const-string v1, "Start"
:try_start_0
const-string v1, "Try Block"
invoke-static {v1}, Lcom/example/test/Main;->print(Ljava/lang/String;)V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
.catch ステートメント: 2 つの引数は、そのラベルからそのラベルまで取得してキャッチすることを意味しますか (2 つのラベルの間のコード)、それとも :try_start_0 から :try_end_0 に到達するまで試行の実行を開始することを意味しますか (goto ジャンプを許可します) 2 つのラベル内にないコードを実行するには)?
try のラベルは常に try_start_%d の形式ですか、それとも任意のラベルにすることができますか?
2)別のケース
packed-switch v0, :pswitch_data_0
const-string v1, "Default Case"
invoke-static {v1}, Lcom/example/test/Main;->print(Ljava/lang/String;)V
:goto_0
const-string v1, "The End"
invoke-static {v1}, Lcom/example/test/Main;->print(Ljava/lang/String;)V
return-void
:pswitch_0
const-string v1, "Case 1"
invoke-static {v1}, Lcom/example/test/Main;->print(Ljava/lang/String;)V
goto :goto_0
:pswitch_data_0
.packed-switch 0x1
:pswitch_0
.end packed-switch
switch ステートメント: switch ステートメントが switch データと switch 呼び出しの間にある必要がありますか? また、ラベルの命名は固定されていますか、それとも便宜上のものですか?
3) ラベルが異なる可能性がある場合、baksmali は異なるラベルで smali コードを生成しますか?
4) dex を逆コンパイルするときに常に表示されるとは限らないオプションの行は何ですか?
.parameter と .line がオプションであることは知っていますが、存在しないものは何ですか?
前もって感謝します。