マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

今日実装した命令 5/22

今日進んだのはPUSHとPOPがほとんど。200行ぐらい削ったがそれは1命令ごとに1クラス用意していたのを、何命令かまとめたクラスを1つ用意することで、ほぼ同じ内容だったいくつかのクラスを消した。具体的には以下のような変更である

変更前

instructions[0x50] = new PushAX();
instructions[0x51] = new PushCX();
instructions[0x52] = new PushDX();
instructions[0x53] = new PushBX();

変更後

instructions[0x50] = new Push(EAX);
instructions[0x51] = new Push(ECX);
instructions[0x52] = new Push(EDX);
instructions[0x53] = new Push(EBX);

PUSHやPOPはレジスタごとに別の命令になっているが、これらを実装したクラスで違うのはレジスタ番号だけだったので、コンストラクタレジスタ番号を受け取るクラス1つあれば解決できる。なので、いくつもあったPUSHやPOPのクラスを排除できた。

今回実装した命令

  • PUSH(06)
  • PUSH(0E)
  • PUSH(16)
  • PUSH(1E)
  • PUSH(68)
  • PUSH(6A)
  • PUSH(0F A0)
  • PUSH(0F A8)
  • POP(07)
  • POP(17)
  • POP(1F)
  • POP(0F A1)
  • POP(0F A9)
  • Operand Prefix(66)
  • Address Prefix(67)
削った行数 200行ぐらい
進んだ行数 100行ぐらい
現在の行数 3217行