countersince January 6, 2001X68000 LIBRARYEnglish
更新日: 2016 年 8 月 18 日
X68000 LIBRARY > ソフトウェアライブラリ > 特定のハードウェア用のソフトウェア > 060turbo 関連 > 060turbo.sys > MC68060 の命令の実行時間

MC68060 の命令の実行時間

説明

MC68060 の命令のスーパースカラ分類表と個々の命令の所要クロック数をまとめた資料です。月刊電脳倶楽部 119 号(1998 年 4 月号)と 123 号(1998 年 8 月号)のアセンブラ講座の資料室に収録しました。転載にあたって内容の再考証は行っていません。ご了承下さい。

補足説明

メモリアクセスに関連するウェイトが考慮されていないので、この表だけでは厳密な所要クロック数は求まりません。言い換えると、割り込みを禁止した上でキャッシュが 100%ヒットした場合のクロック数を示していると言うことができます。メモリアクセスのウェイトはときとして非常に大きくなりますが、例えば、X68030 のグラフィック VRAM の膨大な書き込みウェイトを活用している例として、k_blend.wl などが参考になるかも知れません。

mc68060t.txt
────────────────────────────────────

                        MC68060 の命令の実行時間

────────────────────────────────────


●実効アドレスの計算時間

  後述の「●各命令の実行時間」で実行時間に「+ ea」が付加されているものは、
オペランドの <ea> の部分のアドレッシングモードによって命令の実行時間に実
効アドレスの計算時間を加える必要があります。

  アドレッシングモード別の実効アドレスの計算時間は次の通りです。

        フルフォーマットでないとき(68000 でも使えるアドレッシングのとき)
        ┌──────────────────────────────┐
        │Dn              データレジスタ直接                          │
        │                                                            │
        │An              アドレスレジスタ直接                        │
        │                                                            │
        │(An)            アドレスレジスタ間接                        │
        │                                                            │
        │(An)+           アドレスレジスタ間接ポストインクリメント付き│
        │                                                            │
        │-(An)           アドレスレジスタ間接プレデクリメント付き    │
        │                                                            │
        │(d16,An)        アドレスレジスタ間接ディスプレースメント付き│
        │                                                            │
        │(d8,An,Xi*SF)   アドレスレジスタ間接インデックスおよび      │
        │                バイトディスプレースメント付き              │
        │                                                            │
        │(xxx).W         絶対ショート                                │
        │                                                            │
        │(xxx).L         絶対ロング                                  │
        │                                                            │
        │(d16,PC)        プログラムカウンタ・ディスプレースメント付き│
        │                                                            │
        │(d8,PC,Xi*SF)   プログラムカウンタ・インデックスおよび      │
        │                バイトディスプレースメント付き              │
        │                                                            │
        │#<data>         イミディエイト                              │
        └──────────────────────────────┘
                                                ⇒ + ea = + 0


        フルフォーマットのとき(メモリ間接アドレッシングを除く)
        ┌──────────────────────────────┐
        │(bd,An,Xi*SF)   アドレスレジスタ間接インデックスおよび      │
        │                (16または32ビット)ディスプレースメント付き  │
        │                                                            │
        │(bd,PC,Xi*SF)   プログラムカウンタ・インデックスおよび      │
        │                (16または32ビット)ディスプレースメント付き  │
        └──────────────────────────────┘
                                                ⇒ + ea = + 1


        フルフォーマットのメモリ間接アドレッシングのとき
        ┌──────────────────────────────┐
        │([bd,An,Xn],od) メモリ間接プレインデックスモード            │
        │                                                            │
        │([bd,An],Xn,od) メモリ間接ポストインデックスモード          │
        │                                                            │
        │([bd,PC,Xn],od) プログラムカウンタメモリ間接                │
        │                プレインデックスモード                      │
        │                                                            │
        │([bd,PC],Xn,od) プログラムカウンタメモリ間接                │
        │                ポストインデックスモード                    │
        └──────────────────────────────┘
                                                ⇒ + ea = + 3


●各命令の実行時間

  「⇒」の右側が命令の実行時間です。

  下記の命令の実行時間には、メモリアクセスの所要時間が含まれていません。
メモリアクセスの所要時間はキャッシュがヒットしたとき 0 ですが、それ以外
の場合は別途計算する必要があります。

  オペレーションサイズの部分が「*」になっているものは、オペレーションサ
イズが実行時間に影響しないことを意味しています。

  「Rn」は、「Dn」と「An」の 2 つをまとめた表記です。

  実行時間に「+ ea」が付加されているものは、前述の「実効アドレスの計算時
