タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

バイトコードに関するatm_09_tdのブックマーク (2)

  • 知らなくても困らない Javaクラスのバイトコードの読み方 - A Memorandum

    クラスファイルの中身 クラスファイルの構造 javap コマンド javap 出力の概要 型とメソッドの読み方 オペランドスタック コンストラクタの実行 加算メソッド invoke 系命令 条件判断 for ループ まとめ 普段使いでは困ることはないですが、昨今はバイトコードマニピュレーションによる黒魔術が謳歌しているため、知っていると役に立つ場合もあるバイトコードの最低限の読み方を説明します。 クラスファイルの中身 以下のような簡単なソースコードを考えましょう。 public class Class1 { public int add(int x, int y) { return x + y; } } このソースコードをコンパイルして作成された Class1.class の中身のダンプを見てみます。 $ hexdump -C Class1.class 00000000 ca fe ba

    知らなくても困らない Javaクラスのバイトコードの読み方 - A Memorandum
  • Javaバイトコード

    クラスファイルを説明するときに残した宿題、Code属性で定義されるバイトコードについて、ここで説明していきます。バイトコードは、JVMを前提にした一種の機械語です。javapでは、アセンブラー風に出力していますが、実際は命令を表わす1バイトのオプコードに0バイトから数バイトのオペランドで構成されています。オプコードは1バイト(もちろん符号なしです)なので、最大でも256個の命令セットしか表現できません。これが大きいか小さいかは議論があるかもしれませんが、ともかく現状で256個の内、231個は既に使用されています。(当は仮押えも含むので、指定済みと言った方が正確かも知れませんが) (1) バイトコードの特長 Javaバイトコードには、様々な特長がありますが、まずその名前に現れているように、バイト・ストリームとして扱うことができるという点です。先頭のオプコードが1バイトで表現されており、

  • 1