非専門的シンギュラリティー研究所

無限に動き続けるシステムを表す方法を AI なども使って考えていきます。

アセンブラ(16)

前回作成した

  • コンソール風ウィンドウ(入力・出力)
  • ソースコード入力ウィンドウ
  • 描画ウィンドウ

をもつシステムを使って、このシステム上で 68000 アセンブリ言語インタープリターを動作させます。インタープリターは以下のような仕様とします。

デバッガーのコマンド

  • exit
    • 終了
  • step
    • ステップ実行
  • continue
    • 実行再開
  • breakpoint 行番号
  • output 行番号
  • list 開始行番号 終了行番号
    • プログラムの表示
  • load
  • reglist レジスタリストの文字列 または #数値
    • レジスタリストを転送する movem 命令のレジスタリストの解析
    • プッシュ時
    • 文字列または数値(パターンを表す2進数)で指定
  • rreglist レジスタリストの文字列 または #数値
    • レジスタリストを転送する movem 命令のレジスタリストの解析
    • ポップ時
    • 文字列または数値(パターンを表す2進数)で指定
  • sample
    • サンプルを実行
  • help
    • コマンドのリストを表示

実行できる命令

  • move, movea, moveq
  • movem
  • jmp
  • je, jne, jg, jge, jl, jle, ja, jae, jb, jbe, js, jns, jo, jno
  • dbra
  • dbe, dbne, dbg, dbge, dbl, dble, dba, dbae, dbb, dbbe, dbs, dbns, dbo, dbno
  • jsr
  • rts
  • lea, pea
  • link, unlk
  • add, adda, addq, addx
  • sub, suba, sibq, subx
  • cmp
  • neg, negx
  • tst
  • clr
  • mulu, muls
  • divu, divs
  • and
  • or
  • eor
  • not
  • lsl, lsr, asl, asr
  • rol. ror, roxl, roxr

定数

  • *const

グローバル変数

  • *var
  • *array

デバッグ用疑似命令

疑似関数

  • *lmulu, *lmuls
  • *ldivu, *ldivs
  • *dsin
  • *dcos
  • *dsqrt
  • *itod

オペランド

オペランドがアドレスを表す場合
オペランドが値を表す場合のデータのサイズ

命令の後に

  • .b が付く → 1 バイト
  • .w が付く → 2 バイト
  • .l が付く → 4 バイト
オペランドが値を表す場合(取得)
オペランドが値を表す場合(設定)