間」を加えることを意味しています。前述の通り、68000 でも使えるアドレッシ
ングモードの場合は実効アドレスの計算時間が 0 なので、その場合は「+ ea」
を無視して構いません。

  「src_ea」は「ソースオペランドの実効アドレスの計算時間」、「dst_ea」は
「デスティネーションオペランドの実効アドレスの計算時間」です。これらの実
効アドレスの計算時間は「+ ea」の場合と同じです。

  命令の実行時間に「以下」が付加されているものは、命令の実行時間が最大値
であることを示しています。


・MOVE 命令

        MOVE.*  Rn,<ea>
        MOVE.*  <ea>,Dn
        MOVEA.* <ea>,An
                                                ⇒ 1 + ea
        MOVE.*  #<data>,<ea>
          <ea> = Rn,(An),(An)+,-(An)
                                                ⇒ 1 + ea
        MOVE.*  <src_ea>,<dst_ea>
          上記以外
                                                ⇒ 2 + src_ea + dst_ea


・MOVE16 命令

        MOVE16  <src_ea>,<dst_ea>
          ソースオペランドのアクセスがデータキャッシュにヒットしたとき
                                                ⇒ 11
          上記以外
                                                ⇒ 18


・標準命令

        ADDA.*  <ea>,An
        CMPA.*  <ea>,An
        SUBA.*  <ea>,An
          <ea> = (Ay)+,-(Ay) かつ Ay = An
                                                ⇒ 2 + ea
          <ea> = 上記以外
                                                ⇒ 1 + ea

        ADD.*   <ea>,Dn
        AND.*   <ea>,Dn
        CMP.*   <ea>,Dn
        EOR.*   <ea>,Dn
        OR.*    <ea>,Dn
        SUB.*   <ea>,Dn
                                                ⇒ 1 + ea

        ADD.*   Dn,<ea>
        AND.*   Dn,<ea>
        CMP.*   Dn,<ea>
        EOR.*   Dn,<ea>
        OR.*    Dn,<ea>
        SUB.*   Dn,<ea>
                                                ⇒ 1 + ea

        DIVS.W  <ea>,Dn
        DIVU.W  <ea>,Dn
                                                ⇒ 22 + ea 以下

        DIVS.L  <ea>,Dn
        DIVU.L  <ea>,Dn
          <ea> = Dn,(An),(An)+,-(An),(d16,An),(d16,PC)
                                                ⇒ 38 + ea
          <ea> = 上記以外
                                                ⇒ 39 + ea

        MULS.W  <ea>,Dn
        MULU.W  <ea>,Dn
                                                ⇒ 2 + ea

        MULS.L  <ea>,Dn
        MULU.L  <ea>,Dn
          <ea> = Dn,(An),(An)+,-(An),(d16,An),(d16,PC)
                                                ⇒ 2 + ea
          <ea> = 上記以外
                                                ⇒ 3 + ea


・イミディエイト命令

        ADDI.*  #<data>,<ea>
        ANDI.*  #<data>,<ea>
        CMPI.*  #<data>,<ea>
        EORI.*  #<data>,<ea>
        ORI.*   #<data>,<ea>
        SUBI.*  #<data>,<ea>
          <ea> = Dn,(An),(An)+,-(An)
                                                ⇒ 1
          <ea> = 上記以外
                                                ⇒ 2 + ea

        ADDQ.*  #<data>,<ea>
        SUBQ.*  #<data>,<ea>
                                                ⇒ 1 + ea

        MOVEQ.L #<data>,Dn
                                                ⇒ 1


・単一オペランド命令

        CAS.*   Dc,Du,<ea>
          <ea> = Rn,(An),(An)+,-(An),(d16,An)
                                                ⇒ 19
          <ea> = 上記以外
                                                ⇒ 20 + ea

        CLR.*   <ea>
        NBCD.B  <ea>
        NEG.*   <ea>
        NEGX.*  <ea>
        NOT.*   <ea>
        Scc.B   <ea>
        TST.*   <ea>
                                                ⇒ 1 + ea

        TAS.B   <ea>
          <ea> = Dn
                                                ⇒ 1 + ea
          <ea> = 上記以外
                                                ⇒ 17 + ea


・シフト,ローテート命令

        ASL.*   #<data>,<ea>
        ASR.*   #<data>,<ea>
        LSL.*   #<data>,<ea>
        LSR.*   #<data>,<ea>
        ROL.*   #<data>,<ea>
        ROR.*   #<data>,<ea>
        ROXL.*  #<data>,<ea>
        ROXR.*  #<data>,<ea>
                                                ⇒ 1 + ea


