「65c816 資料」の編集履歴(バックアップ)一覧に戻る

65c816 資料 - (2016/02/29 (月) 09:27:28) の編集履歴(バックアップ)


実質自分用メモです。
前々からSNES Wikiを参照させて頂いてましたが、
個別でページが用意されているため所要クロック数確認が面倒だったり、
スパムの被害を受けている(さらに復元しようとしてもエラーが出る)ため記事を作ります。

所要クロック数まとめ


Indirect系

($**) 3 ($**),y 3 ($**,x) 3 [$**] 3 [$**],y 3 ($**,s),y
STA 1 5 6 6 6 6 7
Aレジスタ系 1 5 5 4 6 6 6 7

Direct/Absolute/AbsoluteLong系

#$** $** 3 $**,xy 3 $**** $****,xy $****** $******,x $**,s
STA 1 -- 3 4 4 5 5 5 4
Aレジスタ系 1 2 3 4 4 4 4 5 5 4
STZ 1 -- 3 4 4 5 -- -- --
BIT 1 2 3 4 4 4 4 -- -- --
LDX/LDY 2 2 3 4 4 4 4 -- -- --
STX/STY 2 -- 3 4 4 -- -- -- --
CPX/CPY 2 2 3 -- 4 -- -- -- --
TSB/TRB 5 -- 5 -- 6 -- -- -- --
RW系命令 5 -- 5 6 6 7 -- -- --

  • 1 m=0(A/メモリ 16bitモード)時、1クロック追加。
  • 2 x=0(X/Y 16bitモード)時、1クロック追加。
  • 3 Dレジスタの下位バイトが0でない時、1クロック追加。
  • 4 インデックス追加時にページ境界をまたいだ時、1クロック追加。
  • 5 m=0(A/メモリ 16bitモード)時、2クロック追加。

  • Aレジスタ系…STAを除くアキュムレータが関係する命令。ORA AND EOR ADC LDA CMP SBC
  • RW系命令…1回でメモリ読み込み・書き込みを実行する命令。INC DEC ASL LSR ROL ROR

ジャンプ/コール系

$**** $****** ($****) ($****,x) [$****]
JMP/JML 3 4 5 6 6
JSR/JSL 6 8 -- 8 --

その他

  • 分岐命令は2クロック、分岐時3クロック(エミュレーションモード時は4クロック)
  • 通常のプッシュ系命令は8bitの場合は3クロック、16bitの場合は4クロック。
  • ポップ系命令は8bitの場合は4クロック、16bitの場合は5クロック。
  • Implied系命令は一部を除き2クロック。

あまり

命令 クロック数      命令 クロック数
RTS 6 PEA 5
RTL 6 PEI 6 1
RTI 6 2 PER 6
SEP 3 REP 3
XBA 3 MVP 7 3
XCE 2 MVN 7 3
BRK 7 2 WAI 3
COP 7 2 STP 3
NOP 2 WDM 2

  • 1 Dレジスタの下位バイトが0でない時、1クロック追加。
  • 2 ネイティブモード時、1クロック追加。
  • 3 1バイト転送するごとに7クロック。