(57)【要約】【課題】ビット単位でデータを読み出すことができる命令を追加することによって、演算処理のステップ及びユーザが準備する必要があるプログラムの容量を削減する。【解決手段】メモリのデータをビット単位で読み出し可能な１つのオペコードを用いて複数のデータを読み出す。【選択図】図５
2017035333.tif 000002
【特許請求の範囲】
【請求項１】
メモリの１データ幅のデータから一部のデータを１以上のビットを単位として取り出し、取り出したデータを一又は二以上のレジスタに設定する１つのオペコードを有する遊技機用プロセッサ。
【請求項２】
第１のオペランド及び第２のオペランドを少なくとも有する一つのオペコードを実行する遊技機用プロセッサであって、
前記第１のオペランドは、処理が行われるレジスタにおけるデータの処理対象のビット位置を示す値を少なくとも有し、前記第２のオペランドは、メモリにおける処理に用いられるデータのビット位置と前記レジスタの前記処理対象のビット位置との関係を示すビットシフト方向及びビットシフト段数の値を少なくとも有し、
前記プロセッサは、前記第２のオペランドの値に基づいて、前記メモリのデータにビットシフトを実行し、これにより、前記メモリのデータのビット位置は、前記第１のオペランドが示す前記レジスタにおけるデータの処理対象のビット位置にシフトされ、前記プロセッサは、さらに、前記第１のオペランドの値及び前記シフトされたメモリのデータを用いて、前記レジスタにおけるデータに処理を実行する、遊技機用プロセッサ。
【請求項３】
ビット長を示す少なくとも一つのオペランドを有し、メモリの１データ幅のデータにおける第１ビットから前記ビット長のデータを所定のレジスタにロードするオペコードを有する遊技機用プロセッサ。
【請求項４】
請求項１ないし３のいずれか一つに記載の遊技機用プロセッサを用いた回路。
【請求項５】
請求項１ないし３のいずれか一つに記載の遊技機用プロセッサ又は請求項４に記載の回路を用いた基板。
【請求項６】
請求項１ないし３のいずれか一つに記載の遊技機用プロセッサ、請求項４に記載の回路又は請求項５に記載の基板を用いた遊技機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリにおけるデータをビット単位で読み出して命令を実行するプロセッサに関する。
【背景技術】
【０００２】
パチンコ、回胴式遊技機とも称されるパチスロなどの遊技機では、規則などによって、ＲＡＭ及びＲＯＭの使用領域や、使用可能なコンピュータプログラムの容量が制限されている。したがって、ＲＡＭ及びＲＯＭの使用領域を削減することによって、より効率的にハードウエア資源を利用することができる。さらに、コンピュータプログラムの容量を削減することによって、遊技機メーカは、削減した容量を遊技機の演出などに関連するコンピュータプログラムに割り当てることができ、遊技機の演出などをさらに向上させることができる。
【０００３】
さらに、遊技機で用いることができるプロセッサのバス幅は、８ビットが採用されており、遊技機のプロセッサは、８ビットプロセッサによって実現されている。したがって、１バイトが１データとして扱われている。ここで、従前の遊技機のプロセッサは、１バイト中２ビットしか使用していないとしても、１バイトのデータとして扱われていた。したがって、残りの６ビットのデータは、メモリ内部で未使用の領域であった。そこで、遊技機のプロセッサにおいて、データ領域が不足していることから、メモリ内部の未使用の領域が有効活用されてきた。例えば、１アドレスに対応する１バイトのデータを１データとして用いるのではなく、１バイトのデータを２以上のデータとして用いていた。理由は後述するが、８ビットプロセッサが１バイトのデータを２以上のデータとして用いると、多くのプログラムコードが必要となる。したがって、メモリ内部の未使用の領域を有効活用することができる遊技機のプロセッサにおいて、ユーザが準備しなければならないプログラムコードの削減及びプログラムコードの容量の削減が長い間望まれてきた。
【０００４】
本発明の実施例によると、メモリの１バイトのデータをビット単位で読み出すことによって、１アドレスに複数のデータを持たせ、データを圧縮することができることから、データ領域の不足を解消することができる。さらに、本発明の実施例によると、圧縮されたデータの部分的な（例えば、ビット単位の）読出し命令を用いることによりプログラムの実行ステップを削減することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来、遊技機のプロセッサにおいて、メモリにおける１バイトデータが１データとして扱われており、１バイト中７ビット以下しか使用していないとしても、１バイトのデータとして扱われていた。本発明の実施例は、メモリの１バイトのデータをビット単位で読み出すことによって、１アドレスに複数のデータを持たせることができることから、データ領域の不足を解消することができる。また、ビット単位でデータを読み出すことができる命令を追加することによって、演算処理のステップ及びユーザが準備する必要があるプログラムの容量を削減することができる。
【課題を解決するための手段】
【０００６】
本発明の実施例において、遊技機用プロセッサは、メモリの１データ幅のデータから一部のデータを１以上のビットを単位として取り出し、取り出したデータを一又は二以上のレジスタに設定する１つのオペコードを有する。
【０００７】
本発明の実施例において、第１のオペランド及び第２のオペランドを少なくとも有する一つのオペコードを実行する遊技機用プロセッサは、第１のオペランドは、処理が行われるレジスタにおけるデータの処理対象のビット位置を示す値を少なくとも有し、第２のオペランドは、メモリにおける処理に用いられるデータのビット位置とレジスタの処理対象のビット位置との関係を示すビットシフト方向及びビットシフト段数の値を少なくとも有し、プロセッサは、第２のオペランドの値に基づいて、メモリのデータにビットシフトを実行し、これにより、メモリのデータのビット位置は、第１のオペランドが示すレジスタにおけるデータの処理対象のビット位置にシフトされ、プロセッサは、さらに、第１のオペランドの値及びシフトされたメモリのデータを用いて、レジスタにおけるデータに処理を実行することができる。
【０００８】
本発明の実施例による遊技機用プロセッサを用いた回路。
【０００９】
本発明の実施例による遊技機用プロセッサ又は回路を用いた基板。
【００１０】
本発明の実施例による遊技機用プロセッサ、回路又は基板を用いた遊技機。
【００１１】
メモリのデータをビット単位で読み出し可能な１つのオペコードを用いて複数のデータを読み出す。
【図面の簡単な説明】
【００１２】
【図１】ワンチップで実現されるプロセッサ１００の一部を示す。
【図２】プロセッサコア１０５の構成を示す。
【図３ａ】従来のプロセッサが処理する１バイトのデータの例を示す。
【図３ｂ】本発明の実施例によるプロセッサが処理する１バイトのデータの例を示す。
【図４】プロセッサがメモリ（アドレス１０００ｈ）のデータ「１１１００１００」（Ｅ４ｈ）の第５〜８ビットの値をＡレジスタの第１〜４ビットにオーバーライトを行う例を示す。
【図５】オペコードＬＤＷＡの処理例を示す。
【図６】プロセッサがメモリ（アドレス１００１ｈ）のデータ「１１１０１１００」（ＥＣｈ）の第４〜６ビットの値とＡレジスタの第２〜４ビットの値とを論理積（ＡＮＤ）演算する例を示す。
【図７】オペコードＬＤＡＡの処理例を示す。
【図８】プロセッサがメモリ（アドレス１００１ｈ）のデータ「１１１０１１００」（ＥＣｈ）の第４〜６ビットの値とＡレジスタの第２〜４ビットの値とを論理和（ＯＲ）演算する例を示す。
【図９】オペコードＬＤＯＡの処理例を示す。
【図１０ａ】従来技術によるメモリの値をレジスタにオーバーライトするときのタイミングチャートを示す。
【図１０ｂ】従来技術によるメモリの値をレジスタにオーバーライトするときのタイミングチャートを示す。
【図１０ｃ】従来技術によるメモリの値をレジスタにオーバーライトするときのタイミングチャートを示す。
【図１０ｄ】従来技術によるメモリの値をレジスタにオーバーライトするときのタイミングチャートを示す。
【図１１ａ】本発明の実施例によるメモリの値をレジスタにオーバーライトするときのタイミングチャートを示す。
【図１１ｂ】本発明の実施例によるメモリの値をレジスタにオーバーライトするときのタイミングチャートを示す。
【図１１ｃ】本発明の実施例によるメモリの値をレジスタにオーバーライトするときのタイミングチャートを示す。
【図１２】本発明による実施例で示したオペコードを実行するフローを示す。
【図１３】従来技術によるメモリの値を複数のレジスタにロードする例を示す。
【図１４ａ】オペコードＬＤＲＰ２，３，３の例を示す。
【図１４ｂ】オペコードＬＤＲＰ４，２，２の例を示す。
【図１５ａ】オペコードＬＤＲＰの処理例を示す。
【図１５ｂ】オペコードＬＤＲＰの処理例を示す。
【図１５ｃ】オペコードＬＤＲＰの処理例を示す。
【発明を実施するための形態】
【００１３】
図１は、ワンチップで実現されるプロセッサ１００の一部を示す。プロセッサ１００は、プロセッサコア１０５、デコーダ１１０、ＲＯＭ１１５、ＲＡＭ１２０及びＭＩＳＣ１２５を有する。プロセッサコア１０５は、クロック信号を受けるクロック信号ポート１３５、リセット信号を受けるリセット信号ポート１３７及び外部割込信号を受ける割込信号ポート１３９を有する。プロセッサコア１０５は、制御対象の回路（本実施例では、ＲＯＭ１１５、ＲＡＭ１２０、ＭＩＳＣ１２５）を指定するアドレス情報に関する信号をアドレス信号ポート１４１からバス１３０を介してデコード１１０のアドレス信号ポート１４７に送信する。プロセッサコア１０５は、データポート１４３を用いてＲＯＭ１１５、ＲＡＭ１２０、ＭＩＳＣ１２５との間でバス１３０を介してデータに関する信号を送受信する。
【００１４】
プロセッサコア１０５は、制御対象の回路を制御するための制御信号を制御信号ポート１４５を用いてバス１３０を介してＲＯＭ１１５、ＲＡＭ１２０、ＭＩＳＣ１２５に送信する。制御信号の例としては、リード信号、ライト信号などがある。デコーダ１１０は、プロセッサコア１０５からアドレス情報に関する信号を受け、アドレス情報に基づいて、制御対象の回路にチップセレクト信号をバス１３０を介して送信する。ここで、ＲＯＭ１１５が選択される場合、チップセレクト信号は、ＲＯＭ用チップセレクトポート１４９を介してＲＯＭ１１５のチップセレクトポート１５９に送信され、ＲＡＭ１２０が選択される場合、チップセレクト信号は、ＲＡＭ用チップセレクトポート１５１を介してＲＡＭ１２０のチップセレクトポート１６５に送信され、ＭＩＳＣ１２５が選択される場合、チップセレクト信号は、ＭＩＳＣ用チップセレクトポート１５３を介してＭＩＳＣ１２５のチップセレクトポート１７１に送信される。ＭＩＳＣ１２５は、外部Ｉ／Ｆを介して外部装置（図示せず）との間でデータ及び／又は命令等を送受信する。
【００１５】
本実施例では、プロセッサ１００がワンチップで実現される実施例が示された。当業者であれば理解可能なように、プロセッサ１００はワンチップで実現されていなくてもよい。この場合、デコーダ１１０、ＲＯＭ１１５、ＲＡＭ１２０及びＭＩＳＣ１２５の少なくとも一つは、プロセッサ１００の外部で実現される。図１に示したプロセッサ１００の構成は、一例であり、当業者であれば理解されるように、プロセッサ１００は、他の構成を含んでもよいし、図１に示されている構成の一部を有していなくてもよい、及び／又は、他の代替の手段によって実現されていてもよい。
【００１６】
図２は、プロセッサコア１０５の構成を示す。プロセッサコア１０５は、ＡＬＵ２０５、命令デコーダ２１０、シーケンサ２１５及び汎用レジスタ２２０を有する。汎用レジスタ２２０は、Ａレジスタ２２２、Ｆレジスタ２２４、Ｂレジスタ２２６、Ｃレジスタ２２８、Ｄレジスタ２３０、Ｅレジスタ２３２、Ｈレジスタ２３４、Ｌレジスタ２３６、ＩＸレジスタ２３８、ＩＹレジスタ２４０、テンポラリレジスタ２４２を含む。ＡＬＵ２０５は、加減算ブロック２４６、論理演算ブロック２４８、シフトブロック２５０、第１のマルチプレクサ２５２、第２のマルチプレクサ２５４を有する。図２に示したプロセッサコア１０５の構成は、一例であり、当業者であれば理解されるように、プロセッサコア１０５は、他の構成を含んでもよいし、図２に示されている構成の一部を有していなくてもよい、及び／又は、他の代替の手段によって実現されていてもよい。
【００１７】
命令デコーダ２１０は、メモリ（図１におけるＲＯＭ１１５、ＲＡＭ１２０に相当）から命令を得て、命令をＡＬＵが実行可能な形式にデコードする。シーケンサ２１５は、デコードされた命令の処理順序を決定する。ＡＬＵ２０５は、メモリ１１５、１２０または汎用レジスタ２２０からＡＬＵ２０５に供給されたデータを、決定された処理順序で該当する命令に基づいて処理する。ＡＬＵ２０５は、命令に基づく処理結果を汎用レジスタ２２０の少なくとも一つに設定することができる。
【００１８】
従来技術
図３ａは、１バイトを１つのデータとして用いる従来のプロセッサが処理する１バイトのデータの例を示す。プロセッサ１００が扱うデータサイズが８ビット幅であることを前提として、以下に従来技術を説明する。図３ａに示すように、メモリ１１５又は１２０において、第１ビットから第４ビットに「０１１０」の値が設定され、第５ビットから第８ビットに「００００」の値が設定されており、実際に命令で用いられるデータは、第１ビットから第４ビットのデータであると仮定する。この場合、従来技術において、実際には、第１ビットから第４ビットしか用いられないにも関わらず、第５ビットから第８ビットにも一切用いられない値が設定されていた。したがって、従来技術では、メモリ空間を有効に用いることができていなかった。すなわち、第５ビットから第８ビットに処理で用いられる値が設定することができれば、メモリ空間を有効活用することができる。
【００１９】
図３ｂは、１バイトを２以上のデータとして用いる従来のプロセッサが処理する１バイトのデータの例を示す。ここで、図３ｂに示すように、従来技術おいて、メモリの第１ビットから第４ビットの「０１１０」をＡレジスタ２２２の第１ビットから第４ビットにロードし、メモリの第５ビットから第８ビットの「１１１０」をＢレジスタ２２６の第１ビットから第４ビットにロードするように処理されていた。これにより、用いられるメモリのデータの量がデータ幅８ビットとなり、メモリ空間を有効に活用することができる。この場合、従来技術を用いてデータをロードするときに以下のような処理が必要となる。
【００２０】
メモリアドレス１０００ｈに格納されたデータ１バイトの第５ビットから第８ビットをＢレジスタの第１ビットから第４ビットにセットし、メモリに格納されたデータの第１ビットから第４ビットをＡレジスタの第１ビットから第４ビットにセットするプログラムの例を示す。Ｚ８０のプロセッサでは論理演算（ＡＮＤ、ＯＲ）がＡレジスタでしかできないためすべての論理演算はＡレジスタを介さなければいけなく、Ａレジスタで演算を行う場合はＡレジスタを空ける必要があるため、データを他のレジスタなどに一旦退避させ、退避したデータを他のレジスタからＡレジスタに値を戻すなどといったプログラムステップが必要になる。したがって、従来技術において、１連の動作（１バイトのデータを２以上のデータとして用いている）を実現する場合、以下のようなステップが必要となることから、プログラムステップが長くなっていた。
０１：ＬＤ  Ａ，０Ｃ０Ｈ    ；Ａレジスタの初期値セット
０２：ＬＤ  Ｂ，０３０Ｈ    ；Ｂレジスタの初期値セット
０３：ＬＤ  ＨＬ，１０００ｈ；間接アドレスレジスタＨＬにメモリアドレスの１０００Ｈの値「１１１００１１０」をセットする。
０４：ＡＮＤ  ０Ｆ０ｈ      ；Ａレジスタの第１ビットから第４ビットに０をセットする（Ａレジスタの第１ビットから第４ビットの値をクリアする）。
０５：ＬＤ  Ｃ，Ａ          ；Ａレジスタの値「１１００００００」をＣレジスタに移動する（Ａレジスタの値をＣレジスタに退避する）。
０６：ＬＤ  Ｄ，（ＨＬ）    ；Ｄレジスタにメモリアドレス１０００ｈの値「１１１００１１０」をロードする。
０７：ＬＤ    Ａ，Ｄ        ；Ａレジスタにメモリアドレス１０００ｈの値「１１１００１１０」をロードする。
０８：ＡＮＤ  ０Ｆｈ        ；メモリデータの第１ビットから第４ビットを取出す。Ａレジスタには、値「０００００１１０」が設定される（メモリアドレス１０００ｈの値における第５ビットから第８ビットの値をクリアする）。
０９：ＯＲ  Ｃ              ；Ｃレジスタの値「１１００００００」とＡレジスタの値「０００００１１０」とを論理和（ＯＲ）演算する。これにより、Ａレジスタには、値「１１０００１１０」が設定される。これにより、最終的にＡレジスタに格納すべき値、すなわち、図３ｂにおける「Ａレジスタのデータ」に示される値が得られる。
１０：ＬＤ  Ｃ，Ａ          ；ステップ０７で得た値「１１０００１１０」（第１ビットから第４ビットとしてメモリデータの第１ビットから第４ビットの当初の値「０１１０」と第５ビットから第８ビットとしてＡレジスタの第５ビットから第８ビットの当初の値「１１００」とからなる値）をＣレジスタへ移動する。これにより、最終的にＡレジスタに設定すべき値がＣレジスタに退避される。
１１：ＬＤ  Ａ，Ｂ          ；ＡレジスタへＢレジスタの値「００１１ＸＸＸＸ」をセットする。
１２：ＡＮＤ  Ａ，０Ｆ０ｈ  ；Ａレジスタの第５ビットから第８ビット（Ｂレジスタの第５ビットから第８ビットの当初の値）を取出す（Ｂレジスタの第１ビットから第４ビットの値をクリアする）。値「００１１００００」がＡレジスタに設定される。
１３：ＬＤ  Ｂ，Ｄ          ；Ｂレジスタへメモリアドレスの１０００Ｈの値「１１１００１１０」を移動する。
１４〜１７：ＳＲＬ  Ｂ  ＊４  ；Ｂレジスタを４回右へシフトする。これにより、値「００００１１１０」がＢレジスタに設定される。なお、１ビットシフトに１ステップが必要となるため、プログラムコードのステップ数は、シフトのために４ステップが必要となる。
１８：ＯＲ  Ｂ              ；Ｂレジスタ値「００００１１１０」とＡレジスタの値「００１１００００」とを論理和（ＯＲ）演算する。これにより、Ａレジスタには、値「００１１１１１０」が設定される。これにより、最終的にＢレジスタに格納すべき値、すなわち、図３ｂにおける「Ｂレジスタのデータ」に示される値が得られる。
１９：ＬＤ  Ｂ，Ａ          ；ステップ１６で得た値「００１１１１１０」（第１ビットから第４ビットとしてメモリデータの第５ビットから第８ビットの当初の値「１１１０」と第５ビットから第８ビットとしてＢレジスタの第５ビットから第８ビットの当初の値「００１１」とからなる値）をＢレジスタへ設定する。
２０：ＬＤ  Ａ，Ｃ          ；ステップ０８でＣレジスタに退避された値「１１０００１１０」（第１ビットから第４ビットとしてメモリデータの第１ビットから第４ビットの当初の値「０１１０」と第５ビットから第８ビットとしてＡレジスタの第５ビットから第８ビットの当初の値「１１００」とからなる値）をＡレジスタへ設定する。
【００２１】
上記のステップ１から２０によって、図３ｂで示されるＡ及びＢレジスタのデータがそれぞれ、Ａ及びＢレジスタに設定される。本説明から理解されるように、ステップ１から２０からなる１連の動作の実行には、多くのステップが必要となる。これらのステップを１命令（複数バイトで構成される命令）で実行できればプログラム領域の有効活用ができる。
【００２２】
上記の通り、従来の技術でも、メモリの１つのデータ幅のデータに基づいて複数のロード処理（上記例では、１つのデータ幅に保存されているメモリのデータを２つのレジスタに設定する処理）を実行することができた。しかしながら、処理ステップが多くなり、プログラムの量が増加してしまうといった問題があった。
【００２３】
実施例
本発明の実施例では、少なくとも３つのオペランドを用いてロードなどの処理を、メモリの所定のビットをレジスタに実行するオペコードを用いる。第１のオペランドは、処理が行われるＡレジスタにおける処理対象のビット位置を指定し、第２のオペランドは、命令で間接アドレスとして用いる汎用ペアレジスタのアドレスの情報を指定する。第２のオペランドで示される汎用レジスタペアの示すメモリアドレスに格納されたデータがメモリにおける処理対象のデータとなる。第３のオペランドは、メモリデータにおける処理対象データのビット位置とＡレジスタにおける処理対象データのビット位置との関係を表す情報を指定する。第３のオペランドは、例えば、メモリデータにおける処理対象データのビット位置をＡレジスタにおける処理対象データのビット位置に一致させるビットシフトに関するシフト方向及びシフト段数を指定する。他の実施例として、第３のオペランドは、メモリデータにおける処理対象データとＡレジスタにおける処理対象データとの関係が示すことができれば、他の方法によって表されても良い。
【００２４】
メモリの値をレジスタにオーバーライトする例
図４は、プロセッサ１００がメモリ１１５、１２０（アドレス１０００ｈ）のデータ「１１１００１００」（Ｅ４ｈ）の第５〜８ビットの値をＡレジスタ２２２の第１〜４ビットにオーバーライトを行う例を示す。
【００２５】
従来技術では、以下のようなステップが必要であった。
０１：Ａレジスタ２２２に値「０１０１１００１」（５９ｈ）を既存データとしてロードする（例：ＬＤ  Ａ，５９ｈ）。本実施例では既存データを明確にするために本ステップで直値をセットしたが、実際にはプログラムの流れの中で設定された値でも良い。
０２：処理対象データ（値：Ｅ４ｈ）の格納アドレス１０００ｈを汎用レジスタ（ＨＬレジスタ２３４、２３６）にロードする（例：ＬＤ  ＨＬ，１０００ｈ）
０３：ＨＬレジスタのデータをＢレジスタ２２６にロードする（例：ＬＤ  Ｂ，（ＨＬ））
０４〜０７：Ｂレジスタ２２６の右方向への１ビットシフトを４回行う。（例：ＳＲＬ  Ｂのステップを４回行う）
０８：Ａレジスタ２２２の第１から４ビットをクリアする、例えば、Ａレジスタ２２２の値と値Ｆ０ｈとを論理積（ＡＮＤ）演算する（例：ＡＮＤ  Ｆ０ｈ）
０９：Ｂレジスタ２２６の値「００００１１１０」（０Ｅｈ）とＡレジスタ２２２の値「０１０１１００１」（５９ｈ）とを論理和演算する（例：ＯＲ  Ｂ）。これにより、Ａレジスタの値「０１０１１１１０」（５Ｅｈ）を得る。
【００２６】
本発明の実施例では、図５で示すように、メモリの所定のビットの値をレジスタの所定のビットの値にオーバーライトするオペコードを用いることによって、以下のステップで従来技術と同様の処理を行うことができる。ここで、メモリの所定のビットをレジスタにオーバーライトするオペコードは、ＬＤＷＡと仮定する。
【００２７】
第１のオペランドについては、Ａレジスタにおけるオーバーライトされる対象のビット位置（第１〜４ビット）を指定する場合、オーバーライトされる対象のビットである第１〜４ビットを「１」にする。すなわち、第１のオペランドは、０Ｆｈ（「００００１１１１」）となる。
【００２８】
第２のオペランドは、メモリのデータを格納しているアドレスの情報が設定される。本実施例ではＨＬレジスタが使用されているが、ＢＣ、ＤＥ、ＩＸ，ＩＹレジスタでも良い。
【００２９】
第３のオペランドについては、メモリデータの値「１１１００１００」（Ｅ４ｈ）の第５〜８ビットをＡレジスタの第１〜４ビットに対応するようにシフトさせる場合、シフト方向は右で、シフト段数は４となる。第３のオペランドにおいて、第８ビットがシフト方向を示し（左方向であれば１、右方向であれば０）、第１〜３ビットを用いてシフト段数を示す。すなわち、シフト方向は右で、シフト段数は４であるから、第３のオペランドは、「０００００１００」（０４ｈ）となる。
【００３０】
本発明の実施例では、以下のステップで処理が実行される。
０１：Ａレジスタ２２２に値「０１０１１００１」（５９ｈ）を既存データとしてロードする（例：ＬＤ  Ａ，５９ｈ）本実施例では既存データを明確にするために本ステップで直値をセットしたが、実際にはプログラムの流れの中で設定された値でも良い。
０２：メモリにおける処理対象データ（値：Ｅ４ｈ）の格納アドレス１０００ｈを汎用レジスタ（ＨＬレジスタ２３４、２３６）にロードする（例：ＬＤ  ＨＬ，１０００ｈ）
０３：メモリの所定のビットの値をレジスタにオーバーライトするオペコードを用いて、命令を実行する（例：ＬＤＷＡ  ０Ｆｈ，（ＨＬ）、０４ｈ）
これにより、従来技術では実装する必要がある上記ステップ３〜９を本発明の実施例によるステップ３のみで実現することによって、従来技術において必要であったプログラムソースコードのステップを削減することができることから、プログラムソースコードの容量を削減することができる。また、メモリデータの値「１１１００１００」（Ｅ４ｈ）の第１〜４ビットの値「０１００」を他の処理で用いることによって、メモリスペースを有効活用することもできる。
【００３１】
図５は、オペコードＬＤＷＡの処理例を示す。始めに、ＬＤＷＡの命令をフェッチするとともに、デコードを行う。フェッチした命令（ＬＤＷＡ  ０Ｆｈ，（ＨＬ），０４ｈ）に基づいて、第１のオペランドの値「００００１１１１」（０Ｆｈ）を論理演算ブロック２４８（ブロック００１）において反転させる（ステップ５０５）。これにより、値「１１１１００００」（Ｆ０ｈ）を得る。第２のオペランドが示すアドレスのメモリにおける処理対象データをシフトブロック２５０（ブロック００２）にロードする（ステップ５１０）。第３のオペランドの値「０００００１００」（０４ｈ）（第３のオペランドの第８ビット「０」は、シフト方向が右であることを表し、第３のオペランドの第１〜４ビットの値「０１００」で表される１０進数で「４」は、シフト段数が４であることを表す）に基づいて、メモリにおける処理対象データ値「１１１００１００」（Ｅ４ｈ）を右方向に４ビット分シフトブロック２５０（ブロック００２）においてシフトさせる（ステップ５１５）。これにより、オーバーライトする第１〜４ビットの値「００００１１１０」（０Ｅｈ）を得る。
【００３２】
ステップ５０５で得た反転データの値「１１１１００００」（Ｆ０ｈ）とＡレジスタ２２２の値「０１０１１００１」（５９ｈ）との論理積（ＡＮＤ）演算を論理演算ブロック２４８（ブロック００３）において行う（ステップ５２０）。これにより、オーバーライトを行う第１〜４ビットを除いた第５〜８ビットの値「０１０１００００」（５０ｈ）を得る。ステップ５２０で得た第５〜８ビットの値「０１０１００００」（５０ｈ）とステップ５１５で得た第１〜４ビットの値「００００１１１０」（０Ｅｈ）との論理和（ＯＲ）演算を論理演算ブロック２４８（ブロック００４）において行う（ステップ５２５）。これにより、値「０１０１１１１０」（５Ｅｈ）を得て、この値をＡレジスタ２２２に格納する（ステップ５３０）。
【００３３】
他の実施例において、第１のオペランドの値を「００００００１１」（０３ｈ）とするとステップ５１５において、メモリにおける処理対象データ「１１１００１００」（Ｅ４ｈ）を右に４回シフトして得た「００００１１１０」（０Ｅｈ）とＡレジスタ２２２の第１及び２ビットにオーバーライトすることを示す「００００００１１」（０３ｈ）との論理積（「００００００１０」（０２ｈ））を取得し、その後、ステップ５２５でその値「００００００１０」（０２ｈ）とステップ５２０で得た値「０１０１１０００」（５８ｈ）との論理和を取得してもよい。例えば、メモリの第１及び２ビットの値のみをＡレジスタ２２２の第１及び２ビットにオーバーライトする処理（第３及び４ビットはＡレジスタにロードしない）において、値「０１０１１０１０」（５Ａｈ）をＡレジスタ２２２にオーバーライトすることができる。すなわち、オーバーライトするメモリのデータが４ビット以外のビット数であっても処理を行うことができる。
【００３４】
メモリの値とレジスタの値とを論理積（ＡＮＤ）演算する例
図６は、プロセッサ１００がメモリ１１５、１２０（アドレス１００１ｈ）のデータ「１１１０１１００」（ＥＣｈ）の第４〜６ビットの値とＡレジスタ２２２の第２〜４ビットの値とを論理積（ＡＮＤ）演算する例を示す。
【００３５】
従来技術では、以下のようなステップが必要であった。
０１：オーバーライトの実施例と同様に、Ａレジスタ２２２に既存値「０１０１１１０１」（５Ｄｈ）をロードする（例：ＬＤ  Ａ，５Ｄｈ）。
０２：メモリにおける処理対象データ（値：ＥＣｈ）の格納アドレス１００１ｈを汎用レジスタ（ＨＬレジスタ２３４、２３６）にロードする（例：ＬＤ  ＨＬ，１００１ｈ）。
０３：ＨＬレジスタのデータをＢレジスタ２２６にロードする（例：ＬＤ  Ｂ，（ＨＬ））。
０４〜０５：Ｂレジスタ２２６の右方向への１ビットシフトを２回行う（例：ＳＲＬ  Ｂのステップを２回）。これにより、Ｂレジスタ２２６は、値「００１１１０１１」（３Ｂｈ）となる。
０６：メモリの値とＡレジスタ２２２の値との論理積演算を行う対象でないビット、すなわち、Ｂレジスタ２２６の第１ビット、第５〜８ビットの値を１にする。例えば、Ｂレジスタ２２６の値「００１１１０１１」（３Ｂｈ）と「１１１１０００１」（Ｆ１ｈ）との論理和を得る（例：ＯＲ  ０Ｆ１ｈ）。これにより、Ｂレジスタ２２６の値は、「１１１１１０１１」（０ＦＢｈ）となる。
ここで、従来技術で用いられているＡレジスタしか論理演算に使えないプロセッサ（例えば、Ｚ８０プロセッサ）において、以下の処理が必要となる。（１）現状のＡレジスタの値を一旦Ｃレジスタに移動し（退避し）、（２）ＡレジスタにＢレジスタの値を移動し、（３）Ａレジスタを用いて「ＯＲ  Ｆ１ｈ」の演算を行い、（４）結果のＡレジスタの値をＢレジスタに格納し、（５）退避したＣレジスタの値をＡレジスタに戻すといった５ステップの処理が必要となる。
０７：Ｂレジスタ２２６の値「１１１１１０１１」（ＦＢｈ）とＡレジスタ２２２の値「０１０１１１０１」（５Ｄｈ）とを論理積演算する（例：ＡＮＤ  Ｂ）。これにより、Ａレジスタの値「０１０１１００１」（５９ｈ）を得る。
【００３６】
本発明の実施例では、図７において示すように、メモリの所定のビットの値とレジスタの所定のビットの値とに論理積演算を行うオペコードを用いることによって、以下のステップで従来技術と同様の処理を実行することができる。ここで、メモリの所定のビットの値とレジスタの所定のビットの値とに論理積演算を実行するオペコードは、ＬＤＡＡと仮定する。
【００３７】
本実施例におけるオペランドは、「メモリの値をレジスタにオーバーライトする例」のオペランドと同様とすることができる。本実施例においても、第１〜３オペランドを用いることができる。第１のオペランドについては、ロードが行われるＡレジスタにおける処理対象のビット位置（第２〜４ビット）を指定する場合、ロード対象のビットである第２〜４ビットを「１」にする。すなわち、第１のオペランドは、０Ｅｈ（「００００１１１０」）となる。
【００３８】
第２のオペランドは、メモリのデータが格納されているアドレスが格納されるレジスタペアの情報が設定される。本実施例ではＨＬレジスタが使用されているがＢＣ，ＤＥ，ＩＸ，ＩＹレジスタでも良い。
【００３９】
第３のオペランドについては、メモリデータの値「１１１０１１００」（ＥＣｈ）の第４〜６ビットをＡレジスタの第２〜４ビットに対応するようにシフトさせる場合、シフト方向は右で、シフト段数は２となる。したがって、第３のオペランドは、「００００００１０」（０２ｈ）となる。
【００４０】
本発明の実施例では、以下のステップで処理が実行される。
０１：オーバーライトの実施例と同様に、Ａレジスタ２２２に値「０１０１１１０１」（５Ｄｈ）をロードする（例：ＬＤ  Ａ，５Ｄｈ）。
０２：メモリにおける処理対象データ（値：ＥＣｈ）の格納アドレス１００１ｈを汎用レジスタ（ＨＬレジスタ２３４、２３６）にロードする（例：ＬＤ  ＨＬ，１００１ｈ）。
０３：メモリの所定のビットの値とレジスタの値とに論理積演算を実行するオペコードを用いて、命令を実行する（例：ＬＤＡＡ  ０Ｅｈ，（ＨＬ），０２ｈ）。
これにより、従来技術では実装する必要がある上記ステップ３〜６を本発明の実施例によるステップ３のみで実現することができる。したがって、「メモリの値をレジスタにオーバーライトする例」の実施例と同様に、メモリスペースを有効活用することができ、プログラム量を削減することができる。
【００４１】
図７は、オペコードＬＤＡＡの処理例を示す。始めに、ＬＤＡＡの命令をフェッチするとともに、デコードを行う。フェッチした命令（ＬＤＡＡ  ０Ｅｈ，（ＨＬ），０２ｈ）に基づいて、第１のオペランドの値「００００１１１０」（０Ｅｈ）を論理演算ブロック２４８（ブロック００１）において反転させる（ステップ７０５）。これにより、値「１１１１０００１」（Ｆ１ｈ）を得る。
第２のオペランドが示すレジスタペアで示されるアドレスのメモリにおける処理対象データをシフトブロック２５０（ブロック００２）にロードする（ステップ７１０）。第３のオペランドの値「００００００１０」（０２ｈ）（第３のオペランドの第８ビット「０」は、シフト方向が右であることを表し、第３のオペランドの第１〜４ビットの値である１０進数で「２」は、シフト段数を表す）に基づいて、値「１１１０１１００」（ＥＣｈ）を右方向に２ビット分シフトブロック２５０（ブロック００２）においてシフトさせる（ステップ７１５）。これにより、値「００１１１０１１」（３Ｂｈ）を得る。
【００４２】
ステップ７０５で得た反転データの値「１１１１０００１」（Ｆ１ｈ）とメモリデータの値を右方向に２ビットシフトさせた値「００１１１０１１」（３Ｂｈ）とに論理和（ＯＲ）演算を論理演算ブロック２４８（ブロック００３）において行う（ステップ７２０）。これにより、論理積の演算対象以外のビット（第５〜８ビットと第１ビット）を有効にした値「１１１１１０１１」（ＦＢｈ）を得る。ステップ７２０で得た値「１１１１１０１１」（ＦＢｈ）とＡレジスタの値「０１０１１１０１」（５Ｄｈ）との論理和（ＡＮＤ）演算を論理演算ブロック２４８（ブロック００４）において行う（ステップ７２５）。これにより、値「０１０１１００１」（５９ｈ）を得て、この値をＡレジスタに格納する（ステップ７３０）。
【００４３】
メモリの値とレジスタの値とを論理和（ＯＲ）演算する例
図８は、プロセッサ１００がメモリ１１５、１２０（アドレス１００１ｈ）のデータ「１１１０１１００」（ＥＣｈ）の第４〜６ビットの値とＡレジスタの第２〜４ビットの値とを論理和（ＯＲ）演算する例を示す。
【００４４】
従来技術では、以下のようなステップが必要であった。
０１：オーバーライトの実施例と同様に、Ａレジスタ２２２に既存値「０１０１１１０１」（５Ｄｈ）をロードする（例：ＬＤ  Ａ，５Ｄｈ）
０２：メモリにおける処理対象データ（値：ＥＣｈ）の格納アドレス１００１ｈを汎用レジスタ（ＨＬレジスタ２３４、２３６）にロードする（例：ＬＤ  ＨＬ，１００１ｈ）
０３：ＨＬレジスタ２３４、２３６の示すアドレスに格納されたメモリにおける処理対象データをＢレジスタ２２６にロードする（例：ＬＤ  Ｂ，（ＨＬ））
０４〜０５：Ｂレジスタ２２６の右方向への１ビットシフトを２回行う（例：ＳＲＬ  Ｂのステップを２回実行する）。これにより、Ｂレジスタ２２６は、値「００１１１０１１」（３Ｂｈ）となる。
０６：メモリの値とＡレジスタ２２２の値との論理積演算を行う対象でないビット、すなわち、Ｂレジスタ２２６の第１ビット、第５〜８ビットの値を０にする。例えば、Ｂレジスタ２２６の値「００１１１０１１」（３Ｂｈ）と「００００１１１０」（０Ｅｈ）との論理積を得る（例：ＡＮＤ  ０Ｅｈ）。これにより、Ｂレジスタの値は、「００００１０１０」（０Ａｈ）となる。
ここで、従来技術で用いられているＡレジスタしか論理演算に使えないプロセッサ（例えば、Ｚ８０プロセッサ）において、以下の処理が必要となる。（１）現状のＡレジスタの値を一旦Ｃレジスタに移動し（退避し）、（２）ＡレジスタにＢレジスタの値を移動し、（３）Ａレジスタを用いて「ＡＮＤ  ０Ｅｈ」の演算を行い、（４）結果のＡレジスタの値をＢレジスタに格納し、（５）退避したＣレジスタの値をＡレジスタに戻すといった５ステップの処理が必要となる。
０７：Ｂレジスタの値「００００１０１０」（０Ａｈ）とＡレジスタの値「０１０１１１０１」（５Ｄｈ）とを論理和演算する（例：ＯＲ  Ｂ）。これにより、Ａレジスタの値「０１０１１１１１」（５Ｆｈ）を得る。
【００４５】
本発明の実施例では、メモリの所定のビットの値とレジスタの所定のビットの値とに論理和演算を実行するオペコードを用いることによって、以下のステップで従来技術と同様の処理を行うことができる。ここで、メモリの所定のビットの値とレジスタの所定のビットの値とに論理和するオペコードは、ＬＤＯＡと仮定する。
【００４６】
本実施例におけるオペランドは、「メモリの値をレジスタにオーバーライトする例」のオペランドと同様とすることができる。本実施例においても、第１〜３オペランドを用いることができる。第１のオペランドについては、ロードが行われるＡレジスタにおける処理対象のビット位置（第２〜４ビット）を指定する場合、ロード対象のビットである第２〜４ビットを「１」にする。すなわち、第１のオペランドは、０Ｅｈ（「００００１１１０」）となる。
【００４７】
第２のオペランドは、メモリのデータを格納しているアドレスの情報が設定される。本実施例ではＨＬレジスタが使用されているが、ＢＣ、ＤＥ、ＩＸ，ＩＹレジスタでも良い。
【００４８】
第３のオペランドについては、メモリデータの値「１１１０１１００」（ＥＣｈ）の第４〜６ビットをＡレジスタの第２〜４ビットに対応するようにシフトさせる場合、シフト方向は右で、シフト段数は２となる。したがって、第３のオペランドは、「００００００１０」（０４ｈ）となる。
【００４９】
本発明の実施例では、以下のステップで処理が実行される。
０１：オーバーライトの実施例と同様に、Ａレジスタに値「０１０１１１０１」（５Ｄｈ）をロードする（例：ＬＤ  Ａ，５Ｄｈ）
０２：メモリにおける処理対象データ（値：ＥＣｈ）の格納アドレス１００１ｈを汎用レジスタ（ＨＬレジスタ）にロードする（例：ＬＤ  ＨＬ，１００１ｈ）
０３：メモリの所定のビットの値とレジスタの値とに論理和演算を実行するオペコードを用いて、命令を実行する（例：ＬＤＯＡ  ０Ｅｈ，（ＨＬ），０２ｈ）
これにより、従来技術では実装する必要がある上記ステップ３〜７を本発明の実施例によるステップ３のみで実現することができる。したがって、「メモリの値をレジスタにオーバーライトする例」の実施例と同様に、メモリスペースを有効活用することができ、プログラム量を削減することができる。
【００５０】
図９は、オペコードＬＤＯＡの処理例を示す。始めに、ＬＤＯＡの命令をフェッチするとともに、デコードを行う。フェッチした命令（ＬＤＯＡ  ０Ｅｈ，（ＨＬ），０２ｈ）に基づいて、第１のオペランドの値「００００１１１０」（０Ｅｈ）をロードする（ステップ９０５）。第２のオペランドが示すアドレスのメモリにおける処理対象データをシフトブロック２５０（ブロック００２）にロードする（ステップ９１０）。第３のオペランドの値「００００００１０」（０２ｈ）（第３のオペランドの第８ビット「０」は、シフト方向が右であることを表し、第３のオペランドの第１〜４ビットの値である１０進数で「２」は、シフト段数を表す）に基づいて、メモリにおける処理対象データ値「１１１０１１００」（ＥＣｈ）を右方向に２ビット分シフトブロック２５０（ブロック００２）においてシフトさせる（ステップ９１５）。これにより、値「００１１１０１１」（３Ｂｈ）を得る。
【００５１】
論理演算ブロック２４８（ブロック００１）において、ステップ９０５でロードされた値「００００１１１０」（０Ｅｈ）とメモリデータの値を右方向に２ビットシフトさせた値「００１１１０１１」（３Ｂｈ）とで論理積（ＡＮＤ）演算を論理演算ブロック２４８（ブロック００３）において行う（ステップ９２０）。これにより、値「００００１０１０」（０Ａｈ）を得る。ステップ９２０で得た値「００００１０１０」（０Ａｈ）とＡレジスタの値「０１０１１１０１」（５Ｄｈ）との論理和（ＯＲ）演算を論理演算ブロック２４８（ブロック００４）において行う（ステップ９２５）。これにより、値「０１０１１１１１」（５Ｆｈ）を得て、この値をＡレジスタに格納する（ステップ９３０）。
【００５２】
上記「メモリの値をレジスタにオーバーライトする例」、「メモリの値とレジスタの値とを論理積（ＡＮＤ）演算する例」、「メモリの値とレジスタの値とを論理和（ＯＲ）演算する例」にて説明した通り、本発明の実施例により、ユーザが準備すべきプログラムソースコードを削減することができることから、プログラムソースコードの容量も削減することができる。
【００５３】
以下に、従来技術及び本発明の実施例による、メモリの値をレジスタにオーバーライトするときのタイミングチャートを示す。オーバーライトの処理内容は、上述の実施例（例えば、図６）と同様である。
【００５４】
従来技術によるタイミングチャート
図１０は、従来技術によるメモリの値をレジスタにオーバーライトするときのタイミングチャートを示す。
（１）タイミング１０１０において、Ａレジスタ２２２に５９ｈをロードする(ＬＤ  Ａ，５９ｈ)。
（２）タイミング１０２０において、１０００ｈのデータを汎用レジスタ２３４、２３６にロードする（ＬＤ  ＨＬ，１０００ｈ）。
（３）タイミング１０３０において、ＨＬレジスタ２３４、２３６の内容をＢレジスタ２２６にロードする（ＬＤ  Ｂ，（ＨＬ））。
（４）タイミング１０４０〜１０７０において、汎用レジスタ２３４、２３６の右シフトを４回行う（ＳＲＬ  Ｂ  ＊４）。
（５）タイミング１０８０において、Ａレジスタ２２２の第１〜４ビットをクリアする（ＡＮＤ  Ｆ０ｈ）。
（６）タイミング１０９０において、右シフトを４回行ったＢレジスタ２２６とＡレジスタ２２２との論理和演算を行う（ＯＲ  Ｂ）。
（７）タイミング１１００において、Ａレジスタ２２２の内容を４０００ｈにロードする（ＬＤ  （４０００ｈ），Ａ）。
【００５５】
以上の通り、従来技術によれば、オーバーライトの命令を行うために、プロセッサのクロックで７１クロックが必要となる。ここで、命令「ＬＤ  ＨＬ，１０００ｈ」（タイミング１０２０）以降において、５４クロックが必要であり、命令に必要なバイト数は１４バイトである。なお、シフトの１段増加すると、追加で８クロックが必要となる。
【００５６】
本発明の実施例によるタイミングチャート
図１１は、本発明の実施例によるメモリの値をレジスタにオーバーライトするときのタイミングチャートを示す。
（１）タイミング１１１０において、Ａレジスタ２２２に５９ｈをロードする（ＬＤ  Ａ，５９ｈ）。
（２）タイミング１１２０において、１０００ｈのデータを汎用レジスタ２３４、２３６にロードする（ＬＤ  ＨＬ，１０００ｈ）。
（３）タイミング１１３０において、一つのオペコードによるシフト及びロード命令を実行する（ＬＤＷＡ  ０Ｆｈ，（ＨＬ），０４ｈ）。ここで、ＬＤＷＡ命令を２ｂｙｔｅ命令とした場合、ＬＤＷＡ命令のコードはＥＤｈ，Ｆ３ｈと仮定する。
（４）タイミング１１４０において、Ａレジスタ２２２の内容を４０００ｈにロードする（ＬＤ  （４０００ｈ），Ａ）。
【００５７】
以上の通り、上記のようなオーバーライトの命令を行うために、従来技術では、７１クロックが必要であったが、本発明の実施例によれば、３４クロックを必要とするだけである。ここで、ＬＤ  ＨＬ，（１０００ｈ）以降において、１７クロック（従来技術では、５４クロックであるのに対し）が必要であり、命令に必要なバイト数は５バイト（従来技術では、１４バイト）で動作速度および実行に必要な命令数は約１／３になっている。さらに、本発明の実施例において、シフト段数の増減による命令実行サイクルの増減は発生しない。
【００５８】
したがって、本発明の実施例は、従来技術と比較して、命令に必要なバイト数及び処理クロック数を削減することができる。
【００５９】
上記実施例に関するオペコード及びオペランドは、以下の通り整理することができる。
命令：ＬＤｎｍ  ｘ、ｙ、ｚ
ｎ：処理が行われるレジスタへの処理内容
Ｗ：オーバーライト
Ａ：論理積
Ｏ：論理和
ｍ：処理が行われるレジスタを指定
（例：レジスタＡ,Ｂ,Ｃ,Ｄ,Ｅ,Ｈ,Ｌ）
第１のオペランド：（ｘ）
ｘ：処理が行われるレジスタ（例えば、Ａレジスタ）における処理対象のビット位置（処理マスクデータ）を指定する。これにより、処理が行われるレジスタにおいて、‘１’が指定されたビット位置が処理対象データとなり、メモリにおける処理対象データを用いて当該レジスタにおける処理対象データに処理（Ｗ、Ａ、Ｏなど）を行うようにすることができる。
（例：第１のオペランドが０６ｈ（０００００１１０）の場合は処理が行われるレジスタ（例えば、Ａレジスタ）のデータと０６ｈとを論理積（ＡＮＤ）演算を行う。これにより、処理対象として指定されたビットが取出され、処理が行われるレジスタ（例えば、Ａレジスタ）の処理対象として指定されたビット位置のデータに処理を行えるようになる。
第２のオペランド２：（ｙ）
ｙ：メモリにおける処理対象データの格納先アドレスを示すレジスタペア
（例：レジスタペアＢＣ、ＤＥ、ＨＬ、ＩＸ、ＩＹ）
ＨＬに１０００ｈを格納してｙをＨＬに指定するとメモリアドレス１０００ｈに格納されたデータがメモリにおける処理対象データとなる。
第３のオペランド：（ｚ）
ｚ：メモリにおける処理対象データのシフト方向（ａ）およびシフト段数（ｂ）を指定する。メモリにおける処理対象データをシフト方向（ａ）およびシフト段数（ｂ）でビットシフトすることによって、処理データを作成する。
ｚは１バイトのデータとして表現し
ｚの第８ビットはメモリにおける処理対象データのシフト方向（ａ）を表す。
ａ＝１：左シフト、ａ＝０：右シフト
ｚの第１から３ビトはシフト段数（１から７）を表す。
処理内容
図１２は、上記で示したオペコードを実行するフローを示す。
Ｗ：メモリにおける処理対象データに所定のビットシフトをさせた処理データのｘで指定されるビット位置のデータを処理が行われるレジスタ（例えば、Ａレジスタ）における処理対象データにオーバーライト（上書き）する。
Ａ：メモリにおける処理対象データに所定のビットシフトをさせた処理データのｘで指定されるビット位置のデータを処理が行われるレジスタ（例えば、Ａレジスタ）における処理対象データに論理積（ＡＮＤ）演算を行う。
Ｏ：メモリにおける処理対象データに所定のビットシフトをさせた処理データのｘで指定されるビット位置のデータを処理が行われるレジスタ（例えば、Ａレジスタ）における処理対象データに論理和（ＯＲ）演算を行う。
【００６０】
上記実施例ではデータポート１４３、データバス１３０及びメモリのデータ幅は、８ビットを例として説明したが、１６ビット、３２ビット、６４ビット等でも良い。
【００６１】
上記で説明したように、遊技機において、プロセッサは、８ビットプロセッサが用いられている。１データのデータ幅が８ビットに限定されていることから、遊技機におけるメモリの有効活用は、特に重要である。
【００６２】
上記実施例ではオペランドを３つ用いた命令（ＬＤＷＡ  ０Ｆｈ，（ＨＬ），０４ｈなど）に関して、第２オペランド（例えば、（ＨＬ））は、メモリ上の処理対象データを示す間接アドレスレジスタを示すように用いられていたが、間接アドレスを示すレジスタを例えばＨＬに固定する場合、第２オペランドは省略することができる。また、第２オペランドでレジスタペアを指定したが、固定のレジスタペアを命令で指定するように命令数を増やしても良い。（例１：ＨＬの場合はＬＤＷＡＨＬ  ０Ｆｈ、０４ｈ  例２：ＤＥの場合はＬＤＷＡＤＥ  ０Ｆｈ、０４ｈ）これにより、オペコードは、２つのオペランドを有する命令とすることができる。
【００６３】
上記実施例において、オーバライト、論理和演算及び論理積演算について説明したが、当業者であれば理解できるように、他の演算や処理に本発明を適用することができる。
【００６４】
メモリのデータ値の一部を取り出し一以上のレジスタにロードする例
図１３は、従来技術によるメモリの値を複数のレジスタにロードする例を示す。プロセッサ１００がメモリ１１５、１２０におけるアドレスＮのデータ「０１１１０１０１」（７５ｈ）の第６〜８ビットの値をＡレジスタ２２２の第１〜３ビットにロードし、メモリ１１５、１２０におけるアドレスＮのデータの第３〜５ビットの値をＢレジスタ２２６の第１〜３ビットにロードし、メモリ１１５、１２０におけるアドレスＮのデータの第１〜２ビットの値をＣレジスタ２２８の第１〜２ビットにロードする例を示す。本実施例において、ロードされるレジスタは、Ａ，Ｂ、Ｃレジスタの３つを固定とする。他の実施例において、ロードされるレジスタは、３つではなく、一又は二以上のレジスタとしてもよい。なお、図１３における「ｘ」は、各レジスタにおける既存の値を示す。
【００６５】
従来技術では、以下のようなステップが必要であった。
Ｃレジスタへの転送処理
０１：Ａレジスタを演算等で使用するので、ＡレジスタのデータをＤレジスタに退避する。    (LD  D,A)
０２：メモリアドレスを汎用レジスタＨＬにロードする。
(LD  HL,mem_address)
０３：メモリデータをＡレジスタにロードする。
(LD  A,(HL))
０４：Ｃレジスタにロードするため、Ａレジスタの第１〜２ビット以外をクリアする。
(AND  03h)
０５〜０６：Ｃレジスタの第１〜２ビットをクリアする。
(RES  0,C; RES  1,C)
０７：Ａレジスタで生成したメモリデータとＣレジスタとを論理和OR演算する。
(OR  C)
０８：演算後のＡレジスタをＡレジスタに転送してＣレジスタの処理終了。
(LD C,A)
Ｂレジスタへの転送処理
０９：メモリデータをＡレジスタにロードする。
(LD A,(HL))
１０〜１２：ＢレジスタにロードするためのデータをＡレジスタで生成する。
Ａレジスタの第３〜５ビット以外のデータをクリアする。
(AND 1Ch)
Ａレジスタのデータの第３〜５ビットから第１〜３ビットに移動するため、２回右シフトする。
(SRL A; SRL A )
１３〜１５：Bレジスタの第１〜３ビットをクリアする。
(RES 0,B;RES1、B;RES 2,B)
１６：Ａレジスタで生成したメモリデータとＢレジスタをOR若しくはADD
(OR B/ADD B)
１７：上記、演算データをＢレジスタに転送してＢレジスタの処理終了。
(LD B,A)
Ａレジスタへの転送処理
１８：メモリデータをＡレジスタにロードする。
(LD  A,(HL))
１９〜２４：Ａレジスタにロードするメモリデータを生成する。
Ａレジスタの第６〜８ビット以外のデータをクリアする。
(AND  E0h)
Ａレジスタのデータの第６〜８ビットを第１〜３ビットにシフトする。
（SRL  Aを5回実行）
２５：生成したデータをＥレジスタに保存。
(LD  E,A)
２６：ステップ０１にて、Ｄレジスタに保存（退避）したＡレジスタの内容をＡレジスタに戻す。
(LD  A,D)
２７：Ａレジスタの第１〜３ビットのデータをクリアする。
(AND F1h)
２８：Ｅレジスタに保存したメモリデータとＡレジスタとを論理和（OR）演算してＡレジスタの処理を終了する。
(OR E)
上記ステップ１〜２８を実行するために、従来のプロセッサでは40byte以上のメモリ領域が必要となる。
【００６６】
本発明の実施例では、図１４で示すように、メモリの所定のビットの値を所定のレジスタの所定のビットの値にロードするオペコードを用いることによって、以下のステップで従来技術（図１３）と同様の処理を行うことができる。ここで、メモリの所定のビットを所定のレジスタにロードするオペコードは、ＬＤＲＰと仮定する。命令とオペランド（ｏｐｎ）の形式としてはＬＤＲＰ  ｏｐ１，ｏｐ２，ｏｐ３となる。
【００６７】
第１のオペランドは、Ｃレジスタにロードするメモリのビット長を指定する。ただし、メモリのデータの第１ビット(LSB)からのビット長とする。
【００６８】
第２のオペランドは、Ｂレジスタにロードするメモリのビット長を指定する。ただし、Ｂレジスタにロードするメモリのデータは第１のオペランドで指定されたビットの次のビットからとなる（例えば、第１のオペランドで２が指定され、第２のオペランドで３が指定された場合、Ｂレジスタにロードするメモリのビットは第３ビットから第２のオペランドで指定されるビット長のビット（第５ビット）までとなる）。
【００６９】
第３のオペランドは、Ａレジスタにロードするメモリのビット長を指定する。ただし、Ａレジスタにロードするメモリのデータは第２のオペランドで指定されたビットの次のビットからとなる（例えば、第１のオペランドで２が指定され、第２のオペランドで３が指定され、かつ、第３のオペランドで３が指定された場合、Ａレジスタにロードするメモリのビットは第６ビットから第３のオペランドで指定されるビット長のビット（第８ビット）までとなる）。
【００７０】
図１４ａは、ＬＤＲＰ２，３，３の例を示し、図１４ｂは、ＬＤＲＰ４，２，２の例を示す。
【００７１】
本発明の実施例では、図１３で示される例を以下のステップで処理を実行する。なお、メモリのアドレスの指定は予めＨＬレジスタに指定される。
【００７２】
図１５は、オペコードＬＤＲＰの処理例を示す。始めに、ＬＤＲＰの命令をフェッチするとともに、デコードを行う。一実施例において、第一オペランド、第２オペランド、第３オペランドは実行時にその都度メモリよりフェッチしても良いが、オペコードフェッチ後すべてのオペランドを内部のテンポラリレジスタ等にフェッチして置いても良い。
フェッチした命令（ＬＤＲＰ  ２、３、３）に基づいて、処理が実行される。プロセッサ１００は、第１のオペランドとマスクデータ「１１１１１１１１」（ＦＦｈ）をシフトブロック２５０（ブロック００１）にロードし、Ｃレジスタ用のマスクデータを生成する（ステップ１５１０）。第１のオペランドは、「２」であるから、マスクデータ「１１１１１１１１」を２ビット左へシフトして「０」を２ビット埋める操作を行い、ビット長「２」である第１〜２のビットが「０」、第３〜８のビットが「１」であるデータ「１１１１１１００」（ＦＣｈ）をシフトブロック２５０（ブロック００１）において生成する。
【００７３】
マスクデータ「１１１１１１００」（ＦＣｈ）の反転データ「００００００１１」（０３ｈ）を論理演算ブロック２４８（ブロック００２）において生成する（ステップ１５１５）。Ｃレジスタの値「０１００１１１１」（４Ｆｈ）とマスクデータ「１１１１１１００」（ＦＣｈ）とを論理演算ブロック２４８（ブロック００２）において論理積（ＡＮＤ）演算し、演算結果「０１００１１００」（４Ｃｈ）をテンポラリレジスタに保存する（ステップ１５２０）。
【００７４】
ステップ１５１０で得たＣレジスタ用のマスクデータを反転した反転データ「００００００１１」（０３ｈ）とメモリからロードされたデータ「０１１１０１０１」（７５ｈ）とを論理演算ブロック２４８（ブロック００３）において論理積（ＡＮＤ）演算する（ステップ１５２５）。これにより、Ｃレジスタに設定すべき第１〜２ビットの値を有する演算結果「０００００００１」（０１ｈ）を得る。
【００７５】
ステップ１５２５で得た演算結果「０００００００１」（０１ｈ）とテンポラリレジスタに保存したデータ「０１００１１００」（４Ｃｈ）とを論理演算ブロック２４８（ブロック００４）において論理和（ＯＲ）演算し、演算結果「０１００１１０１」（４Ｄｈ）をＣレジスタに保存する（ステップ１５３０）。
【００７６】
第１のオペランドの値「２」からメモリのデータをビットシフトすべき段数が得られる。第１のオペランドの値「２」、すなわち、Ｃレジスタにロードすべきメモリのデータのビット長は２であるから、Ｂレジスタにロードすべき値は、メモリのデータの第３ビット以降であり、メモリのデータの第３ビットをＢレジスタの第１ビットに対応させる必要がある。したがって、メモリのデータのビットシフトは、右方向に２ビットである。これにより、メモリデータ「０１１１０１０１」（７５ｈ）をシフトブロック２５０（ブロック００５）において右方向に２ビットシフトさせる（ステップ１５３５）。これにより、メモリのデータを２ビット右方向にシフトした値「０００１１１０１」（１Ｄｈ）を得る。
【００７７】
次に、第２のオペランドからＢレジスタ用のマスクデータを生成する、マスクデータ「１１１１１１１１」（ＦＦｈ）をシフトブロック２５０（ブロック００６）にロードし第２のオペランドは、「３」であるから、マスクデータ「１１１１１１１１」（ＦＦｈ）を３ビット左へシフトし、ビット長「３」に対応する第１〜３のビットが「０」、第４〜８のビットが「１」であるデータ「１１１１１０００」（Ｆ８ｈ）をシフトブロック２５０（ブロック００６）において生成する。（ステップ１５３８）。
【００７８】
ステップ１５３８より得たＢレジスタ用マスクデータ「１１１１１０００」（Ｆ８ｈ）の反転データ「０００００１１１」（０７ｈ）を論理演算ブロック２４８（ブロック００７）において生成する（ステップ１５４５）。Ｂレジスタの値「００１１０１１０」（３６ｈ）とマスクデータ「１１１１１０００」（Ｆ８ｈ）とを論理演算ブロック２４８（ブロック００７）において論理積（ＡＮＤ）演算し、演算結果「００１１００００」（３０ｈ）をテンポラリレジスタに保存する（ステップ１５５０）。
【００７９】
マスクデータを反転した反転データ「０００００１１１」（０７ｈ）とステップ１５３５において、メモリのデータを２ビット右方向にシフトした「０００１１１０１」（１Ｄｈ）とを論理演算ブロック２４８（ブロック００８）において論理積（ＡＮＤ）演算する（ステップ１５５５）。これにより、Ｂレジスタに設定すべき第１〜３ビットの値を有する演算結果「０００００１０１」（０５ｈ）を得る。
【００８０】
ステップ１５５５で得た演算結果「０００００１０１」（０５ｈ）とテンポラリレジスタに保存したデータ「００１１００００」（３０ｈ）とを論理演算ブロック２４８（ブロック００９）において論理和（ＯＲ）演算し、演算結果「００１１０１０１」（３５ｈ）をＢレジスタに保存する（ステップ１５６０）。
【００８１】
第２のオペランドの値「３」からメモリのデータをビットシフトすべき段数が得られる。第２のオペランドの値「３」、すなわち、Ｂレジスタにロードすべきメモリのデータのビット長は３であるから、Ａレジスタにロードすべき値は、メモリのデータの第４ビット以降であり、メモリのデータの第４ビットをＡレジスタの第１ビットに対応させる必要がある。したがって、メモリのデータのビットシフトは、右方向に５ビットである。これにより、メモリデータ「０１１１０１０１」（７５ｈ）をステップ１５３５において右方向に２ビットシフトさせた値「０００１１１０１」（１Ｄｈ）を右方向にさらにシフトブロック２５０（ブロック０１０）において３ビットシフトさせる（ステップ１５６５）。これにより、メモリの最初のデータを５ビット右方向にシフトした値「００００００１１」（０３ｈ）を得る。
【００８２】
次に第３のオペランドからＡレジスタ用のマスクデータをシフトブロック２５０（ブロック０１１）において生成する、マスクデータ「１１１１１１１１」（ＦＦｈ）をシフトブロック２５０にロードしマスクデータを生成する（ステップ１５６３）。すなわち、「１１１１１１１１」（ＦＦｈ）を左方向に３ビットシフトさせる。第３のオペランドは、「３」であるから、ビット長「３」である第１〜３のビットが「０」、第４〜８のビットが「１」であるＡレジスタ用マスクデータ「１１１１１０００」（Ｆ８ｈ）を生成する。
【００８３】
Ａレジスタの値「１０００００１０」（８２ｈ）とマスクデータ「１１１１１０００」（Ｆ８ｈ）とを論理演算ブロック２４８（ブロック０１２）において論理積（ＡＮＤ）演算し、演算結果「１０００００００」（８０ｈ）を得る（ステップ１５７５）。
【００８４】
ステップ１５７５で得た値「１０００００００」（８０ｈ）とステップ１５６５において、メモリのデータを５ビット右方向にシフトした「００００００１１」（０３ｈ）とを論理演算ブロック２４８（ブロック０１３）において論理和（ＯＲ）演算する（ステップ１５８０）。これにより、Ａレジスタに設定すべき第１〜３ビットの値を有する演算結果「１０００００１１」（８３ｈ）を得て、Ａレジスタに保存する（ステップ１５８０）。
【００８５】
したがって、従来技術の命令では40byte以上のメモリを必要としたが、本発明の実施例の命令では4〜5byte程度で実行可能となる。上記の例では、オペランドが３つの例を説明したが、当業者であれば理解されるようにオペランドの数が１〜７であるオペコードを本発明として用いてもよい。
【００８６】
上記実施例ではメモリデータのアドレスを間接レジスタＨＬを用いたが間接レジスタはＨＬを含めＢＣ、ＤＥ、ＩＸ、ＩＹ等の１６ビットレジスタを用いることもできる。この場合は命令コードを変え、ＬＤＲＰＨＬ、ＬＤＲＰＢＣ，ＬＤＲＰＩＸ、ＬＤＲＰＩＹの命令を用いることもできる。
【００８７】
上記で説明されたように、本発明の実施例による遊技機用プロセッサは、メモリの１データ幅（例えば、８ビット）のデータから一部のデータを１以上のビットを単位として取り出し、取り出したデータを一又は二以上のレジスタに設定するオペコードを有することができる。
【００８８】
遊技機において、プロセッサ１００は、基板に組み込まれている。遊技機は、少なくとも、主基板、表示基板及び払出基板を有する。主基板は、遊技機全体の機能を制御し、入賞するか否かに関する抽選も実行する。表示基板及び払出基板は、主基板から命令及び／又はデータを受信する。表示基板は、主基板からの命令に基づいて、遊技機の演出を制御する。払出基板は、主基板からの命令に基づいて、入賞の際に賞球の払出を制御する。ここで、主基板、払出基板、表示基板は、一例であり、遊技機は、他の機能を実現する基板を含んでいてもよい。また、当業者であれば理解可能であるように、基板が回路から構成されるようにしてもよいし、基板によって実現される機能を回路によって実現されるようにしてもよい。
【００８９】
上記の実施例において、ビット位置を表す表現として、ビット番号０、１、２・・・又は第１ビット、第２ビット、第３ビット・・・などを用いた。これに関し、当業者であれば理解されるように、ビット番号０、１、２・・・は、第１ビット、第２ビット、第３ビット・・・にそれぞれ対応する。
【００９０】
オペコードやオペランドの命名規則や、値の表現方法は、一例であり、当業者であれば理解されるように他の方法によって、命名や値の表現がなされても良い。
【００９１】
上記の実施例において、ハードウエアで実現するよう説明されたいくつかの要素の一部又は全ては、ソフトウェアで実現することができ、そして、ソフトウェアで実現するよう説明されたいくつかの要素の一部又は全ては、ハードウエアで実現することができることは理解されるであろう。
【００９２】
以上に説明した処理又は処理順序において、ある処理において、その処理ではまだ利用することができないはずのデータを利用しているなどの処理又は処理順序上の矛盾が生じない限りにおいて、処理又は処理順序を自由に変更することができる。
以上に説明してきた各実施例に関し、各実施例の一部又は全部を組み合わせて一つの実施例として実現されてもよい。
【００９３】
以上に説明してきた各実施例は、本発明を説明するための例示であり、本発明はこれらの実施例に限定されるものではない。本発明は、その要旨を逸脱しない限り、種々の形態で実施することができる。
【符号の説明】
【００９４】
１００  プロセッサ
１０５  プロセッサコア
１１０  デコーダ
１１５  ＲＯＭ
１２０  ＲＡＭ
１２５  ＭＩＳＣ
１３０  バス
１３５  クロック信号ポート
１３７  リセット信号ポート
１３９  割込信号ポートを有する
１４１  アドレス信号ポート
１４３  データポート
１４５  制御信号ポート
１４７  アドレス信号ポート
１４９  ＲＯＭ用チップセレクトポート
１５１  ＲＡＭ用チップセレクトポート
１５３  ＭＩＳＣ用チップセレクトポート
１５５  アドレス信号ポート
１５７  データポート
１５９  チップセレクト／リード制御信号ポート
１６１  アドレス信号ポート
１６３  データポート
１６５  チップセレクト／リード制御信号／ライト制御信号ポート
１６７  アドレス信号ポート
１６９  データポート
１７１  チップセレクト／リード制御信号／ライト制御信号ポート
２０５  ＡＬＵ
２１０  命令デコーダ
２１５  シーケンサ
２２０  汎用レジスタ
２２２  Ａレジスタ
２２４  Ｆレジスタ
２２６  Ｂレジスタ
２２８  Ｃレジスタ
２３０  Ｄレジスタ
２３２  Ｅレジスタ
２３４  Ｈレジスタ
２３６  Ｌレジスタ
２３８  ＩＸレジスタ
２４０  ＩＹレジスタ
２４２  テンポラリレジスタ
２４６  加減算ブロック
２４８  論理演算ブロック
２５０  シフトブロック
２５２  第１のマルチプレクサ
２５４  第２のマルチプレクサ
【図１】
2017035333.tif 000003
【図２】
2017035333.tif 000004
【図３ａ】
2017035333.tif 000005
【図３ｂ】
2017035333.tif 000006
【図４】
2017035333.tif 000007
【図５】
2017035333.tif 000008
【図６】
2017035333.tif 000009
【図７】
2017035333.tif 000010
【図８】
2017035333.tif 000011
【図９】
2017035333.tif 000012
【図１０ａ】
2017035333.tif 000013
【図１０ｂ】
2017035333.tif 000014
【図１０ｃ】
2017035333.tif 000015
【図１０ｄ】
2017035333.tif 000016
【図１１ａ】
2017035333.tif 000017
【図１１ｂ】
2017035333.tif 000018
【図１１ｃ】
2017035333.tif 000019
【図１２】
2017035333.tif 000020
【図１３】
2017035333.tif 000021
【図１４ａ】
2017035333.tif 000022
【図１４ｂ】
2017035333.tif 000023
【図１５ａ】
2017035333.tif 000024
【図１５ｂ】
2017035333.tif 000025
【図１５ｃ】
2017035333.tif 000026