更新日: 2023 年 7 月 10 日
ColdFire 命令一覧 (旧)
説明
HAS060.X の添付資料です。
COLDFIRE.DOC
──────────────────────────────────── High-speed Assembler ─ 68060 対応版 HAS060.X version 3.09+87 < ColdFire 命令一覧 > 1999/11/17 M.Kamada ──────────────────────────────────── ColdFire(ColdFire V2〜V4 コア)で使える全命令と、そのオペレーションサ イズおよびアドレッシングモードをまとめてみました。68000 ファミリの命令表 と比較することで、削除された命令やオペレーションサイズ、アドレッシングな どを知ることができます。 このドキュメントの内容は保証できません。まだ手元の資料が不十分で実物も 見ていないので、間違いがあると思われます。また、この記事の内容について質 問されても答えられない場合があります。 (99-02-10版) ━< アドレッシングモード >━━━━━━━━━━━━━━━━━━━━━━ ColdFire(ColdFire V2〜V4 コア)で使用できるアドレッシングモードは、以 下の通り。 ┌───┬─────────────────────┐ │ D │Dn │ ├───┼─────────────────────┤ │ A │An │ ├───┼─────────────────────┤ │ M │(An) │ ├───┼─────────────────────┤ │ + │(An)+ │ ├───┼─────────────────────┤ │ - │-(An) │ ├───┼─────────────────────┤ │ W │(d16,An) │ ├───┼─────────────────────┤ │ X │(d8,An,Xi.L) │ │ │(d8,An,Xi.L*2) │ │ │(d8,An,Xi.L*4) │ ├───┼─────────────────────┤ │ Z │(xxx).W │ │ │(xxx).L │ ├───┼─────────────────────┤ │ P │(d16,PC) │ │ │(d8,PC,Xi.L) │ │ │(d8,PC,Xi.L*2) │ │ │(d8,PC,Xi.L*4) │ ├───┼─────────────────────┤ │ I │#<data> │ └───┴─────────────────────┘ メモ: インデックスレジスタはロングワードサイズに限る。 スケールファクタは 4 倍までで、8 倍は不可。 フルフォーマットのアドレッシングは不可。 SP(A7)は常にロングワード境界にアラインメントされる。 ━< 制御レジスタ >━━━━━━━━━━━━━━━━━━━━━━━━━━ ColdFire(ColdFire V2〜V4 コア)で使用できる制御レジスタは、以下の通り。 ┌──┬────┬──┬─────────────────┐ │コード│表記 │バー │ 内容 │ │ │ │ション │ │ ├──┼────┼──┼─────────────────┤ │$002│CACR │234 │Cache Control Register │ │$003│TCR │2-- │Transration Control Register │ │$004│ACR0 │234 │Access Control Register 0 │ │$005│ACR1 │234 │Access Control Register 1 │ │$006│ACR2 │2-- │Access Control Register 2 │ │$007│ACR3 │2-- │Access Control Register 3 │ │$08n│Rn │234 │* MOVE to Rn │ │$18n│Rn │234 │* MOVE from Rn │ │$801│VBR │234 │Vector Base Register │ │$80E│SR │2-- │* Status Register │ │$80F│PC │-34 │Program Counter │ │$C00│ROMBAR │234 │ROM Base Address Register │ │$C04│RAMBAR │-34 │SRAM Base Address Register │ │$C04│RAMBAR0 │2-- │RAM Base Address Register 0 │ │$C05│RAMBAR1 │2-- │RAM Base Address Register 1 │ │$C0F│MBAR │234 │Module Base Address Register │ └──┴────┴──┴─────────────────┘ メモ: * が付いているものは DEBUG インタフェイスからのアクセ スに限る(MOVEC ではアクセスできない)。 TCR、ACR2、ACR3 は V2 でも使えないようだ。 ━< ColdFire の全命令 >━━━━━━━━━━━━━━━━━━━━━━━ ColdFire(ColdFire V2〜V4 コア)の全命令の一覧。 ┌───────────────────┬──┬─────┐ │ 命令 │バー │アドレッシ│ │ │ション │ングモード│ ├───────────────────┼──┼─────┤ │ADD.L <ea>,Dx │234 │DAM+-WXZPI│ │ADD.L Dy,<ea> │234 │ M+-WXZ │ │ADDA.L <ea>,Ax │234 │DAM+-WXZPI│ │ADDI.L #<data>,Dx │234 │D │ │ADDQ.L #<data>,<ea> │234 │DAM+-WXZ │ │ADDX.L Dy,Dx │234 │ │ │AND.L <ea>,Dx │234 │D M+-WXZPI│ │AND.L Dy,<ea> │234 │ M+-WXZ │ │ANDI.L #<data>,Dx │234 │D │ │ASL.L #<data>,Dx │234 │ │ │ASL.L Dy,Dx │234 │ │ │ASR.L #<data>,Dn │234 │ │ │ASR.L Dy,Dx │234 │ │ │Bcc.L <label> │--4 │ │ │Bcc.S <label> │234 │ │ │Bcc.W <label> │234 │ │ │BCHG.B #<data>,<ea> │234 │ M+-W │ │BCHG.B Dy,<ea> │234 │ M+-WXZ │ │BCHG.L #<data>,Dx │234 │D │ │BCHG.L Dy,Dx │234 │D │ │BCLR.B #<data>,<ea> │234 │ M+-W │ │BCLR.B Dy,(d8,Ax,Xi) │-34 │ X │ │BCLR.B Dy,<ea> │234 │ M+-W Z │ │BCLR.L #<data>,Dx │234 │D │ │BCLR.L Dy,Dx │234 │D │ │BRA.L <label> │--4 │ │ │BRA.S <label> │234 │ │ │BRA.W <label> │234 │ │ │BSET.B #<data>,<ea> │234 │ M+-W │ │BSET.B Dy,(d8,Ax,Xi) │-34 │ X │ │BSET.B Dy,<ea> │234 │ M+-W Z │ │BSET.L #<data>,Dx │234 │D │ │BSET.L Dy,Dx │234 │D │ │BSR.L <label> │--4 │ │ │BSR.S <label> │234 │ │ │BSR.W <label> │234 │ │ │BTST.B #<data>,<ea> │234 │ M+-W │ │BTST.B Dy,<ea> │234 │ M+-WXZPI│ │BTST.L #<data>,Dx │234 │D │ │BTST.L Dy,Dx │234 │D │ │CLR.B <ea> │234 │D M+-WXZ │ │CLR.L <ea> │234 │D M+-WXZ │ │CLR.W <ea> │234 │D M+-WXZ │ │CMP.B <ea>,Dx │--4 │DAM+-WXZPI│ │CMP.L <ea>,Dx │234 │DAM+-WXZPI│ │CMP.W <ea>,Dx │--4 │DAM+-WXZPI│ │CMPA.L <ea>,Ax │234 │DAM+-WXZPI│ │CMPA.W <ea>,Ax │--4 │DAM+-WXZPI│ │CMPI.B #<data>,Dx │--4 │D │ │CMPI.L #<data>,Dx │234 │D │ │CMPI.W #<data>,Dx │--4 │D │ │CPUSH (Ax) │-34 │ │ │DIVS.L <ea>,Dx │-34 │D M+-W │ │DIVS.W <ea>,Dx │-34 │D M+-WXZPI│ │DIVU.L <ea>,Dx │-34 │D M+-W │ │DIVU.W <ea>,Dx │-34 │D M+-WXZPI│ │EOR.L Dy,<ea> │234 │D M+-WXZ │ │EORI.L #<data>,Dx │234 │D │ │EXT.L Dx │234 │ │ │EXT.W Dx │234 │ │ │EXTB.L Dx │234 │ │ │HALT │234 │ │ │ILLEGAL │234 │ │ │JMP <ea> │234 │ M WXZP │ │JSR <ea> │234 │ M WXZP │ │LEA.L <ea>,Ax │234 │ M WXZP │ │LINK.W Ax,#<data> │234 │ │ │LSL.L #<data>,Dx │234 │ │ │LSL.L Dy,Dx │234 │ │ │LSR.L #<data>,Dx │234 │ │ │LSR.L Dy,Dx │234 │ │ │MAC.wl Ry.ul,Rx.ul │-34 │ │ │MAC.wl Ry.ul,Rx.ul,<shift> │-34 │ │ │MACL.wl Ry.ul,Rx.ul,<ea>,Rw │-34 │ M+-W │ │MACL.wl Ry.ul,Rx.ul,<shift>,<ea>&,Rw │-34 │ M+-W │ │MACL.wl Ry.ul,Rx.ul,<shift>,<ea>,Rw │-34 │ M+-W │ │MOV3Q.L #<data>,<ea> │--4 │DAM+-WXZ │ │MOVE.bw #<data>,(d16,Ax) │--4 │ W │ │MOVE.bwl #<data>,<ea> │234 │D M+- │ │MOVE.bwl (Ay)+,<ea> │234 │D M+-WXZ │ │MOVE.bwl (Ay),<ea> │234 │D M+-WXZ │ │MOVE.bwl (d16,Ay),<ea> │234 │D M+-W │ │MOVE.bwl (d16,PC),<ea> │234 │D M+-W │ │MOVE.bwl (d8,Ay,Xi),(d16,Ax) │--4 │ W │ │MOVE.bwl (d8,Ay,Xi),<ea> │234 │D M+- │ │MOVE.bwl (d8,PC,Xi),(d16,Ax) │--4 │ W │ │MOVE.bwl (d8,PC,Xi),<ea> │234 │D M+- │ │MOVE.bwl (xxx).wl,(d16,Ax) │--4 │ W │ │MOVE.bwl (xxx).wl,<ea> │234 │D M+- │ │MOVE.bwl -(Ay),<ea> │234 │D M+-WXZ │ │MOVE.bwl Dy,<ea> │234 │D M+-WXZ │ │MOVE.L <ea>,ACC │-34 │DA I│ │MOVE.L <ea>,MACSR │-34 │DA I│ │MOVE.L <ea>,MASK │-34 │DA I│ │MOVE.L ACC,Rx │-34 │ │ │MOVE.L MACSR,CCR │-34 │ │ │MOVE.L MACSR,Rx │-34 │ │ │MOVE.L MASK,Rx │-34 │ │ │MOVE.W <ea>,CCR │234 │D I│ │MOVE.W <ea>,SR │234 │D I│ │MOVE.W CCR,Dx │234 │D │ │MOVE.W SR,Dx │234 │D │ │MOVE.wl Ay,<ea> │234 │D M+-WXZ │ │MOVEA.wl <ea>,Ax │234 │D M+-WXZPI│ │MOVEC.L Ry,Rc │234 │ │ │MOVEM.L <ea>,<list> │234 │ M W │ │MOVEM.L <list>,<ea> │234 │ M W │ │MOVEQ.L #<data>,Dx │234 │ │ │MSAC.wl Ry.ul,Rx.ul │234 │ │ │MSAC.wl Ry.ul,Rx.ul,<shift> │234 │ │ │MSACL.wl Ry.ul,Rx.ul,<ea>,Rw │234 │ M+-W │ │MSACL.wl Ry.ul,Rx.ul,<shift>,<ea>&,Rw │234 │ M+-W │ │MSACL.wl Ry.ul,Rx.ul,<shift>,<ea>,Rw │234 │ M+-W │ │MULS.L <ea>,Dx │234 │D M+-W │ │MULS.W <ea>,Dx │234 │D M+-WXZPI│ │MULU.L <ea>,Dx │234 │D M+-W │ │MULU.W <ea>,Dx │234 │D M+-WXZPI│ │MVS.B <ea>,Dx │--4 │DAM+-WXZPI│?Ay │MVS.W <ea>,Dx │--4 │DAM+-WXZPI│ │MVU.B <ea>,Dx │--4 │DAM+-WXZPI│?Ay │MVU.W <ea>,Dx │--4 │DAM+-WXZPI│ │NEG.L Dx │234 │D │ │NEGX.L Dx │234 │D │ │NOP │234 │ │ │NOT.L Dx │234 │D │ │OR.L <ea>,Dx │234 │D M+-WXZPI│ │OR.L Dy,<ea> │234 │ M+-WXZ │ │ORI.L #<data>,Dx │234 │D │ │PEA.L <ea> │234 │ M WXZP │ │PULSE │234 │ │ │REMS.L <ea>,Dx │-34 │D M+-W │ │REMU.L <ea>,Dx │-34 │D M+-W │ │RTE │234 │ │ │RTS │234 │ │ │SATS.L Dx │--4 │D │ │Scc.B Dx │234 │D │ │STOP #<data> │234 │ │ │SUB.L <ea>,Dx │234 │DAM+-WXZPI│ │SUB.L Dy,<ea> │234 │ M+-WXZ │ │SUBA.L <ea>,Ax │234 │DAM+-WXZPI│ │SUBI.L #<data>,Dx │234 │D │ │SUBQ.L #<data>,<ea> │234 │DAM+-WXZ │ │SUBX.L Dy,Dx │234 │ │ │SWAP.W Dx │234 │ │ │TAS.B <ea> │--4 │ M+-WXZ │ │TRAP #<vector> │234 │ │ │TRAPF │234 │ │ │TRAPF.L #<data> │234 │ │ │TRAPF.W #<data> │234 │ │ │TST.B <ea> │234 │D M+-WXZPI│ │TST.L <ea> │234 │DAM+-WXZPI│ │TST.W <ea> │234 │DAM+-WXZPI│ │UNLK Ax │234 │ │ │WDDATA.bwl <ea> │234 │ M+-WXZ │ │WDEBUG.L <ea> │234 │ M W │ └───────────────────┴──┴─────┘ メモ: 整数演算命令の多くがロングワードサイズに限定された。 DBRA やローテートなどの基本的な命令も一部削除された。 アドレッシングモードが Dn のみに限定された命令がある。 積和演算命令(MAC)が追加された。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ (EOF)