・ビット操作命令とビットフィールド命令

        BCHG.*  Dn,<ea>
        BCLR.*  Dn,<ea>
        BSET.*  Dn,<ea>
        BTST.*  Dn,<ea>
                                                ⇒ 1 + ea

        BCHG.*  #<data>,<ea>
        BCLR.*  #<data>,<ea>
        BSET.*  #<data>,<ea>
        BTST.*  #<data>,<ea>
          <ea> = Dn,(An),(An)+,-(An)
                                                ⇒ 1
          <ea> = 上記以外
                                                ⇒ 2 + ea

        BFCHG   <ea>{offset:width}
        BFCLR   <ea>{offset:width}
        BFSET   <ea>{offset:width}
          <ea> = Dn,(An),(d16,An)
            4 バイトまで
                                                ⇒ 8
            5 バイト
                                                ⇒ 12
          <ea> = 上記以外
            4 バイトまで
                                                ⇒ 9 + ea
            5 バイト
                                                ⇒ 13 + ea


        BFEXTS  <ea>{offset:width},Dn
        BFEXTU  <ea>{offset:width},Dn
        BFTST   <ea>{offset:width}
          <ea> = Dn,(An),(d16,An)
            4 バイトまで
                                                ⇒ 6
            5 バイト
                                                ⇒ 8
          <ea> = 上記以外
            4 バイトまで
                                                ⇒ 7 + ea
            5 バイト
                                                ⇒ 9 + ea

        BFFFO   <ea>{offset:width},Dn
          <ea> = Dn,(An),(d16,An)
            4 バイトまで
                                                ⇒ 9
            5 バイト
                                                ⇒ 11
          <ea> = 上記以外
            4 バイトまで
                                                ⇒ 10 + ea
            5 バイト
                                                ⇒ 12 + ea

        BFINS   Dn,<ea>{offset:width}
          <ea> = Dn,(An),(d16,An)
                                                ⇒ 6
          <ea> = 上記以外
                                                ⇒ 7 + ea


・分岐命令

        Bcc.*   <label>
          分岐予測があって予測が正しくて分岐するとき
                                                ⇒ 0
          分岐予測があって予測が正しくて分岐しないとき
          分岐予測がなくて前方分岐で分岐しないとき
                                                ⇒ 1
          分岐予測がなくて後方分岐で分岐するとき
                                                ⇒ 3
          分岐予測があって予測が間違っていたとき
          分岐予測がなくて前方分岐で分岐するとき
          分岐予測がなくて後方分岐で分岐しないとき
                                                ⇒ 7

        BRA.*   <label>
          分岐予測があるとき
                                                ⇒ 0
          分岐予測がないとき
                                                ⇒ 3

        BSR.*   <label>
          分岐予測があるとき
                                                ⇒ 1
          分岐予測がないとき
                                                ⇒ 3

        DBcc.W  Dn,<label>
          分岐予測があって予測が正しかったとき
                                                ⇒ 2
          分岐予測がなくて分岐するとき
                                                ⇒ 3
          分岐予測があって予測が間違っていたとき
          分岐予測がなくて分岐しないとき
                                                ⇒ 8

        DBRA.W  Dn,<label>
          分岐予測があって予測が正しかったとき
                                                ⇒ 1
          分岐予測がなくて分岐するとき
                                                ⇒ 3
          分岐予測があって予測が間違っていたとき
          分岐予測がなくて分岐しないとき
                                                ⇒ 7

        FBcc.*  <label>
          分岐予測があって予測が正しかったとき
          分岐予測がなくて分岐しないとき
                                                ⇒ 2
          分岐予測があって予測が間違っていたとき
          分岐予測がなくて分岐するとき
                                                ⇒ 8

        JMP     <ea>
          <ea> = (d16,PC),(xxx).W,(xxx).L
            分岐予測があるとき
                                                ⇒ 0
            分岐予測がないとき
                                                ⇒ 3
          <ea> = 上記以外
                                                ⇒ 5 + ea

        JSR     <ea>
          <ea> = (d16,PC),(xxx).W,(xxx).L
            分岐予測があるとき
                                                ⇒ 1
            分岐予測がないとき
                                                ⇒ 3
          <ea> = 上記以外
                                                ⇒ 5 + ea

        RTD     #<data>
        RTS
                                                ⇒ 7

        RTE
                                                ⇒ 17

        RTR
                                                ⇒ 8


・LEA,PEA,MOVEM 命令

        LEA.L   <ea>,An
                                                ⇒ 1 + ea

        PEA.L   <ea>
          <ea> = (An),(xxx).W
                                                ⇒ 1
          <ea> = 上記以外
                                                ⇒ 2 + ea

        MOVEM.* <ea>,<register-list>
          <ea> = (An),(An)+,(d16,An),(d16,PC)
                                                ⇒ n
          <ea> = 上記以外
                                                ⇒ 1 + n + ea
                n = 転送されるレジスタ数

        MOVEM.* <register-list>,<ea>
          <ea> = (An),-(An),(d16,An)
                                                ⇒ n
          <ea> = 上記以外
                                                ⇒ 1 + n + ea
                n = 転送されるレジスタ数


