命令を記憶する第1の記憶部と、前記第1の記憶部における、実行する命令のアドレスの値を示すプログラムカウンタと、前記プログラムカウンタが示す前記値に、分岐命令の命令長を足した値を、前記第1の記憶部の読出し単位長の倍数となるように、アライメントを取ってから、第2の記憶部に退避する退避部と、前記退避部が前記第2の記憶部に退避した前記値を読み出し、読み出された当該値を、前記プログラムカウンタに格納する復帰部とを備えるプロセッサ。前記プログラムカウンタの前記値に、前記分岐命令の命令長を足した値が、前記読出し単位長の倍数の場合には、アライメントを取る処理をしないと判定し、前記読出し単位長の倍数でない場合には、アライメントを取る前記処理をすると判定する判定部を備える請求項1記載のプロセッサ。前記退避部は、予め定められた制御フラグにより、前記命令長を足した前記値を退避することが指示される場合には、前記命令長を足した前記値を退避し、当該値とは異なる、アライメントが取った後の前記値を退避することが指示される場合にのみ、取った後の前記値を退避する請求項1または請求項2記載のプロセッサ。当該プロセッサにより実行されるプログラムは、前記分岐命令の後続命令が、前記読出し単位長の倍数となるアドレスに予め配置されたプログラムである請求項1~3の何れかに記載のプロセッサ。請求項1記載のプロセッサと、当該プロセッサにより実行されるプログラムであって、前記分岐命令の後続命令を、前記読出し単位長の倍数となるアドレスに予め配置したプログラムを生成する装置とを含んでなるシステム。請求項1記載のプロセッサにより実行されるプログラムであって、前記分岐命令の後続命令を、前記読出し単位長の倍数となるアドレスに予め配置したプログラムを生成する装置。しかしながら、サブルーチン分岐と、復帰先アドレスとについては、次の通りである。つまり、例えば、情報処理回路、マイクロコンピュータおよび電子機器特開平10-91443号公報で述べられているように、サブルーチン分岐命令を実行するときには、サブルーチンから戻るときに復帰する復帰先のアドレスである復帰先アドレスを退避する。そして、復帰先復帰先アドレスの命令は、サブルーチン分岐命令の後続命令であり、そのアドレスは、サブルーチン分岐命令のアドレスに、サブルーチン分岐命令の命令長を足したものである。つまり、サブルーチン1A1b図10内の復帰命令図10ではRET命令を実行すると、上記復帰先アドレスに分岐し、サブルーチン分岐命令図10ではCALLSUB命令の後続命令を実行する。復帰命令RET命令の分岐先である、サブルーチン分岐命令の後続命令では、復帰後に実行する命令データ読み出しのオーバーヘッドが、先述された、無条件分岐先命令の後続命令のケースと同様に発生する。サブルーチン分岐時に退避する復帰先アドレスは、サブルーチン分岐命令のアドレスに、サブルーチン分岐命令の命令長を足したものである。このため、アライメントを取ったアドレスを、復帰先アドレスにすることはできない。つまり、サブルーチン分岐命令のアドレスに対して、当該サブルーチン分岐命令の命令長を足したアドレスが退避され、このアドレスへの分岐復帰がされて、不適切なアドレスへの分岐がされてしまう。ここで、不適切なアドレスとは、サブルーチン分岐命令の後続命令のアドレスではないアドレスである。このため、従来例の技術では、サブルーチンからの復帰において、復帰先アドレスのアライメントを取ることができず、オーバーヘッドが発生し、処理時間が増加するという問題がある。また、これにより、命令メモリ読出し回数が増加して、消費電力や読み出し頻度が増大するという問題もある。本発明の目的は、サブルーチン内の復帰命令による分岐での分岐先アドレスサブルーチン分岐命令の後続命令図10のアドレスである復帰先アドレスについて、メモリ読出しアドレス単位にあわせる以後、アライメントを取ると呼ぶことによって、処理時間と消費電力の増大を抑制するプロセッサを提供することにある。上記課題を解決するために、本発明に係るプロセッサ例えば中央演算処理装置は、命令を記憶する第1の記憶部と、前記第1の記憶部における、実行する命令サブルーチン分岐命令などのアドレスの値を示すプログラムカウンタと、前記プログラムカウンタが示す前記値サブルーチン分岐命令のアドレスに、分岐命令サブルーチン分岐命令の命令長を足した値を、前記第1の記憶部の読出し単位長の倍数となるように倍数の値へと修正するように、アライメントを取ってから、修正がされた後の値を第2の記憶部に退避する退避部と、サブルーチン分岐命令が、実行を開始させたサブルーチンの処理が終了した場合に、前記退避部が前記第2の記憶部に退避した前記値を読み出し、読み出された当該値を、前記プログラムカウンタに格納する復帰部とを備えるプロセッサである。また、本発明に係るプロセッサは、前記プログラムカウンタの値に分岐命令の命令長を足したアドレス値が、前記第1の記憶手段の読出し単位長の倍数の場合には、アライメントを取る処理をいないと判定し、前記第1の記憶手段の読出し単位長の倍数でない場合には、アライメントを取ると判定することを特徴とする。また、本発明に係るプロセッサは、前記制御フラグが無効ならば、前記退避手段は、前記プログラムカウンタの値に前記分岐命令の命令長を足したアドレス値を、前記第2の記憶手段に退避する、ことを特徴とする。また、本発明に係るプロセッサは、前記分岐命令の後続命令を、前記第1の記憶手段の読出し単位長の倍数となるアドレスに、予め配置した処理手順を実行することを特徴とする。以上のように、本発明に係るプロセッサでは、サブルーチンからの復帰先アドレスのアライメントを取ることを可能とすることで、サブルーチンからの復帰におけるオーバーヘッドを削減し、処理時間と消費電力を削減することができる。プログラム図13のプログラム1mPを参照に含まれるサブルーチン分岐命令の個数が比較的多い場合などでも、プログラムの処理が高速にされ、確実に、処理が高速にできる。なお、同様にして、確実に、消費電力が小さくできる。実施形態に係るプロセッサ例えば中央演算処理装置は、命令を記憶する命令メモリ100と、命令メモリ100における、実行する命令のアドレスの値アドレス303vを示すプログラムカウンタ303と、プログラムカウンタ303が示す値例えば、サブルーチン分岐命令である第1の命令の第1のアドレスに、分岐命令第1の命令の命令長例えば図2では1を足した値図2では4003番地を、命令メモリ100の読出し単位長の倍数での値第3のアドレスへと修正するように、LR305へと退避される値のアライメントを取ってから、アライメントが取られた後の値図2の4004番地参照、第3のアドレスを、LR305に退避する退避部304と図11のSb2a、第1の命令であるサブルーチン分岐命令が、実行を開始させたサブルーチンの処理が終了した場合に、第2の命令後述の後続命令への分岐がされるのに際して、退避部304がLR305に退避した値図2の4004番地、第3のアドレスを読み出し、読み出された当該値を、プログラムカウンタ303に格納して、当該値のアドレスへの分岐をさせることにより、第2の命令後続命令への分岐をさせる復帰部306とSb2aを備えるプロセッサCPU101である。つまり、アドレスが退避されて、退避されたアドレスへの分岐がされることにより、第2の命令後続命令への分岐がされる。一方、分岐としては、その分岐の際の処理が比較的高速であるなどで、比較的適切である分岐がある先述の説明を参照。そして、このような比較的適切な分岐は、アライメントが取られてない第4のアドレス後述への分岐Sb2b参照でなく、取られた後の第3のアドレスへの分岐Sb2a参照であるケースSb1:No参照がある。そこで、このケースSb1:No参照などにおいて、次の処理がされる。その処理とは、第4のアドレスが退避されて、第4のアドレスへの分岐がされるSb2bのでなく、第3のアドレスが退避されて、第3のアドレスへの分岐がされるSb2a処理である。そして、第2の命令後続命令を含んだプログラム1mP図13を生成するコンパイラ1mなどにより、第2の命令後続命令のアドレスは、第4のアドレスでなく、第3のアドレスにされる。これにより、第2の命令への分岐の際の処理が高速にされる。ひいては、プログラム1mPに含まれるサブルーチン分岐命令の個数が多い場合などでも、高速な処理がされ、確実に、処理が高速にできる。以下、詳しく説明される。実施の形態1以下、本発明の実施の形態1に係る中央演算処理装置CPUについて説明する。図1は、実施の形態1に係るCPUのブロック図である。100は命令メモリであり、CPUが実行する命令コードが格納されている。101はCPUであり、302は制御部、303はプログラムカウンタPC、304は退避部、305はリンクレジスタLR、306は復帰部、307は命令バッファである。また、308はアライメント部であり、当該アライメント部308は、当該アライメント部308の構成要素として、アライメント判定部309、アライメント実施部310を有する。制御部302は、PC303が指し示すアドレスアドレス303vの命令コード命令コード100iを、命令メモリ100から読み出して、読み出した命令コードを実行する。命令バッファ307は、制御部302の構成要素であり、命令メモリ100から読み出した命令コードを保持する。制御部302がCALL命令図1のCALL命令100iAを実行すると、退避部304は、復帰先アドレス図1の復帰先アドレスを示すデータ304aを、LR305に退避する。そして、退避部304が、復帰先アドレスをLR305に退避するときに、アライメント判定部309は、PCの値アドレス303vに、CALL命令の命令長を足した値が、アライメントが取れている値であるか否かを判定する。そして、アライメント判定部309が、アライメントを取れていないと判定した場合には図11のSb1:No、アライメント実施部310が、PC303の値アドレス303v、CALL命令100iAの命令長を足した値第1のアドレスのアライメントを取ってから、アライメントがとられた後の値第2のアドレスを、LR305に退避するSb2a。また、アライメント判定部309が、アライメントを取れていると判定した場合にはSb1:Yes、PC303の値に、CALL命令100iAの命令長を足した値第1のアドレスを、LR305に退避するSb2b。制御部302が、CALL命令が実行されることによって実行されるサブルーチンに含まれるRTNreturn命令図1の100iBを実行すると、復帰部306は、LR305の値を、PC303に復帰する。以下では、具体例として、命令メモリ100のアドレスマップが、図2のアドレスマップである場合について、詳しく説明する。図2は、本発明の実施の形態1における命令メモリのアドレスマップを示す図である。CALL命令図12の100iAの後直後にある後続命令100iMのアドレスを、4の倍数に設定するアライメント制御文_ALIGN_4を100iQ参照、予め、メインプログラムMAINプログラム100Paに挿入することで、命令A100iMを、4の倍数のアドレスに配置している。図3は、サブルーチン分岐と復帰のタイミングなどを示すタイミングチャートである。CPU101は、メインプログラムMAIN図2の100Paの処理を行っている期間内における時刻t0で、4002番地の図2CALL命令100iAを実行する。アライメント判定部309は、CALL命令がある4002番地図3の値304pに対して、CALL命令の命令長である1を加算した結果が、40021=4003であるため、アライメントを取れていないと判定する図11のSb1:No。そしてアライメント実施部310は、加算された結果である上述の4003のアライメントを取って、復帰先アドレスデータ304aを、アライメントがとられて、メモリ読み出しアドレス単位にあわせられた値である4004にする。退避部304は、この復帰先アドレスである、4004図3の値304iを、LR305に退避する図1の304a、図11のSb2aなどを参照。なお、図3における図示は、説明の便宜上などのために、適宜、模式的に行われる。例えば、値304iの出力が開始されるタイミングは、図示されるようなタイミングとは異なるタイミングでもよいし、図示されるようなタイミングなどでもよい。PC303の値303vは、CALL命令で呼び出されるサブルーチン図2のサブルーチンSUBプログラム100Pb参照の先頭のアドレス図2では8000に書き換えられ、そのサブルーチンSUBに分岐する。以後、サブルーチンSUBの処理を行う。メインプログラムMAINに復帰するために、時刻t1で、RTN命令図2の100iBを実行すると、PC303の値303vは、先述された、退避がされた値である4004になり、2サイクル後に、この4004番地からの、4007番地までの4byteの命令コードを、命令メモリ100から読み出し、命令バッファ307に格納する。制御部302は、命令バッファ307に格納した、4004番地からの命令コードを読み出して、命令A、命令B、命令C、命令Dを順次実行する。命令メモリ100のアドレスマップが、図4の場合について説明する。図4は、本発明の実施の形態1における命令メモリのアドレスマップを示す図である。CALL命令の後にある後続命令100iMのアドレスを、4の倍数に設定するアライメント制御文_ALIGN_4:100iQを、予めメインプログラムMAINに挿入しているが、CALL命令のアドレス4003番地に、CALL命令の命令長1を加算した結果が4004で、アライメントの調整がされなくても、すでに適切な値であるため、_ALIGN_4による、アライメントの調整は行っていない。図5は、サブルーチン分岐と復帰などのタイミングのタイミングチャートである。時刻t0で、上述された、4003番地のCALL命令図4を実行する。アライメント判定部309は、この4003に、CALL命令の命令長1を加算した結果が、40031=4004であるため、アライメントを取れていると判定するSb1:Yes。そして、アライメント実施部310は、アライメントの処理をせず、退避部304は、復帰先アドレスである、この4004図5における値304hを、LR305に退避するSb2b。PC303の値303vは、サブルーチン先頭のアドレス図4では8000番地に書き換えられ、サブルーチンに分岐する。時刻t1で、RTN命令図4参照を実行すると、PC303の値303vは、退避された、上述の4004になり、2サイクル後に、4004番地からの、4007番地までの4byteの命令コードを命令メモリ100から読み出し、命令バッファ307に格納する。制御部302は、命令バッファ307に格納した、4004番地からの命令コードを読み出して、命令A、命令B、命令C、命令Dを順次実行する。以上の構成により、CALL命令を配置したアドレス図2の4002番地、図4の4003番地を参照に、CALL命令の命令長1を加算した結果4003、4004に関わらず、復帰先アドレスのアライメントを取ることが可能となる。実施の形態2以下、本発明の実施の形態2に係る中央演算処理装置CPUについて説明する。図6は、実施の形態2に係るCPU201のブロック図である。100は命令メモリであり、CPU201が実行する命令コードが格納されている。201はCPUであり、302は制御部、303はPC、304は退避部、305はリンクレジスタLR、306は復帰部、307は命令バッファである。また、308はアライメント部であり、構成要素として、アライメント判定部309、アライメント実施部310を有する。311はモード設定フラグである。なお、CPU201の各構成要素のうちで、実施の形態1のCPU101における構成要素と同一の対応する構成要素については、図6中に、図1と同一の符号を、付しており、ここでは、詳しい説明を適宜、省略する。モード設定フラグ311は、アライメント部308を制御するものである。モード設定フラグ311がONの時には、アライメント部308がアライメントを取り、OFFの時には、アライメント部308がアライメントを取らない。つまり、モード設定フラグ311がONのときにのみ、CALL命令を実行すると、実施の形態1記載のCPU101と同一の動作となる。そして、モード設定フラグ311がOFFのときには、CALL命令を実行すると、従来のCALL命令での動作と同じ動作になる。モード設定フラグ311が設けられることにより、このようなことが可能となる。本実施の形態1に係るCPU101においては、CALL命令を実行すると、復帰先アドレスは、常時、アライメントを取ったアドレスになる。このため、このようなCPU101において、復帰先アドレスが、CALL命令の命令長1を加算したアドレスであるつまり、アライメントを取ったアドレス以外の、取られてないアドレスになる場合がある従来のソフトフェアを処理すると、次のケースが生じる。つまり、そのケースとは、アライメントを取ったアドレスである、CPUが復帰する復帰先アドレスと、取られてないアドレスである、CALL命令の後続命令を配置したアドレスとが、互いに異なるケースである。このため、CPU101では、従来のソフトフェアが正常に動作せず、ソフトフェアの互換性がなくなってしまう。そこで、以上のように、モード設定フラグ311を用いて、CALL命令の動作を切り替えることで、復帰先アドレスのアライメント実行のON/OFFを制御することができ、ソフトウエアの互換性を保持することが可能となる。図7A、図7Bのそれぞれは、本発明の実施の形態2における、モード設定フラグと、ソフトウエアとの対応を示す図である。これら図7A、図7Bで、ソフトウエアの構成と、制御フラグの状態について説明する。図7Aで、CALL命令の後続命令が、CALL命令の命令長1を加算したアドレスに配置しているソフトウエア従来のソフトウエアを、本実施の形態2に係るCPU201図6が処理する場合を説明する。CPU201は、CALL命令の命令長1を加算したアドレス第1のアドレスに復帰しなければならないので、復帰先アドレスのアライメントを取らない。よって、モード設定フラグ311を0オフに設定する。図7Bで、CALL命令の後続命令のアドレスを、4の倍数に設定するアライメント制御文_ALIGN_4を、予めメインプログラムに挿入し、後続命令を、4の倍数のアドレスに配置しているソフトウエア新しいソフトウエア:1C31、1C33と、従来のソフトウエア1C32、1c34が存在するソフトウエア1C3を、本実施の形態2に係るCPU201が処理する場合を説明する。CPU201が処理するソフトウエアに応じて、モード制御フラグモード設定フラグ311がオフか、オンかを切り替えることで、CPU201のCALL命令の動作を、CPU201が処理するソフトウエアにあわせて切り替えることが出来る。切り替えのタイミングは、新しいソフトウエアを呼び出す時に、モード制御フラグをONに切り替え、従来のソフトウエアを呼び出す時に、モード制御フラグをOFFに切り替えるタイミングである。実施の形態3以下、本発明の実施の形態3に係る中央演算処理装置CPUのアセンブル手順について説明する。図8は、アセンブラ言語で記述したプログラム1B11を、CPU101、CPU201が実行する命令コードへとアセンブルする手順を示す図である。Sa1は、CALL命令を検出するステップである。Sa2は、Sa1でCALL命令が検出された場合にSa1:検出、検出されたCALL命令に後続する命令のアライメントを取るアライメント制御文_ALIGN_4を挿入するステップである。アセンブルSa3を行う前に、Sa1およびSa2の処理をして、アセンブルを実行して、オブジェクトファイル1B13を出力する。図9は、メインプログラムMAINを、例として示す図である。Sa1およびSa2の処理により、図9のメインプログラムMAINに、アライメント制御文_ALIGN_4を挿入すると、図2のメインプログラムMAINが生成される。オブジェクトファイルとしては、CALL命令のアドレスに、CALL命令の命令長1を足した結果が4002で、アライメントが取れていない場合、図2のメインプログラムMAINと、アドレスの対応であるオブジェクトファイルを出力する。そして、CALL命令のアドレスに、CALL命令の命令長1を足した結果が、4004で、アライメントが取れている場合、図4のメインプログラムMAINとアドレスの対応であるオブジェクトファイルを出力する。以上の手順により、アセンブラ言語で記述したプログラムに、CALL命令が存在する場合には、自動的に、後続命令の配置先アドレスつまり復帰先アドレスのアライメントを取ることが可能となり、実施の形態1または2記載のように、予めアライメント制御文を記載する必要がなくなる。補足以上、本発明に係る中央演算装置の実施の形態1~3について説明したが、以下に補足する。命令メモリ100のデータバス幅を4byteとし、4の倍数のアドレス単位で読み出すものとして説明したが、4byte以外のデータバス幅で、4の倍数以外のアドレス単位の読出しであってもかまわない。命令メモリ100の読出しにかかるサイクル数を2として説明したが、2以外のサイクル数でもかまわない。制御フラグモード設定フラグ311は、専用のレジスタや、プロセッサ状態語PSW、または外部端子に実装してもかまわない。制御フラグモード設定フラグ311の切り替えでは、予め、モード制御フラグモード設定フラグ311をOFFに設定し、新しいソフトウエア図7B参照を呼び出す時に、モード制御フラグ311をONに切り替え、新しいソフトウエアの完了する時に、モード制御フラグをOFFに切り替えてもよい。制御フラグの切り替えでは、予め、モード制御フラグをONに設定し、従来のソフトウエアを呼び出す時に、モード制御フラグをOFFに切り替え、従来のソフトウエアの完了する時に、モード制御フラグをONに切り替えてもよい。実施の形態3では、アセンブルの前段階で_ALIGN_4を挿入したが、高級言語のコンパイルの段階で挿入してもかまわない。実施の形態3では、アセンブルの前段階で_ALIGN_4を挿入したが、アセンブル処理中にCALL命令の後続命令を検出し、該当の命令コードを4の倍数のアドレスに配置してもよい。このようにして、要するに、サブルーチン分岐の復帰先アドレスのアライメントを取ることによって、処理時間を抑制するCPUを提供することができる。つまり、サブルーチン分岐命令を実行すると、復帰先アドレスをリンクレジスタLR退避する。そして、退避するときに、プログラムカウンタPCの値に、CALL命令の命令長を足した値が、アライメントを取れていない値と判定した場合には、PCの値に、CALL命令の命令長を足した値のアライメントを取ってから、取られた後の値を、LRに退避する。また、モード設定フラグ311は、例えば、CPU101の集積回路における端子の電圧が、5Vなどの所定電圧である場合にはオンである一方で、所定電圧でない場合にはオフであるフラグでもよい。なお、こうして、命令が、CALL命令の次の命令である場合に図12のSc1:Yes、その命令のアライメントを取らせて、その命令についてアライメントが取られたオブジェクトファイル1B13図8を生成させる処理がされてもよい図12のSc2。この処理は、例えば、上述された、アライメント制御文の挿入などである。なお、このような、アセンブラ言語で記述したプログラム1B11図8からの、オブジェクトファイル1B13の生成の処理は、例えば、アセンブラ、コンパイラなどのソフトウエアにより行われてもよい。このソフトウエアは、例えば、図13で示されるコンパイラ1mである。コンパイラ1mの機能が実現されるコンピュータ1aは、例えば、ワークステーションなどでもよい。なお、例えば、先述された図8におけるSa1の処理は、このコンパイラ1mが備えるCALL命令検出部1m2により行われてもよい。そして、Sa2の処理は、アライメント処理部1m3により行われてもよい。なお、これらCALL命令検出部1m2等のそれぞれは、例えば、上述のソフトウエアに含まれるモジュールなどである。そして、例えば、このソフトウエアが実行される際に、コンパイルオプションなどの、コマンドライン引数等のデータに基づいた処理が行われてもよい。つまり、コンパイルオプション等により、上述された、図8のSa1~Sa2の処理を行うことが指示される場合にのみ図8のSa0:Yes、これらSa1~Sa2の処理を行わせ、指示されない場合にはSa0:No、行わせない制御がされてもよい。この制御Sa0は、例えば、図13のコンパイルオプション処理部1m1により行われてもよい。なお、こうして、例えば、上述された、コンパイラ1mの処理を行う第1のコンピュータ1aと、図1のCPU101、命令メモリ100などが設けられた第2のコンピュータ1bとが含まれたシステム1図13参照が構成され、用いられてもよい。こうして、アセンブラ言語等によるプログラム1m2P図13、図8の1B11から、第2のコンピュータ1b図13における、例えばROMReadOnlyMemoryなどである命令メモリ100図1参照により記憶されるプログラム1mPが生成されてもよいコンパイラ1m。そして、プログラム1m2Pに含まれるCALL命令が検出されてもよいCALL命令検出部1m2、Sa1。そして、検出されたCALL命令の処理を実行するサブルーチン分岐命令と、CALL命令の次にある命令の処理を実行する、サブルーチン分岐命令の後続命令とが含まれるプログラム1mPが、コンパイラ1mにより生成されてもよい。なお、生成されるプログラム1mPは、例えば、図8におけるオブジェクトファイル1B13でもよい。そして、上述された後続命令のアライメントが取られてもよいアライメント処理部1m3、Sa2。なお、プログラム1mPにおける後続命令のアライメントが取られることは、適宜、プログラム1m2Pにおける、上述された次の命令のアライメントを取ることとも呼ばれる。つまり、生成されるプログラム1mPにおける、上述された後続命令のアドレスは、そのアドレスの命令への分岐がされるのが適切であるアドレスであり、適切ではないアドレスではなくてもよい。なお、先述のように、例えば、適切であるアドレスは、そのアドレスの命令への分岐がされる場合には、大きな遅延が生じず、処理速度が速くなるアドレスなどでもよい。そして、適切でないアドレスは、遅延が生じて、処理速度が遅くなるアドレスなどでもよい。すなわち、適切であるアドレスは、先述の例における、4の倍数のアドレスなどであり、適切でないアドレスは、その他のアドレスなどである。そして、記憶された、こうして生成されたプログラム1mPが、例えば、第2のコンピュータ1bの命令メモリ100により記憶されるなどして、CPUCPU101等により実行されてもよい。そして、その実行の際に、CPUにより、記憶されたプログラム1mPの一部よりなるメインプログラムMAIN図2に含まれる、先述のサブルーチン分岐命令が実行されてもよい。そして、このサブルーチン分岐命令が実行される際に、サブルーチンSUB図2:サブルーチンのプログラムが実行されてもよい。そして、サブルーチンSUBに含まれる復帰命令図2のRTN命令が実行された場合には、メインプログラムMAINにおける、上述の後続命令が実行されてもよい。こうして、復帰命令から後続命令への分岐が行われてもよい。しかしながら、サブルーチン分岐命令が実行される際には、アドレス304a図1を、退避先LR305へと退避させ、退避先で記憶させる制御が行われる退避部304。そして、復帰命令での分岐がされる際において、その分岐での分岐先の命令は、メインプログラムMAINにおける、退避されたアドレス304aの命令である。そこで、ある場合には図11のSb1:Yesを参照、後続命令例えば図4の命令Aのアドレスは、サブルーチン分岐命令のアドレス図4の4003番地に対して、サブルーチン分岐命令の命令長長さ1が足された第1のアドレス40031=4004番地:図5のアドレス304h参照でもよい。そして、その場合Sb1:Yesには、退避されるアドレス304aは、上述の第1のアドレスアドレス304hでもよいSb2b。しかしながら、別の場合にはSb1:No、後続命令例えば図2の命令Aのアドレスは、上述のようにして、アライメントが取られて、上述された第1のアドレスではない第2のアドレス図2における40022=4004番地、図3のアドレス304iを参照であることもある。そこで、アライメントが取られた後の、後続命令のアドレスが、第1のアドレスである場合にのみSb1:Yes、第1のアドレス例えばアドレス304hが退避されSb2b、別の第2のアドレスである場合には、第2のアドレス例えばアドレス304iが退避されてもよい。これにより、復帰命令での分岐の分岐先図5の命令Aなど参照のアドレスが、4の倍数などの適切なアドレスにされ、処理速度が速くできる。しかも、後続命令のアドレスが、先述された、サブルーチン分岐命令のアドレスに対して、命令長が足された第1のアドレス図4の40031=4004番地などでない第2のアドレス図2の40022=4004番地である場合にも、分岐先の命令として、上述の後続命令が実行され、適切な動作がされる。これにより、確実に、適切な動作ができる。これにより、適切な動作がされることが維持されることと、処理速度が速いこととが両立できる。しかも、その命令が実行される際における処理の処理速度が速くされる命令が、サブルーチン分岐命令の後続命令であり、他の命令ではない。これにより、サブルーチン分岐命令の個数が少ないケースではなく、多いケースでも、処理速度が速くできる。これにより、実行されるプログラム1mP図13の種類などに関わらず、確実に、処理速度が速くできる。なお、コンパイラ1m、および、本CPUCPU101などは、何れも、こられの効果を得るために用いられる、システム1図13の一部をなす部品である点で共通し、単一の技術範囲に属する。なお、コンパイラ1mがなくてもよい。そして、プログラム1mPは、コンパイラ1mにより生成されたプログラムではなく、プログラマなどにより、手作業等で作成されたプログラムなどでもよい。つまり、コンパイラ1mがなくても、本CPUのみよっても、上述の効果は得られる。ここで、知られる先行例においては、本CPUが備える複数の構成制御部302、退避部304などのうちの全部または一部を欠く。このため、先行例では、上述の効果は得られない。これに対して、本CPUでは、上述された複数の構成があり、上述された効果が得られる。本CPUは、これらの点で、先行例に対して、先進性を有する。なお、こうして、システム1図13などにおいて、コンピュータ1aコンパイラ1mにより、CPU101により実行されるプログラム1mPが生成されてもよい。生成されるプログラム1mPは、第1の命令と、第2の命令とを含んでよい。第1の命令は、サブルーチン分岐命令などであり、その命令が実行される際に、第2の命令のアドレスを記憶させる制御が退避部304によって行われる命令図10のCALLSUB命令を参照でもよい。第2の命令は、第1の命令が実行を開始させるサブルーチン図10のサブルーチン1A1bなどを参照の処理が終了した場合に、記憶されたアドレスへの分岐をさせることにより、当該第2の命令への分岐をさせる制御が復帰部306によって行われる命令でもよい。しかしながら、第1の命令CALLSUB命令のアドレスとしては、第1のアドレス図2の4002番地を参照と、第2のアドレス図4の4003番地を参照とがある。そして、第2の命令のアドレスとして比較的適切であるアドレスは、第1の命令のアドレスが、第1のアドレスである場合図2には、第3のアドレス図2の例での、第1のアドレスに対して、値2などの、2~3のうちの適切な値を足した番地などでもよい。そして、適切であるアドレスは、第1の命令のアドレスが、第2のアドレスである場合図4には、第4のアドレス図4での、第1のアドレスに対して、1を足した番地などでもよい。ここで、比較的適切であるアドレスは、例えば、先述のように、そのアドレスの命令への分岐がされる場合には、分岐に際しての処理が、比較的高速であるアドレスなどをいう。なお、比較的適切であるアドレスは、そのアドレスへの分岐がされる場合には、分岐の処理での消費電力が比較的小さいアドレスなどでもよい。そこで、CPU101において、プログラム1mPに含まれる複数の命令のうちから、上述の第1の命令CALLSUB命令を検出する検出部制御部302のうちの一部または全部が設けられてもよい。そして、検出された第1の命令のアドレスが、第1のアドレス図2であるか、第2のアドレス図4であるかを判定するアライメント判定部309図1が設けられてもよい。そして、次の制御を行うアライメント実施部310図1が設けられてもよい。つまり、その制御では、第1のアドレスと判定される場合には図2、Sb:No、検出された第1の命令が実行される際に、第3のアドレスを記憶させて、第1の命令が開始させた、サブルーチンの処理が終了した場合に、記憶された第3のアドレスへの分岐をさせてもよいSb2a。そして、第2のアドレスと判定される場合には図4、Sb1:Yes、第4のアドレスを記憶させて、サブルーチンの処理が終了した場合に、その第4のアドレスへの分岐をさせてもよいSb2b。そして、コンピュータ1aコンパイラ1mにおいて、生成されるプログラム1mPに含まれる複数の命令のうちから、上述の第1の命令を特定する特定部CALL命令検出部1m2:図13が設けられてもよい。なお、例えば、プログラム1mPへと変換される前のプログラム1m2Pにおける、第1の命令へと変換される命令が特定されることにより、特定される命令から変換される命令が、第1の命令と特定されてもよい。そして、次の制御図12のSc2がアライメント処理部1m3により行われてもよい。つまり、その制御では、特定される第1の命令のアドレスが、第1のアドレスである場合には、プログラム1mPに含まれる第2の命令のアドレスを、第3のアドレスにさせてもよい。一方で、第2のアドレスである場合には、第2の命令のアドレスを、第4のアドレスにさせてもよい。これにより、第2の命令が、上述された、サブルーチン分岐命令の後続命令などであるにも関わらず、この第2の命令への分岐がされるのに際して、比較的高速な処理、比較的小さい消費電力での処理などの適切な処理ができる。ひいては、生成されるプログラム1mPが、サブルーチン分岐命令を多く含む場合などでも、プログラム1mPの実行の処理が、適切な処理にされ、確実に、適切な処理ができる。なお、本発明は、装置、システム、集積回路などとして実現できるだけでなく、その装置等を構成する処理手段をステップとする方法として実現したり、それらステップをコンピュータに実行させるプログラムとして実現したり、そのプログラムを記録したコンピュータ読み取り可能なCD-ROMなどの記録媒体として実現したり、そのプログラムを示す情報、データ又は信号として実現したりすることもできる。そして、それらプログラム、情報、データ及び信号は、インターネット等の通信ネットワークを介して配信してもよい。なお、本発明について、実施の形態に基づいて説明したが、本発明は、上記の実施の形態に限定されるものではない。本発明の主旨を逸脱しない限り、当業者が思いつく各種変形を本実施の形態に施したものや、異なる実施の形態における構成要素を組み合わせて構築される形態も、本発明の範囲内に含まれる。