3

asmコードを合理化したいと思います。これまでのところ、Eclipseでバイトコードのアウトラインを使用して、コードの記述方法を学習しています。デバッグ情報を含むバイトコードしか表示されないため、安全に除外できるものがわからないため、考えられるすべてのケースを自分でテストすることに精通している誰かが迅速に回答することをお勧めします。

これらの仮定は本当ですか?

  1. 同じクラスまたはメソッドでも、異なるスタイルを混在させることができます(デバッグ情報のないメソッドへのデバッグ情報のあるメソッドへのコードの挿入)
  2. visitLabelジャンプ命令のターゲットとしてのみ必要であり、すべての命令の周りでは必要ありません
  3. visitLineNumber省略可能(デバッグ情報)
  4. visitLocalVariable省略可能(デバッグ情報)

ありがとう!

4

1 に答える 1

2

デバッグ情報なしでコードをコンパイルして、バイトコードアウトラインビューで確認できます。たとえば、Eclipseで別のプロジェクトを使用します。

今あなたの質問に答えるために:

  1. コードをデバッグありとデバッグなしで混在させることができます。このようなコードをデバッグする場合、デバッガーはデバッグ情報から省略された変数を表示しないことに注意してください。
  2. visitLabel呼び出しは、バイトコード内の任意の場所をマークするために使用されます。たとえば、ジャンプ命令のターゲット、例外ハンドラー範囲と例外ハンドラーエントリポイントの境界、ローカル変数と行番号の範囲、新しく導入された型注釈(JSR308など)などです。 。
  3. visitLineNumberは、主にデバッガーによって使用される行番号に関する情報を生成し、省略できます
  4. visitLocalVariableは、主にデバッガーによって使用されるローカル変数に関する情報を生成し、省略できます
于 2012-08-22T18:57:02.767 に答える