・多倍精度命令

        ADDX.*  Dy,Dx
        SUBX.*  Dy,Dx
        ABCD.B  Dy,Dx
        SBCD.B  Dy,Dx
                                                ⇒ 1

        ADDX.*  -(Ay),-(Ax)
        CMPM.*  (Ay)+,(Ax)+
        SUBX.*  -(Ay),-(Ax)
        ABCD.B  -(Ay),-(Ax)
        SBCD.B  -(Ay),-(Ax)
                                                ⇒ 2


・SR(ステータスレジスタ),MOVES,その他の命令

        ANDI.W  #<data>,SR
        EORI.W  #<data>,SR
                                                ⇒ 12

        MOVE.W  SR,<ea>
                                                ⇒ 1 + ea

        MOVE.W  <ea>,SR
                                                ⇒ 12 + ea

        ORI.W   #<data>,SR
                                                ⇒ 5 + ea

        MOVES.* <ea>,Rn
        MOVES.* Rn,<ea>
          <ea> = (An),(An)+,-(An),(d16,An)
                                                ⇒ 1
          <ea> = その他
                                                ⇒ 2 + ea

        ANDI.B  #<data>,CCR
        EORI.B  #<data>,CCR
        EXG.L   Ry,Rx
        EXT.*   Dn
        EXTB.L  Dn
        ORI.B   #<data>,CCR
                                                ⇒ 1

        CHK.*   <ea>,Dn
          トラップしなかったとき
                                                ⇒ 2 + ea

        CINVA   <caches>
                                                ⇒ 17 以下

        CINVL   <caches>,(An)
                                                ⇒ 18 以下

        CINVP   <caches>,(An)
                                                ⇒ 274 以下

        CPUSHA  <caches>
                                                ⇒ 5394 以下

        CPUSHL  <caches>
                                                ⇒ 26 以下

        CPUSHP  <caches>,(An)
                                                ⇒ 2838 以下

        LINK.*  An,#<data>
                                                ⇒ 2

        LPSTOP.W        #<data>
                                                ⇒ 15

        MOVE.W  CCR,<ea>
        MOVE.W  <ea>,CCR
                                                ⇒ 1 + ea

        MOVE.L  USP,An
                                                ⇒ 1

        MOVE.L  An,USP
                                                ⇒ 2

        MOVEC.L Rc,Rn
          Rc = SFC,DFC,USP,VBR,PCR
                                                ⇒ 12
          Rc = CACR,TC,ITTR0,ITTR1,DTTR0,DTTR1,BUSCR,URP,SRP
                                                ⇒ 15

        MOVEC.L Rn,Rc
          Rc = SFC,DFC,USP,VBR,PCR
                                                ⇒ 11
          Rc = CACR,TC,ITTR0,ITTR1,DTTR0,DTTR1,BUSCR,URP,SRP
                                                ⇒ 14

        NOP
                                                ⇒ 9

        PACK    -(Ay),-(Ax),#<data>
        PACK    Dy,Dx,#<data>
                                                ⇒ 2

        PLPA    (An)
          ATC がヒットしたとき
                                                ⇒ 15
          ATC がミスしたとき
                                                ⇒ 28

        PFLUSH  (An)
        PFLUSHN (An)
                                                ⇒ 18

        PFLUSHAN
        PFLUSHA
                                                ⇒ 33

        RESET
                                                ⇒ 520

        STOP    #<data>
                                                ⇒ 8

        SWAP.W  Dn
                                                ⇒ 1

        TRAPcc
        TRAPV
          トラップしなかったとき
                                                ⇒ 1

        UNLK    An
                                                ⇒ 1

        UNPK    -(Ay),-(Ax),#<data>
        UNPK    Dy,Dx,#<data>
                                                ⇒ 2


・FPU 命令

  FPU 命令の実行時間に「+ fea」が付加されているものには、以下の時間を加
