「65c816 資料」の編集履歴(バックアップ)一覧はこちら
65c816 資料 - (2016/02/28 (日) 14:29:47) の1つ前との変更点
追加された行は緑色になります。
削除された行は赤色になります。
実質自分用メモです。
前々からSNES Wikiを参照させて頂いてましたが、
個別でページが用意されているため所要クロック数確認が面倒だったり、
スパムの被害を受けている(さらに復元しようとしてもエラーが出る)ため記事を作ります。
*所要クロック数まとめ
**Indirect系
||&b(){($**)}|&b(){($**),y}|&b(){($**,x)}|&b(){[$**]}|&b(){[$**],y}|&b(){($**,s),y}|
|STA|5|6|6|6|6|7|
|Aレジスタ系|5|5|6|6|6|7|
**Direct/Absolute/AbsoluteLong系
||&b(){#$**}|&b(){$** &font(9px){3}}|&b(){$**,xy &font(9px){3}}|&b(){$****}|&b(){$****,xy}|&b(){$******}|&b(){$******,x}|&b(){$**,s}|
|&b(){STA &font(9px){1}}|--|3|4|4|5|5|5|4|
|&b(){Aレジスタ系 &font(9px){1}}|2|3|4|4|4 &b(){&font(9px){4}}|5|5|4|
|&b(){STZ &font(9px){1}}|--|3|4|4|5|--|--|--|
|&b(){BIT &font(9px){1}}|2|3|4|4|4|--|--|--|
|&b(){LDX/LDY &font(9px){2}}|2|3|4|4|4|--|--|--|
|&b(){STX/STY &font(9px){2}}|--|3|4|4|--|--|--|--|
|&b(){CPX/CPY &font(9px){2}}|2|3|--|4|--|--|--|--|
|&b(){SEP/REP}|3|--|--|--|--|--|--|--|
|&b(){TSB/TRB &font(9px){5}}|--|5|--|6|--|--|--|--|
|&b(){RW系命令 &font(9px){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レジスタ系…&tt(){STA}を除くアキュムレータが関係する命令。&tt(){ORA AND EOR ADC LDA CMP SBC}
-RW系命令…1回でメモリ読み込み・書き込みを実行する命令。&tt(){INC DEC ASL LSR ROL ROR}
**ジャンプ/コール系
||&b(){$****}|&b(){$******}|&b(){($****)}|&b(){($****,x)}|&b(){[$****]}|
|JMP/JML|3|4|5|6|6|
|JSR/JSL|6|8|--|8|--|
**その他
-分岐命令は2クロック、分岐時3クロック。
-通常のプッシュ系命令は8bitの場合は3クロック、16bitの場合は4クロック。
-通常のポップ系命令はすべて4クロック。
-Implied系命令は一部を除き2クロック。
|命令|クロック数| |命令|クロック数|
|RTS|6||PEA|5|
|RTL|8||PEI|6|
|RTI|6||PER|6|
|XBA|3||MVP|7x|
|XCE|2||MVN|7x|
|BRK|7||WAI|3|
|COP|7||STP|3|
|NOP|2||WDM|2|
実質自分用メモです。
前々からSNES Wikiを参照させて頂いてましたが、
個別でページが用意されているため所要クロック数確認が面倒だったり、
スパムの被害を受けている(さらに復元しようとしてもエラーが出る)ため記事を作ります。
*所要クロック数まとめ
**Indirect系
||&b(){($**) &font(9px){3}}|&b(){($**),y &font(9px){3}}|&b(){($**,x) &font(9px){3}}|&b(){[$**] &font(9px){3}}|&b(){[$**],y &font(9px){3}}|&b(){($**,s),y}|
|&b(){STA &font(9px){1}}|5|6|6|6|6|7|
|&b(){Aレジスタ系 &font(9px){1}}|5|5 &b(){&font(9px){4}}|6|6|6|7|
**Direct/Absolute/AbsoluteLong系
||&b(){#$**}|&b(){$** &font(9px){3}}|&b(){$**,xy &font(9px){3}}|&b(){$****}|&b(){$****,xy}|&b(){$******}|&b(){$******,x}|&b(){$**,s}|
|&b(){STA &font(9px){1}}|--|3|4|4|5|5|5|4|
|&b(){Aレジスタ系 &font(9px){1}}|2|3|4|4|4 &b(){&font(9px){4}}|5|5|4|
|&b(){STZ &font(9px){1}}|--|3|4|4|5|--|--|--|
|&b(){BIT &font(9px){1}}|2|3|4|4|4 &b(){&font(9px){4}}|--|--|--|
|&b(){LDX/LDY &font(9px){2}}|2|3|4|4|4 &b(){&font(9px){4}}|--|--|--|
|&b(){STX/STY &font(9px){2}}|--|3|4|4|--|--|--|--|
|&b(){CPX/CPY &font(9px){2}}|2|3|--|4|--|--|--|--|
|&b(){TSB/TRB &font(9px){5}}|--|5|--|6|--|--|--|--|
|&b(){RW系命令 &font(9px){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レジスタ系…&tt(){STA}を除くアキュムレータが関係する命令。&tt(){ORA AND EOR ADC LDA CMP SBC}
-RW系命令…1回でメモリ読み込み・書き込みを実行する命令。&tt(){INC DEC ASL LSR ROL ROR}
**ジャンプ/コール系
||&b(){$****}|&b(){$******}|&b(){($****)}|&b(){($****,x)}|&b(){[$****]}|
|&b(){JMP/JML}|3|4|5|6|6|
|&b(){JSR/JSL}|6|8|--|8|--|
**その他
-分岐命令は2クロック、分岐時3クロック。
-通常のプッシュ系命令は8bitの場合は3クロック、16bitの場合は4クロック。
-ポップ系命令はすべて4クロック。
-Implied系命令は一部を除き2クロック。
***あまり
|命令|クロック数| |命令|クロック数|
|RTS|6||PEA|5|
|RTL|8||PEI|6|
|RTI|6||PER|6|
|SEP|3||REP|3|
|XBA|3||MVP|7x|
|XCE|2||MVN|7x|
|BRK|7||WAI|3|
|COP|7||STP|3|
|NOP|2||WDM|2|