えます。

        オペレーションサイズが .B/.W/.L のいずれか
                                                ⇒ fea = 3

        オペレーションサイズが .X
                                                ⇒ fea = 2

        オペレーションサイズが .D でソースオペランドがイミディエイト
                                                ⇒ fea = 1

        上記以外
                                                ⇒ fea = 0


        FABS.*  <ea>,FPn
        FDABS.* <ea>,FPn
        FSABS.* <ea>,FPn
        FCMP.*  <ea>,FPn
        FMOVE.* <ea>,FPn
        FDMOVE.*        <ea>,FPn
        FSMOVE.*        <ea>,FPn
        FMOVE.* FPn,<ea>
        FNEG.*  <ea>,FPn
        FDNEG.* <ea>,FPn
        FSNEG.* <ea>,FPn
        FTST.*  <ea>
          <ea> = FPn
                                                ⇒ 1
          <ea> = Dn
                                                ⇒ 3
          <ea> = (An),(An)+,-(An),(d16,An),(d16,PC)
                                                ⇒ 1 + fea
          <ea> = 上記以外
                                                ⇒ 2 + ea + fea

        FADD.*  <ea>,FPn
        FDADD.* <ea>,FPn
        FSADD.* <ea>,FPn
        FSGLMUL.*       <ea>,FPn
        FMUL.*  <ea>,FPn
        FDMUL.* <ea>,FPn
        FSMUL.* <ea>,FPn
        FSUB.*  <ea>,FPn
        FDSUB.* <ea>,FPn
        FSSUB.* <ea>,FPn
          <ea> = FPn
                                                ⇒ 3
          <ea> = Dn
                                                ⇒ 5
          <ea> = (An),(An)+,-(An),(d16,An),(d16,PC)
                                                ⇒ 3 + fea
          <ea> = 上記以外
                                                ⇒ 4 + ea + fea

        FDIV.*  <ea>,FPn
        FDDIV.* <ea>,FPn
        FSDIV.* <ea>,FPn
        FSGLDIV.*       <ea>,FPn
          <ea> = FPn
                                                ⇒ 37
          <ea> = Dn
                                                ⇒ 39
          <ea> = (An),(An)+,-(An),(d16,An),(d16,PC)
                                                ⇒ 37 + fea
          <ea> = 上記以外
                                                ⇒ 38 + ea + fea

        FMOVE.L <ea>,FPCR
          <ea> = Dn
                                                ⇒ 8
          <ea> = (An),(An)+,-(An),(d16,An),(d16,PC)
                                                ⇒ 6 + fea
          <ea> = 上記以外
                                                ⇒ 7 + ea + fea

        FMOVE.L FPCR,<ea>
          <ea> = Dn
                                                ⇒ 4
          <ea> = (An),(An)+,-(An),(d16,An),(d16,PC)
                                                ⇒ 2
          <ea> = 上記以外
                                                ⇒ 3 + ea

        FINT.*  <ea>,FPn
        FINTRZ.*        <ea>,FPn
          <ea> = FPn
                                                ⇒ 3
          <ea> = Dn
                                                ⇒ 4
          <ea> = (An),(An)+,-(An),(d16,An),(d16,PC),(d8,An,Xi*SF),(d8,PC,Xi*SF)
                                                ⇒ 3 + fea
          <ea> = 上記以外
                                                ⇒ 4 + ea + fea

        FMOVEM.X        <ea>,<register-list>
          <ea> = (An),(An)+,(d16,An),(d16,PC)
                                                ⇒ 1 + 3n
          <ea> = 上記以外
                                                ⇒ 2 + 3n + ea
                n = 転送されるレジスタ数

        FMOVEM.X        <register-list>,<ea>
          <ea> = (An),-(An),(d16,An),(d16,PC)
                                                ⇒ 1 + 3n
          <ea> = 上記以外
                                                ⇒ 2 + 3n + ea
                n = 転送されるレジスタ数

        FSQRT.* <ea>,FPn
          <ea> = FPn
                                                ⇒ 68
          <ea> = Dn
                                                ⇒ 70
          <ea> = (An),(An)+,-(An),(d16,An),(d16,PC)
                                                ⇒ 68 + fea
          <ea> = 上記以外
                                                ⇒ 69 + ea + fea

        FSAVE   <ea>
                                                ⇒ 3

        FRESTORE        <ea>
                                                ⇒ 6

        FMOVEM.L        <ea>,<register-list>
                                                ⇒ 7

        FMOVEM.L        <register-list>,<ea>
                                                ⇒ 5


・例外

        リセット
          RSTI がネゲートされてから最初の命令が OEP に入るまで
                                                ⇒ 45

        バスエラー
        アドレスエラー
        不当命令
        特権違反
        トレース
        ライン A エミュレータ
        ライン F エミュレータ
        未実装実効アドレス
        未実装整数命令
        未実装浮動小数点
        TRAP
                                                ⇒ 19

        TRAPV
        TRAPcc
          トラップしたとき
                                                ⇒ 19

        0 による除算
                                                ⇒ 20 + ea

        CHK.*   <ea>,Dn
          トラップしたとき
                                                ⇒ 20 + ea

        フォーマットエラー
                                                ⇒ 23

        割り込み
          オートベクタまたは外部ベクタの取得のウェイトが 0 と仮定する
                                                ⇒ 23

        FP 比較不能時の分岐
                                                ⇒ 21

        FP 不正確な結果
        FP 0 による除算
        FP アンダーフロー
        FP オペランドエラー
        FP オーバーフロー
        FP シグナリング NAN
          浮動小数点命令実行後例外が発生した場合
                                                ⇒ 18
          上記以外
                                                ⇒ 19

        FP 未実装データ型
                                                ⇒ 19


●スーパースカラ分類の意味

  68060 の命令は、スーパースカラに関して次の 4 通りに分類されます。


    ・pOEP|sOEP

          pOEP と sOEP のいずれでも動作し、pOEP で動作する場合に

        は同時に sOEP に pOEP|sOEP の命令が入ることが許されてい

        る命令です。単純な転送と整数演算、論理演算、シフト・ロー

        テート命令などがこれに分類されます。


    ・pOEP-but allows-sOEP

          pOEP だけで動作するが、同時に sOEP に pOEP|sOEP の命令

        が入ることが許されている命令です。浮動小数点命令はこれに

        分類されます。


    ・pOEP-until-last

          pOEP だけで動作する複数クロックの命令で、この命令の最

        後 1 クロックに限って sOEP に pOEP|sOEP の命令が入ること

        が許されている命令です。メモリ-メモリ転送、イミディエイ

        ト、ビット操作命令などがこれに分類されます。


    ・pOEP-only

          pOEP だけで動作し、この命令の動作中は sOEP が使えなく

        なる命令です。上記以外の命令がこれに分類されます。


  上記の分類に従い、次の組み合わせの場合に限って 2 つの命令を同時に実行

できます。

          ┌───────────┬───────────┐
          │     1 番目の命令     │     2 番目の命令     │
          ├───────────┼───────────┤
          │pOEP|sOEP             │pOEP|sOEP             │
          │                      │                      │
          │pOEP-but allows-sOEP  │pOEP|sOEP             │
          │                      │                      │
          │pOEP-until-last       │pOEP|sOEP             │
          └───────────┴───────────┘


  具体的なスーパースカラ分類は以下の通りです。


●整数命令のスーパースカラ分類表

        ┏━━━━━━━━━━━━┯━━━━━━━━━━━━┓
        ┃          命令          │   スーパースカラ分類   ┃
        ┣━━━━━━━━━━━━┿━━━━━━━━━━━━┫
        ┃ABCD                    │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃ADD                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃ADDA                    │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃ADDI <ea>,Dx            │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃ADDI <ea>,(Ax)          │pOEP|sOEP               ┃
        ┃ADDI <ea>,(Ax)+         │                        ┃
        ┃ADDI <ea>,-(Ax)         │                        ┃
        ┠────────────┼────────────┨
        ┃ADDI (その他)           │pOEP-until-last         ┃
        ┠────────────┼────────────┨
        ┃ADDQ                    │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃ADDX                    │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃AND                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃ANDI <ea>,Dx            │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃ANDI <ea>,(Ax)          │pOEP|sOEP               ┃
        ┃ANDI <ea>,(Ax)+         │                        ┃
        ┃ANDI <ea>,-(Ax)         │                        ┃
        ┠────────────┼────────────┨
        ┃ANDI (その他)           │pOEP-until-last         ┃
        ┠────────────┼────────────┨
        ┃ANDI to CCR             │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃ASL                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃ASR                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃Bcc                     │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃BCHG Dy,<ea>            │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃BCHG #<imm>,<ea>        │pOEP-until-last         ┃
        ┠────────────┼────────────┨
        ┃BCLR Dy,<ea>            │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃BCLR #<imm>,<ea>        │pOEP-until-last         ┃
        ┠────────────┼────────────┨
        ┃BFCHG                   │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃BFCLR                   │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃BFEXTS                  │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃BFEXTU                  │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃BFFFO                   │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃BFINS                   │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃BFSET                   │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃BFTST                   │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃BKPT                    │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃BRA                     │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃BSET Dy,<ea>            │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃BSET #<imm>,<ea>        │pOEP-until-last         ┃
        ┠────────────┼────────────┨
        ┃BSR                     │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃BTST Dy,<ea>            │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃BTST #<imm>,<ea>        │pOEP-until-last         ┃
        ┠────────────┼────────────┨
        ┃CAS                     │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃CHK                     │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃CLR                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃CMP                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃CMPA                    │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃CMPI <ea>,Dx            │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃CMPI <ea>,(Ax)          │pOEP|sOEP               ┃
        ┃CMPI <ea>,(Ax)+         │                        ┃
        ┃CMPI <ea>,-(Ax)         │                        ┃
        ┠────────────┼────────────┨
        ┃CMPI (その他)           │pOEP-until-last         ┃
        ┠────────────┼────────────┨
        ┃CMPM                    │pOEP-until-last         ┃
        ┠────────────┼────────────┨
        ┃DBcc                    │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃DIVS.L                  │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃DIVS.W                  │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃DIVU.L                  │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃DIVU.W                  │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃EOR                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃EORI <ea>,Dx            │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃EORI <ea>,(Ax)          │pOEP|sOEP               ┃
        ┃EORI <ea>,(Ax)+         │                        ┃
        ┃EORI <ea>,-(Ax)         │                        ┃
        ┠────────────┼────────────┨
        ┃EORI (その他)           │pOEP-until-last         ┃
        ┠────────────┼────────────┨
        ┃EORI to CCR             │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃EXG                     │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃EXT                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃EXTB.L                  │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃ILLEGAL                 │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃JMP                     │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃JSR                     │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃LEA                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃LINK                    │pOEP-until-last         ┃
        ┠────────────┼────────────┨
        ┃LSL                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃LSR                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃MOVE <ea>,Rx            │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃MOVE Ry,<ea>            │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃MOVE <mem>y,<mem>x      │pOEP-until-last         ┃
        ┠────────────┼────────────┨
        ┃MOVE #<imm>,<mem>x      │pOEP-until-last         ┃
        ┠────────────┼────────────┨
        ┃MOVEA                   │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃MOVE from CCR           │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃MOVE to CCR             │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃MOVE16                  │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃MOVEM                   │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃MOVEQ                   │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃MULS.L                  │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃MULS.W                  │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃MULU.L                  │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃MULU.W                  │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃NBCD                    │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃NEG                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃NEGX                    │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃NOP                     │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃NOT                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃OR                      │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃ORI #<imm>,Dx           │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃ORI #<imm>,(Ax)         │pOEP|sOEP               ┃
        ┃ORI #<imm>,(Ax)+        │                        ┃
        ┃ORI #<imm>,-(Ax)        │                        ┃
        ┠────────────┼────────────┨
        ┃ORI (その他)            │pOEP-until-last         ┃
        ┠────────────┼────────────┨
        ┃ORI to CCR              │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃PACK                    │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃PEA                     │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃ROL                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃ROR                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃ROXL                    │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃ROXR                    │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃RTD                     │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃RTR                     │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃RTS                     │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃SBCD                    │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃Scc                     │pOEP-but-allows-sOEP    ┃
        ┠────────────┼────────────┨
        ┃SUB                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃SUBA                    │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃SUBI <ea>,Dx            │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃SUBI <ea>,(Ax)          │pOEP|sOEP               ┃
        ┃SUBI <ea>,(Ax)+         │                        ┃
        ┃SUBI <ea>,-(Ax)         │                        ┃
        ┠────────────┼────────────┨
        ┃SUBI (その他)           │pOEP-until-last         ┃
        ┠────────────┼────────────┨
        ┃SUBQ                    │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃SUBX                    │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃SWAP                    │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃TAS                     │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃TRAP                    │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃TRAPF                   │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃TRAPcc (その他)         │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃TRAPV                   │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃TST                     │pOEP|sOEP               ┃
        ┠────────────┼────────────┨
        ┃UNLK                    │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃UNPK                    │pOEP-only               ┃
        ┗━━━━━━━━━━━━┷━━━━━━━━━━━━┛


●特権命令のスーパースカラ分類表

        ┏━━━━━━━━━━━━┯━━━━━━━━━━━━┓
        ┃          命令          │  スーパースカラ分類    ┃
        ┣━━━━━━━━━━━━┿━━━━━━━━━━━━┫
        ┃ANDI to SR              │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃CINV                    │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃CPUSH                   │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃EORI to SR              │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃MOVE from SR            │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃MOVE to SR              │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃MOVE USP                │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃MOVEC                   │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃MOVES                   │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃ORI to SR               │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃PFLUSH                  │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃PLPA                    │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃RESET                   │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃RTE                     │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃STOP                    │pOEP-only               ┃
        ┗━━━━━━━━━━━━┷━━━━━━━━━━━━┛


●浮動小数点命令のスーパースカラ分類表

        ┏━━━━━━━━━━━━┯━━━━━━━━━━━━┓
        ┃          命令          │  スーパースカラ分類    ┃
        ┣━━━━━━━━━━━━┿━━━━━━━━━━━━┫
        ┃FABS                    │pOEP-but-allows-sOEP    ┃
        ┃FDABS                   │                        ┃
        ┃FSABS                   │                        ┃
        ┠────────────┼────────────┨
        ┃FADD                    │pOEP-but-allows-sOEP    ┃
        ┃FDADD                   │                        ┃
        ┃FSADD                   │                        ┃
        ┠────────────┼────────────┨
        ┃FBcc                    │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃FCMP                    │pOEP-but-allows-sOEP    ┃
        ┠────────────┼────────────┨
        ┃FDIV                    │pOEP-but-allows-sOEP    ┃
        ┃FDDIV                   │                        ┃
        ┃FSDIV                   │                        ┃
        ┃FSGLDIV                 │                        ┃
        ┠────────────┼────────────┨
        ┃FINT                    │pOEP-but-allows-sOEP    ┃
        ┃FINTRZ                  │                        ┃
        ┠────────────┼────────────┨
        ┃FMOVE                   │pOEP-but-allows-sOEP    ┃
        ┃FDMOVE                  │                        ┃
        ┃FSMOVE                  │                        ┃
        ┠────────────┼────────────┨
        ┃FMOVE FPcr              │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃FMOVEM                  │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃FMUL                    │pOEP-but-allows-sOEP    ┃
        ┃FDMUL                   │                        ┃
        ┃FSMUL                   │                        ┃
        ┃FSGLMUL                 │                        ┃
        ┠────────────┼────────────┨
        ┃FNEG                    │pOEP-but-allows-sOEP    ┃
        ┃FDNEG                   │                        ┃
        ┃FSNEG                   │                        ┃
        ┠────────────┼────────────┨
        ┃FNOP                    │pOEP-only               ┃
        ┠────────────┼────────────┨
        ┃FSQRT                   │pOEP-but-allows-sOEP    ┃
        ┠────────────┼────────────┨
        ┃FSUB                    │pOEP-but-allows-sOEP    ┃
        ┃FDSUB                   │                        ┃
        ┃FSSUB                   │                        ┃
        ┠────────────┼────────────┨
        ┃FTST                    │pOEP-but-allows-sOEP    ┃
        ┗━━━━━━━━━━━━┷━━━━━━━━━━━━┛


●パイプライン同調命令

  次の命令はパイプライン同調(pipeline synchronization)を伴います。つま
り、これらの命令はアドレッシングモードや直前の命令のメモリアクセスおよび
そのスーパースカラ分類に関係なく、直前の命令の処理が完全に終わってから実
行されます。

        ANDI to SR
        BKPT
        CAS
        CINV
        CPUSH
        EORI to SR
        HALT
        LPSTOP
        MOVE to SR
        MOVEC
        NOP
        ORI to SR
        PFLUSH
        PLPA
        RESET
        RTE
        STOP
        TAS


●ソフトウェアエミュレーションによって実行される命令

  以下の命令は MC68060 ではソフトウェアエミュレーションによって実行され
ます。これらの命令は他の命令と比較して大きな実行時間を必要とするので、速
度を要求されるプログラムでは使わないで下さい。


・未実装整数命令

        CAS.wl Dc,Du,<ea>       (<ea>がミスアラインの場合)
        CAS2.wl Dc1:Dc2,Du1:Du2,(Rn1):(Rn2)
        CHK2.bwl <ea>,Rn
        CMP2.bwl <ea>,Rn
        DIVS.L <ea>,Dr:Dq
        DIVU.L <ea>,Dr:Dq
        MOVEP.wl Dx,(d,Ay)
        MOVEP.wl (d,Ay),Dx
        MULS.L <ea>,Dh:Dl
        MULU.L <ea>,Dh:Dl


・未実装浮動小数点命令

    未実装浮動小数点単項演算命令
        FACOS
        FASIN
        FATAN
        FATANH
        FCOS
        FCOSH
        FETOX
        FETOXM1
        FGETEXP
        FGETMAN
        FLOG10
        FLOG2
        FLOGN
        FLOGNP1
        FSIN
        FSINCOS
        FSINH
        FTAN
        FTANH
        FTENTOX
        FTWOTOX

    未実装浮動小数点 2 項演算命令
        FMOD
        FREM
        FSCALE

    条件付き未実装浮動小数点命令
        FDBcc
        FScc
        FTRAPcc

    その他の未実装浮動小数点命令
        FMOVECR

    未実装浮動小数点実効アドレス
        FMOVEM.X Dn,<ea>
        FMOVEM.X <ea>,Dn
        FMOVEM.L #<data>,#<data>,FPcr/FPcr
        FMOVEM.L #<data>,#<data>,#<data>,FPCR/FPSR/FPIAR
        F<op>.X #<data>,FPn
        F<op>.P #<data>,FPn

    未実装浮動小数点データ型
        F<op>.P                 (未実装浮動小数点実効アドレスを除く)
        F<op>.sdx               (ソースオペランドが非正規化数の場合)
        F<op>.X                 (ソースオペランドが正規化不能の場合)


●参考文献

        M68060 User's Manual / Motorola