(57)【要約】【課題】情報処理装置においてデータ長の異なる命令を効率的に処理すること。【解決手段】情報処理装置１においては、ＣＰＵ８内に数値の表現形式を示す値を記憶する数値表現形式記憶回路１０４と、その数値表現形式に適合する形式に命令の引数を変換する引数変換回路１０５とを備えている。そして、データ長の異なる命令、例えば、文字画像を描画する処理における１画素未満の詳細な座標計算を行う命令と広範囲の座標計算を行う命令とを取り扱う場合に、数値表現形式を指定する命令を実行することにより、ＣＰＵ８の動作を切り換え、ＣＰＵ８における引数の解釈の変更および引数のデータ長の変換が行われる。したがって、データ長の異なる命令を効率的に処理することが可能となる。【選択図】図３
2007249666.tif 000002
【特許請求の範囲】
【請求項１】
メモリに格納された命令をプロセッサが読み出して演算処理する情報処理装置であって、
前記メモリから読み出された命令に含まれる引数のデータ長を設定するデータ長設定手段と、
前記メモリから読み出された命令に含まれる引数を、前記データ長設定手段によって設定されたデータ長に変換するデータ長変換手段と、
を備え、前記プロセッサが、前記データ長変換手段によって変換されたデータ長の引数に対して演算処理を行うことを特徴とする情報処理装置。
【請求項２】
前記プロセッサ内部に、
演算処理におけるデータ長の設定を記憶する設定データ長記憶回路と、
命令に含まれる引数を、前記データ長設定手段に設定されているデータ長に変換するデータ長変換回路とを備え、
前記データ長設定手段は、前記プロセッサが前記メモリから演算処理におけるデータ長を設定する命令を読み出して実行した場合に、該命令に示されたデータ長を前記データ長記憶回路に記憶し、
前記データ長変換手段は、前記プロセッサが前記メモリから演算処理を行う命令を読み出して実行する場合に、前記データ長変換回路によって、該命令における引数を前記データ長記憶回路に記憶されたデータ長に変換することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記データ長設定手段は、前記プロセッサが前記メモリから演算処理におけるデータ長を設定する命令を読み出して実行した場合に、該命令に示されたデータ長を前記メモリに記憶し、
前記データ長変換手段は、前記プロセッサが前記メモリから演算処理を行う命令を読み出して実行する場合に、前記メモリに記憶されたデータ長を参照し、該命令における引数を該データ長に変換することを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記メモリに格納された命令には、所定ビット長の引数のうち、上位ビットおよび下位ビットの一部によって表現される値を引数とする演算処理命令が含まれ、上位ビットの一部によって表現される値を引数とする命令に先行して、該上位ビットの一部によって表現される値を演算処理におけるデータ長とさせるデータ長設定命令が格納されていると共に、下位ビットの一部によって表現される値を引数とする命令に先行して、該下位ビットの一部によって表現される値を演算処理におけるデータ長とさせるデータ長設定命令が格納されており、
前記データ長設定手段は、前記プロセッサが前記データ長設定命令を読み出して実行した場合に、前記上位ビットあるいは下位ビットの一部によって表現される値を変換するデータ長を設定し、
前記データ長変換手段は、前記プロセッサが前記上位ビットあるいは下位ビットの一部によって表現される値を引数とする演算処理命令を読み出して実行する場合に、該演算処理命令に含まれる引数を、シフト処理およびゼロを挿入する処理によって前記データ長設定手段によって設定されたデータ長に変換することを特徴とする請求項１から３のいずれか１項に記載の情報処理装置。
【請求項５】
メモリに格納された命令をプロセッサが読み出して演算処理する情報処理装置を制御するための情報処理プログラムであって、
前記メモリから読み出された命令に含まれる引数のデータ長を設定するデータ長設定機能と、
前記メモリから読み出された命令に含まれる引数を、前記データ長設定機能によって設定されたデータ長に変換するデータ長変換機能と、
を備え、前記プロセッサに、前記データ長変換機能によって変換されたデータ長の引数に対して演算処理を行わせることを特徴とする情報処理プログラム。
【請求項６】
メモリに格納された命令をプロセッサが読み出して演算処理する情報処理装置における情報処理方法であって、
前記メモリから読み出された命令に含まれる引数のデータ長を設定させるデータ長設定命令を前記プロセッサに実行させるデータ長設定ステップと、
前記メモリから読み出された命令に含まれる引数を、前記データ長設定ステップにおいて設定されたデータ長に変換させるデータ長変換ステップと、
前記プロセッサが、前記データ長変換手段によって変換されたデータ長の引数に対して演算処理を行う演算処理ステップと、
を含むことを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力された命令を解釈・実行して演算を行う情報処理装置、情報処理プログラムおよび情報処理方法に関する。
【背景技術】
【０００２】
従来、ソフトウェアを実行する情報処理装置として、汎用プロセッサが用いられている。汎用プロセッサによってソフトウェアが実行される場合、汎用プロセッサの命令セットに適合する形式で記述されたソフトウェアを、汎用プロセッサのデコード部がデコードし、各演算回路において具体的な演算処理が行われる。
また、ソフトウェアは、引数として、８ビット型、１６ビット型、３２ビット型といった段階的に異なる数値表現形式を混在して取り扱うものであり、プロセッサ側においても、それらの数値表現形式を取り扱えるように、引数の数値表現形式に応じた異なる命令が用意されている。
【０００３】
一方、プリンタ等の高解像度な印刷装置では、高い解像度で大きな物理サイズの画像データを処理するため、広範囲の座標値を取り扱いながら画像処理を行っており、そのような座標値を表現するために、長いビット長の引数を持つ命令が使用されている。
さらに、近年では、電子ペーパーと呼ばれる、印刷物並みの高解像度を有すると共に１画素で多階調の濃淡を表現できるディスプレイも登場している。
このような情報処理装置における画像処理では、本来期待する位置に正確に描画するためには、１画素未満の精度で座標を計算する必要がある。
【０００４】
また、多階調を表現できるディスプレイにおいては、アンチエイリアス処理を行うために１画素未満の座標値が計算されることがある。即ち、アンチエイリアス処理では、ディスプレイにおける最小の表現単位である本来の１画素を、複数の微細な画素に仮想的に分割し、描画する点が、本来の１画素のうち、仮想的に分割された画素をどの程度着色するかに応じて、本来の１画素で表現する点の濃度値を決定している。したがって、アンチエイリアス処理では、１画素未満の座標値を示す小数部と、広範囲の座標を示す整数部との両方を表現する必要があり、プロセッサ内部の数値表現形式は、それらを合わせた長いビット長となっている。
【０００５】
そして、用意された数値表現形式のうち、このような整数部と小数部を合わせたデータ長以上のデータを取り扱える数値表現形式を用いて、座標計算が行われる。
例えば、画像処理に必要な座標値が、整数部２０ビット、小数部４ビットである場合、合計は２４ビットの数値データとなるが、プロセッサが８ビット型、１６ビット型、３２ビット型の数値表現形式にのみ対応し、２４ビット型の数値表現形式には対応していない場合、２４ビットを超える中で最小である３２ビット型の数値表現形式によって座標計算を行うこととなる。
【０００６】
なお、プロセッサにおいて命令を処理する手法が、特開平１１−５３１８７号公報に記載されており、本号公報に記載された技術は、プロセッサにおいて命令を実行する際の実行サイクルを低減することを目的とするものである。
【特許文献１】特開平１１−５３１８７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、画像処理における座標データは、特定の座標範囲に偏って出現する傾向にあることが知られている。例えば、上述のように１画素未満の細かい座標を計算する場合には、命令引数の整数部分が同一の座標データが処理されることから、広範囲の座標を示す上位ビット（整数部分）は使用されていない。
このような場合、特許文献１に記載された技術を含め、従来の技術においては、引数の上位ビットに全てゼロを挿入することで、例えば３２ビット型の命令とし、実際には小数点以下を表すデータのみを使用するという手法が取られている。
【０００８】
したがって、ゼロが挿入されることにより、命令データ中に冗長な領域が発生し、命令を記憶するためのメモリ領域が増大してコストの上昇を招いたり、命令を読み出す際にメモリアクセス回数が増加することにより、消費電力が増加するといった事態を招くこととなる。
なお、このような事態は、座標データを計算する場合のみならず、データ長が異なる命令を混在して取り扱う場合において共通するものである。
【０００９】
このように、従来の技術では、情報処理装置においてデータ長の異なる命令を効率的に処理することが困難であった。
本発明の課題は、情報処理装置においてデータ長の異なる命令を効率的に処理できるようにし、命令を記憶するためのメモリコストおよびメモリアクセス時の消費電力を削減することである。
【課題を解決するための手段】
【００１０】
以上の課題を解決するため、本発明は、
メモリ（例えば、図１におけるメモリ４）に格納された命令をプロセッサ（例えば、図１におけるＣＰＵ８）が読み出して演算処理する情報処理装置（例えば、図１における情報処理装置１）であって、前記メモリから読み出された命令に含まれる引数のデータ長を設定するデータ長設定手段（例えば、第１実施形態における“ＦＭＴ”命令を格納したメモリ４およびそれを実行する際のＣＰＵ８における数値表現形式記憶回路１０４）と、前記メモリから読み出された命令に含まれる引数を、前記データ長設定手段によって設定されたデータ長に変換するデータ長変換手段（例えば、第１実施形態における“ＬＤ．Ｗ”命令を実行する際のＣＰＵ８における引数変換回路１０５）と、を備え、前記プロセッサが、前記データ長変換手段によって変換されたデータ長の引数に対して演算処理を行うことを特徴としている。
【００１１】
このような構成により、データ長設定手段によって、演算処理におけるデータ長を設定することができ、データ長変換手段によって、メモリに格納された命令の引数を、演算処理における所定のデータ長に変換した上でプロセッサに実行させることができる。
したがって、情報処理装置においてデータ長の異なる命令を効率的に処理することが可能となる。
【００１２】
また、本発明は、
前記プロセッサ内部に、演算処理におけるデータ長の設定を記憶する設定データ長記憶回路（例えば、図３の数値表現形式記憶回路１０４）と、命令に含まれる引数を、前記データ長設定手段に設定されているデータ長に変換するデータ長変換回路（例えば、図３の引数変換回路１０５）とを備え、前記データ長設定手段は、前記プロセッサが前記メモリから演算処理におけるデータ長を設定する命令を読み出して実行した場合に、該命令に示されたデータ長を前記データ長記憶回路に記憶し、前記データ長変換手段は、前記プロセッサが前記メモリから演算処理を行う命令を読み出して実行する場合に、前記データ長変換回路によって、該命令における引数を前記データ長記憶回路に記憶されたデータ長に変換することを特徴としている。
【００１３】
このような構成により、データ長の異なる命令を取り扱う場合に、演算処理におけるデータ長の設定および引数のデータ長の変換をプロセッサ内において行うことができ、演算処理を高速に行うことが可能となる。
【００１４】
また、本発明は、
前記データ長設定手段は、前記プロセッサが前記メモリから演算処理におけるデータ長を設定する命令を読み出して実行した場合に、該命令に示されたデータ長を前記メモリに記憶し、前記データ長変換手段は、前記プロセッサが前記メモリから演算処理を行う命令を読み出して実行する場合に、前記メモリに記憶されたデータ長を参照し、該命令における引数を該データ長に変換することを特徴としている。
【００１５】
このような構成により、汎用のプロセッサを用いた場合でも、ソフトウェアの変更のみによって、本発明の機能を実現することができ、情報処理装置においてデータ長の異なる命令を効率的に処理することが可能となる。
【００１６】
また、本発明は、
前記メモリに格納された命令には、所定ビット長の引数のうち、上位ビットおよび下位ビットの一部によって表現される値を引数とする演算処理命令が含まれ、上位ビットの一部によって表現される値を引数とする命令に先行して、該上位ビットの一部によって表現される値を演算処理におけるデータ長とさせるデータ長設定命令が格納されていると共に、下位ビットの一部によって表現される値を引数とする命令に先行して、該下位ビットの一部によって表現される値を演算処理におけるデータ長とさせるデータ長設定命令が格納されており、前記データ長設定手段は、前記プロセッサが前記データ長設定命令を読み出して実行した場合に、前記上位ビットあるいは下位ビットの一部によって表現される値を変換するデータ長を設定し、前記データ長変換手段は、前記プロセッサが前記上位ビットあるいは下位ビットの一部によって表現される値を引数とする演算処理命令を読み出して実行する場合に、該演算処理命令に含まれる引数を、シフト処理およびゼロを挿入する処理によって前記データ長設定手段によって設定されたデータ長に変換することを特徴としている。
【００１７】
このような構成により、整数部と小数部を含むデータに対し、広範な値を示す上位ビット側のデータ、および、詳細な値を示す下位側のデータそれぞれを区別して取り扱う命令が混在している場合にも、プロセッサにおいて演算処理を行う際に、それらを所定データ長に変換して処理することが可能となり、命令データにおいて不要なデータ領域が発生することを防止できる。
【００１８】
また、本発明は、
メモリに格納された命令をプロセッサが読み出して演算処理する情報処理装置を制御するための情報処理プログラムであって、前記メモリから読み出された命令に含まれる引数のデータ長を設定するデータ長設定機能と、前記メモリから読み出された命令に含まれる引数を、前記データ長設定機能によって設定されたデータ長に変換するデータ長変換機能とを備え、前記プロセッサに、前記データ長変換機能によって変換されたデータ長の引数に対して演算処理を行わせることを特徴としている。
【００１９】
さらに、本発明は、
メモリに格納された命令をプロセッサが読み出して演算処理する情報処理装置における情報処理方法であって、前記メモリから読み出された命令に含まれる引数のデータ長を設定させるデータ長設定命令を前記プロセッサに実行させるデータ長設定ステップと、前記メモリから読み出された命令に含まれる引数を、前記データ長設定ステップにおいて設定されたデータ長に変換させるデータ長変換ステップと、前記プロセッサが、前記データ長変換手段によって変換されたデータ長の引数に対して演算処理を行う演算処理ステップとを含むことを特徴としている。
【００２０】
このように、本発明によれば、情報処理装置においてデータ長の異なる命令を効率的に処理することが可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、図を参照して本発明に係る情報処理装置の実施の形態を説明する。
＜第１実施形態＞
【００２２】
＜情報処理装置の構成＞
本実施形態に係る情報処理装置は、データ長の異なる命令が入力された場合に、プロセッサ内部においてデータ長を変換し、所定データ長に整えた上で演算を実行する機能を有するものである。なお、ここでは、データ長の異なる命令の例として、文字画像の描画処理において座標計算を行う場合に、広範囲の座標を演算するための整数部（２０ビット）と、１画素未満の詳細な座標を演算するための小数部（４ビット）の２つの異なるデータ長を取り扱うものとして説明する。
【００２３】
まず、構成を説明する。
図１は、本実施形態の情報処理装置１の内部構成を示すブロック図である。この図１に示すように、情報処理装置１は、入力手段２、入力手段コントローラ３、メモリ４、メモリコントローラ５、外部記憶６、外部記憶コントローラ７、ＣＰＵ（Central Processing Unit）８、表示コントローラ９、表示体１０、バスコントローラ１１、及び電源コントローラ１２を含んで構成される。
【００２４】
入力手段２は、例えばマウスやキーボードといった、文字の描画等の命令を入力するときに操作される機器である。そして、入力手段２は、命令を入力するための操作が行われると、入力された命令を入力手段コントローラ３を介してＣＰＵ８に出力する。
入力手段コントローラ３は、入力手段２とＣＰＵ８との間のデータ転送を制御する。
メモリ４は、ＣＰＵ８がプログラムを実行するときに各種プログラムを展開するワークエリアを形成するとともに、ＣＰＵ８により実行される各種プログラムに係るデータや、表示対象である情報のデータを記憶する記憶領域を形成する。また、本実施形態において、メモリ４には、図２に示す一連の命令（プログラム）が格納されている。
【００２５】
図２は、メモリ４に格納されているプログラムを示す図である。
この図２に示すように、メモリ４には、
ＦＭＴ  ０
ＬＤ．Ｗ  Ｒ３，＃１０．１２５
ＬＤ．Ｗ  Ｒ４，＃２０．３７５
ＡＤＤ．Ｌ  Ｒ５，Ｒ３，Ｒ４
ＦＭＴ  ８
ＬＤ．Ｗ  Ｒ６，＃８２００００
ＬＤ．Ｗ  Ｒ７，＃１２８０００
ＡＤＤ．Ｌ  Ｒ８，Ｒ６，Ｒ７
の各命令からなる８行のプログラムが格納されており、各命令は１ワード分の１６ビットのデータ長で表現されている。
【００２６】
図１に戻り、メモリコントローラ５は、メモリ４とＣＰＵ８との間のデータ転送を制御する。
外部記憶６は、ＣＰＵ８により実行される基本制御プログラムやアプリケーションプログラム等の各種プログラム及びこれら各種プログラムに係るデータを格納する。
外部記憶コントローラ７は、外部記憶６とＣＰＵ８との間のデータ転送を制御する。
【００２７】
ＣＰＵ８は、外部記憶６に格納されている各種プログラムを読み込み、それらをメモリ４内に形成されるワークエリアに展開して各部２〜１２を制御する。
例えば、ＣＰＵ８は、入力手段２から文字の描画指示が出力されると、文字を描画する所定処理を実行する。そして、文字を描画する所定処理によって、その文字の文字コードに基づいて描画命令データを取得し、その描画命令データを解釈（デコード）・実行することにより、前記描画指示があった文字のビットマップを生成する。
【００２８】
図３は、ＣＰＵ８の内部構成を示すブロック図である。この図３に示すように、ＣＰＵ８は、制御回路１０１と、入力レジスタ１０２と、命令デコーダ１０３と、数値表現形式記憶回路１０４と、引数変換回路１０５と、レジスタファイル１０６と、ＡＬＵ（Arithmetic and Logical Unit）１０７と、出力レジスタ１０８と、プログラムカウンタ１０９と、インクリメンタ１１０とを備えており、ＣＰＵ８内の各部は、バスあるいは専用の信号線で接続されている。また、ＣＰＵ８は、情報処理装置１の各部と外部データバスおよび外部アドレスバスによって接続されている。
【００２９】
制御回路１０１は、動作タイミングや動作の種類等、ＣＰＵ８内部の各モジュールを制御する回路である。例えば、制御回路１０１は、プログラムカウンタ１０９に示されたメモリアドレスから命令を読み出して入力レジスタ１０２に記憶したり、出力レジスタ１０８に記憶されているデータを、メモリの所定アドレスに書き込んだりする。
入力レジスタ１０２は、外部データバスを介してメモリ４から読み出された命令（命令コードおよび命令データ）を一時的に記憶し、記憶している命令を命令デコーダ１０３に出力したり、命令の引数を数値表現形式記憶回路１０４あるいは引数変換回路１０５に出力したりする。
【００３０】
命令デコーダ１０３は、入力レジスタ１０２から入力された命令の命令コードを基に、命令内容をデコードし、デコード結果を制御回路１０１に出力する。また、命令デコーダ１０３は、入力レジスタから入力された命令の命令データを基に、入出力するレジスタのアドレスを制御回路に出力する。
数値表現形式記憶回路１０４は、入力レジスタ１０２から数値表現形式の切り換え命令（後述するＦＭＴ命令）に含まれる引数（数値の表現形式を示す値）を受け取り、その表現形式を示す値を記憶する。
【００３１】
引数変換回路１０５は、数値表現形式記憶回路１０４に記憶されている数値表現形式を示す値を読み出し、入力レジスタ１０２から数値を示す引数を受け取って、その数値の表現形式を、数値表現形式記憶回路１０４が記憶している値に適合する形式に変換する。例えば、引数変換回路１０５は、数値表現形式記憶回路１０４に記憶されている数値表現形式を示す値が８の場合は、入力レジスタ１０２から入力された値を左に８ビットシフトし、不足するビットに０を追加することによって３２ビットの値に変換する。仮に入力レジスタ１０２から１６ビットの引数を受け取った場合は、左に８ビットシフトを行い、不足する上位８ビットおよび下位８ビットに“０”を追加することにより、その１６ビット型のデータを３２ビット型に変換する。
【００３２】
そして、引数変換回路１０５は、変換後の数値データをレジスタファイル１０６に出力する。
レジスタファイル１０６は、複数のレジスタによって構成されており、引数変換回路１０５から入力された数値データやＡＬＵ１０７の演算結果を、制御回路１０１によって指定されたアドレスのレジスタに記憶する。また、レジスタファイル１０６は、制御回路１０１によって指定されたアドレスのレジスタに記憶されている数値データを、ＡＬＵ１０７あるいは出力レジスタ１０８に出力する。
【００３３】
ＡＬＵ１０７は、レジスタファイル１０６から出力された数値データに対し、加減算あるいは乗算といった演算を行う論理・算術演算を行う。そして、ＡＬＵ１０７は、演算結果をレジスタファイル１０６に出力する。
出力レジスタ１０８は、レジスタファイル１０６から出力されたデータを一時的に記憶し、外部データバスを介してメモリ４に出力する。
【００３４】
プログラムカウンタ１０９は、ＣＰＵ８が次に実行する命令が格納されたメモリ４のアドレスを記憶しており、命令をメモリ４から読み出す毎に、インクリメンタ１１０によって、記憶しているアドレスが“１”加算される。
インクリメンタ１１０は、ＣＰＵ８がメモリ４から命令を１つ読み出す毎に、プログラムカウンタ１０９に記憶されているアドレスを“１”加算する。
【００３５】
図１に戻り、表示コントローラ９は、ＣＰＵ８でビットマップが生成されると、そのビットマップを表示体１０に描画する。
表示体１０は、電力供給が停止されても表示内容を保持できる記憶性表示体（コレステリック液晶）を含んで構成される。そして、表示体１０は、表示コントローラ９の描画動作によって表示内容が書き換えられる。
バスコントローラ１１は、ＣＰＵ８と各部２〜１２との間のデータ転送を制御する。
電源コントローラ１２は、ＣＰＵ８からの指令に従って、情報処理装置１の各部２〜１２への電源供給を制御する。
【００３６】
＜情報処理装置の動作＞
情報処置装置１のメモリ４には、図２に示すように、プログラマによって記述された一連の命令（プログラム）が格納されており、プログラムの実行が指示入力されることにより、ＣＰＵ８がこれらの命令を順に読み出して実行する。
【００３７】
具体的には、メモリ４には、
ＦＭＴ  ０
ＬＤ．Ｗ  Ｒ３，＃１０．１２５
ＬＤ．Ｗ  Ｒ４，＃２０．３７５
ＡＤＤ．Ｌ  Ｒ５，Ｒ３，Ｒ４
ＦＭＴ  ８
ＬＤ．Ｗ  Ｒ６，＃８２００００
ＬＤ．Ｗ  Ｒ７，＃１２８０００
ＡＤＤ．Ｌ  Ｒ８，Ｒ６，Ｒ７
の各命令からなる８行のプログラムが格納されており、情報処理装置１のＣＰＵ８がこのプログラムを読み出して実行する。
【００３８】
上記プログラムのうち、第１行〜第４行が１画素未満の詳細な座標計算を行う命令であり、第５行〜第８行が広範囲の座標計算を行う命令である。
上記プログラムの実行が指示されると、ＣＰＵ８は、第１行の命令“ＦＭＴ  ０”から順に実行を開始する。
“ＦＭＴ  ０”命令の実行に際しては、以下の手順でＣＰＵ８が動作する。
【００３９】
１．プログラムカウンタ１０９が、次の命令をフェッチするメモリアドレス（“ＦＭＴ  ０”命令が格納されたメモリアドレス）を外部アドレスバスに出力する。
２．プログラムカウンタ１０９が示すアドレスから“ＦＭＴ  ０”命令（F00xxxxx）をフェッチし、入力レジスタ１０２に格納する。（「xxxxx」は未定義フィールドのため、値は問わない。以後も同様。）
３．命令デコーダ１０３が、入力レジスタ１０２の第１フィールド（命令コード：F）をデコードし、その結果、制御回路１０１はＦＭＴ命令の動作を開始する。
４．入力レジスタ１０２から第２フィールド（ビットシフト量：00）の値０を数値表現形式記憶回路１０４に出力する。
５．インクリメンタ１１０がプログラムカウンタ１０９の値を“１”加算する。
【００４０】
“ＦＭＴ  ０”命令が実行されることにより、数値表現形式記憶回路１０４にビットシフト量“０”が設定され、以後の引数に対し、０ビット処理が施されることとなる。
“ＬＤ．Ｗ  Ｒ３，＃１０．１２５”命令の実行に際しては、以下の手順でＣＰＵ８が動作する。
【００４１】
１．プログラムカウンタ１０９が、次の命令をフェッチするメモリアドレス（“ＬＤ．Ｗ  Ｒ３，＃１０．１２５”命令が格納されたメモリアドレス）を外部アドレスバスに出力する。
２．プログラムカウンタ１０９が示すアドレスから“ＬＤ．Ｗ  Ｒ３，＃１０．１２５”命令（13xx00A2）をフェッチし、入力レジスタ１０２に格納する。
３．命令デコーダ１０３が、入力レジスタ１０２の第１フィールド（命令コード：1）をデコードし、その結果、制御回路１０１はＬＤ．Ｗ命令の動作を開始する。
４．命令デコーダ１０３が、入力レジスタ１０２の第２フィールド（レジスタ番号：3）をデコードし、その結果を制御回路１０１が保持する。
５．入力レジスタ１０２から第４フィールド（定数値：00A2）の値を引数変換回路１０５に出力する。
６．引数変換回路１０５は、数値表現形式記憶回路１０４から指示されている値０に従って、入力された値（00A2）を左に０ビットシフトし、不足するビットには０を補う。結果として、引数変換回路１０５は、000000A2を出力する（値000000A2は、４ビットシフト固定小数点形式で、10.125を表す数値である）。
７．引数変換回路１０５が出力する値000000A2を、レジスタファイル１０６のレジスタ（R3）に格納する。
８．インクリメンタ１１０がプログラムカウンタ１０９の値を“１”加算する。
【００４２】
“ＬＤ．Ｗ  Ｒ３，＃１０．１２５”命令が実行されることにより、命令中における引数00A2が000000A2（１０進の１０．１２５）に変換された上でレジスタＲ３に記憶される。
“ＬＤ．Ｗ  Ｒ４，＃２０．３７５”命令の実行に際しては、以下の手順でＣＰＵ８が動作する。
【００４３】
１．プログラムカウンタ１０９が、次の命令をフェッチするメモリアドレス（“ＬＤ．Ｗ  Ｒ４，＃２０．３７５”命令が格納されたメモリアドレス）を外部アドレスバスに出力する。
２．プログラムカウンタ１０９が示すアドレスから“ＬＤ．Ｗ  Ｒ４，＃２０．３７５”命令（14xx0146）をフェッチし、入力レジスタ１０２に格納する。
３．命令デコーダ１０３が、入力レジスタ１０２の第１フィールド（命令コード：1）をデコードし、その結果、制御回路はＬＤ．Ｗ命令の動作を開始する。
４．命令デコーダ１０３が、入力レジスタ１０２の第２フィールド（レジスタ番号：4）をデコードし、その結果を制御回路が保持する。
５．入力レジスタ１０２から第４フィールド（定数値：0146）の値を引数変換回路１０５に出力する。
６．引数変換回路１０５は、数値表現形式記憶回路１０４から指示されている値０に従って、入力された値（0146）を左に0ビットシフトし、不足するビットには0を補う。結果として、00000146を出力する（値00000146は、４ビットシフト固定小数点形式で、20.375を表す数値である）。
７．引数変換回路１０５が出力する値00000146を、レジスタファイル１０６のレジスタ（R4）に格納する。
８．インクリメンタ１１０がプログラムカウンタ１０９の値を“１”加算する。
【００４４】
“ＬＤ．Ｗ  Ｒ４，＃２０．３７５”命令が実行されることにより、命令中における引数0146が00000146（１０進の２０．３７５）に変換された上でレジスタＲ４に記憶される。
“ＡＤＤ．Ｌ  Ｒ５，Ｒ３，Ｒ４”命令の実行に際しては、以下の手順でＣＰＵ８が動作する。
【００４５】
１．プログラムカウンタ１０９が、次の命令をフェッチするメモリアドレス（“ＡＤＤ．Ｌ  Ｒ５，Ｒ３，Ｒ４”命令が格納されたメモリアドレス）を外部アドレスバスに出力する。
２．プログラムカウンタ１０９が示すアドレスから“ＡＤＤ．Ｌ  Ｒ５，Ｒ３，Ｒ４”命令（2534xxxx）をフェッチし、入力レジスタ１０２に格納する。
３．命令デコーダ１０３が、入力レジスタ１０２の第１フィールド（命令コード：2）をデコードし、その結果、制御回路１０１はＡＤＤ．Ｌ命令の動作を開始する。
４．命令デコーダ１０３が、入力レジスタ１０２の第２フィールド（レジスタ番号：5）をデコードし、その結果を制御回路１０１が保持する。
５．命令デコーダ１０３が、入力レジスタ１０２の第３フィールド（レジスタ番号：3）をデコードし、その結果を制御回路１０１が保持する。
６．命令デコーダ１０３が、入力レジスタ１０２の第４フィールド（レジスタ番号：4）をデコードし、その結果を制御回路１０１が保持する。
７．レジスタファイル１０６は、レジスタ（R3）およびレジスタ（R4）の値をＡＬＵ１０７に出力する。
８．ＡＬＵ１０７は、レジスタ（R3）の値およびレジスタ（R4）の値を加算し、レジスタファイル１０６へ出力する。
９．レジスタファイル１０６は入力された値をレジスタ（R5）へ格納する。このとき、レジスタ（R5）の値は、10.125を表す値000000A2と、20.375を表す値00000146を加算した結果である、30.5を表す000001E8となっている。
１０．インクリメンタ１１０がプログラムカウンタ１０９の値を“１”加算する。
【００４６】
“ＡＤＤ．Ｌ  Ｒ５，Ｒ３，Ｒ４”が実行されることにより、レジスタＲ３に記憶された値000000A2と、レジスタＲ４に記憶された値00000146とが加算され、加算結果である値000001E8がレジスタＲ５に記憶される。
“ＦＭＴ  ８”命令の実行に際しては、以下の手順でＣＰＵ８が動作する。
【００４７】
１．プログラムカウンタ１０９が、次の命令をフェッチするメモリアドレス（“ＦＭＴ  ８”命令が格納されたメモリアドレス）を外部アドレスバスに出力する。
２．プログラムカウンタ１０９が示すアドレスから“ＦＭＴ  ８”命令（F08xxxxx）をフェッチし、入力レジスタ１０２に格納する。
３．命令デコーダ１０３が、入力レジスタ１０２の第１フィールド（命令コード：F）をデコードし、その結果、制御回路１０１はＦＭＴ命令の動作を開始する。
４．入力レジスタ１０２から第２フィールド（ビットシフト量：08）の値を数値表現形式記憶回路１０４に格納する。
５．インクリメンタ１１０がプログラムカウンタ１０９の値を“１”加算する。
【００４８】
“ＦＭＴ  ８”命令が実行されることにより、数値表現形式記憶回路１０４にビットシフト量“８”が設定され、以後の引数に対し、８ビット処理が施されることとなる。
“ＬＤ．Ｗ  Ｒ６，＃８２００００”命令の実行に際しては、以下の手順でＣＰＵ８が動作する。
【００４９】
１．プログラムカウンタ１０９が、次の命令をフェッチするメモリアドレス（“ＬＤ．Ｗ  Ｒ６，＃８２００００”命令が格納されたメモリアドレス）を外部アドレスバスに出力する。
２．プログラムカウンタ１０９が示すアドレスから“ＬＤ．Ｗ  Ｒ６，＃８２００００”命令（16xxC832）をフェッチし、入力レジスタ１０２に格納する。
３．命令デコーダ１０３が、入力レジスタ１０２の第１フィールド（命令コード：1）をデコードし、その結果、制御回路１０１はＬＤ．Ｗ命令の動作を開始する。
４．命令デコーダ１０３が、入力レジスタ１０２の第２フィールド（レジスタ番号：6）をデコードし、その結果を制御回路１０１が保持する。
５．入力レジスタ１０２から第４フィールド（定数値：C832）の値を引数変換回路１０５に出力する。
６．引数変換回路１０５は、数値表現形式記憶回路１０４から指示されている値８に従って、入力された値（C832）を左に８ビットシフトし、不足するビットには０を補う。結果として、引数変換回路１０５は、00C83200を出力する（値00C83200は、４ビットシフト固定小数点形式で、820000を表す数値である）。
７．引数変換回路１０５が出力する値00C83200を、レジスタファイル１０６のレジスタ（R6）に格納する。
８．インクリメンタ１１０がプログラムカウンタ１０９の値を“１”加算する。
【００５０】
“ＬＤ．Ｗ  Ｒ６，＃８２００００”命令が実行されることにより、命令中における引数C832が00C83200（１０進の８２００００）に変換された上で、レジスタＲ６に記憶される。
“ＬＤ．Ｗ  Ｒ７，＃１２８０００”命令の実行に際しては、以下の手順でＣＰＵ８が動作する。
【００５１】
１．プログラムカウンタ１０９が、次の命令をフェッチするメモリアドレス（“ＬＤ．Ｗ  Ｒ７，＃１２８０００”命令が格納されたメモリアドレス）を外部アドレスバスに出力する。
２．プログラムカウンタ１０９が示すアドレスから“ＬＤ．Ｗ  Ｒ７，＃１２８０００”命令（17xx1F40）をフェッチし、入力レジスタ１０２に格納する。
３．命令デコーダ１０３が、入力レジスタ１０２の第１フィールド（命令コード：1）をデコードし、その結果、制御回路１０１はＬＤ．Ｗ命令の動作を開始する。
４．命令デコーダ１０３が、入力レジスタ１０２の第２フィールド（レジスタ番号：7）をデコードし、その結果を制御回路１０１が保持する。
５．入力レジスタ１０２から第４フィールド（定数値：1F40）の値を引数変換回路１０５に出力する。
６．引数変換回路１０５は、数値表現形式記憶回路１０４から指示されている値８に従って、入力された値（1F40）を左に８ビットシフトし、不足するビットには０を補う。結果として、引数変換回路１０５は、001F4000を出力する（値001F4000は、４ビットシフト固定小数点形式で、128000を表す数値である）。
７．引数変換回路１０５が出力する値001F4000を、レジスタファイル１０６のレジスタ（R7）に格納する。
８．インクリメンタ１１０がプログラムカウンタ１０９の値を“１”加算する。
【００５２】
“ＬＤ．Ｗ  Ｒ７，＃１２８０００”命令が実行されることにより、命令中における引数1F40が001F4000（１０進の１２８０００）に変換された上でレジスタＲ７に記憶される。
“ＡＤＤ．Ｌ  Ｒ８，Ｒ６，Ｒ７”命令の実行に際しては、以下の手順でＣＰＵ８が動作する。
【００５３】
１．プログラムカウンタ１０９が、次の命令をフェッチするメモリアドレス（“ＡＤＤ．Ｌ  Ｒ８，Ｒ６，Ｒ７”命令が格納されたメモリアドレス）を外部アドレスバスに出力する。
２．プログラムカウンタ１０９が示すアドレスから“ＡＤＤ．Ｌ  Ｒ８，Ｒ６，Ｒ７”命令（2867xxxx）をフェッチし、入力レジスタ１０２に格納する。
３．命令デコーダ１０３が、入力レジスタ１０２の第１フィールド（命令コード：2）をデコードし、その結果、制御回路１０１はＡＤＤ．Ｌ命令の動作を開始する。
４．命令デコーダ１０３が、入力レジスタ１０２の第２フィールド（レジスタ番号：8）をデコードし、その結果を制御回路１０１が保持する。
５．命令デコーダ１０３が、入力レジスタ１０２の第３フィールド（レジスタ番号：6）をデコードし、その結果を制御回路１０１が保持する。
６．命令デコーダ１０３が、入力レジスタ１０２の第４フィールド（レジスタ番号：7）をデコードし、その結果を制御回路１０１が保持する。
７．レジスタファイル１０６は、レジスタ（R6）およびレジスタ（R7）の値をＡＬＵ１０７に出力する。
８．ＡＬＵ１０７は、レジスタ（R6）の値およびレジスタ（R7）の値を加算し、レジスタファイル１０６へ出力する。
９．レジスタファイル１０６は入力された値をレジスタ（R8）へ格納する。このとき、レジスタ（R8）の値は、820000を表す値00C83200と、128000を表す値001F4000を加算した結果である、948000を表す00E77200となっている。
１０．インクリメンタ１１０がプログラムカウンタ１０９の値を“１”加算する。
【００５４】
“ＡＤＤ．Ｌ  Ｒ８，Ｒ６，Ｒ７”命令が実行されることにより、レジスタＲ６に記憶された値00C83200と、レジスタＲ７に記憶された値001F4000とが加算され、加算結果である値00E77200がレジスタＲ８に記憶される。
このように動作することで、例えば整数部２０ビット小数部４ビットの４ビットシフト固定小数点形式の数字を扱うためには、従来、図４に示すように、２ワード分の長さを要する３２ビット型の定数値を扱う命令（LD.L）を使う必要があり、その分命令語が長くなっていたところ、本発明においては、図２に示すように、より短い表現形式の命令（１６ビット型等）を用いることができる。
【００５５】
即ち、上述のＦＭＴ命令を用いることで、本来は１６ビット長では表現しきれないような小さすぎる値（前半の４命令）や大きすぎる値（後半の４命令）を、引数変換回路１０５が４ビットシフト固定小数点形式の３２ビット長の値に変換する。その結果、より短い、１ワード分の長さで済む１６ビット型の定数値を扱う命令（LD.W）を使用できるようになり、全体の命令の長さを短くすることができる。
【００５６】
以上のように、本実施形態に係る情報処理装置１においては、ＣＰＵ８内に数値の表現形式を示す値を記憶する数値表現形式記憶回路１０４と、その数値表現形式に適合する形式に命令の引数を変換する引数変換回路１０５とを備えている。そして、データ長の異なる命令、例えば、文字画像を描画する処理における１画素未満の詳細な座標計算を行う命令（上記第２行から第４行の命令）と広範囲の座標計算を行う命令（上記第６行から第８行の命令）とを取り扱う場合に、数値表現形式を指定する命令を実行することにより、ＣＰＵ８の動作を切り換える。即ち、上記第２行から第４行の命令を実行するのに先立ち、数値表現形式を１画素未満の座標計算に適合させるための上記第１行の命令を実行し、上記第６行から第８行の命令を実行するのに先立ち、数値表現形式を広範囲の座標計算に適合させるための上記第５行の命令を実行することにより、ＣＰＵ８における引数の解釈の変更および引数のデータ長の変換が行われる。
【００５７】
したがって、データ長の異なる命令を取り扱う場合に、より短いデータ長を扱う命令を使用できるようになり、命令データ長を短くすることができると共に、ＣＰＵ８内において数値表現形式の管理およびデータ長の変換を行うことができるため、高速な処理を行うことが可能となる。
即ち、本実施形態に係る情報処理装置１によれば、データ長の異なる命令を効率的に処理することが可能となり、命令を記憶するためのメモリ領域を削減することでメモリコストを削減し、また、命令を読み出す際のメモリアクセス回数の減少によって消費電力を削減することができる。
【００５８】
＜第２実施形態＞
本実施形態に係る情報処理装置は、第１実施形態における情報処理装置の機能を、プロセッサ構造を汎用なものとしたまま、ソフトウェアによって実現するものである。
本実施形態における情報処理装置は、プロセッサとして汎用のものを用いる（即ち、第１実施形態における数値表現形式記憶回路１０４および引数変換回路１０５を備えていない）点を除き、情報処理装置全体の構成は第１実施形態と同様である。
したがって、第１実施形態における図１を参照して説明することとする。
なお、図１において、ＣＰＵ８の構成以外については第１実施形態と同様であるため、ＣＰＵ８の構成を主として説明する。
【００５９】
ＣＰＵ８は、外部記憶６に格納されている各種プログラムを読み込み、それらをメモリ４内に形成されるワークエリアに展開して各部２〜１２を制御する。
具体的には、ＣＰＵ８は、入力手段２から文字の描画指示が出力されると、文字描画処理を実行する。そして、文字描画処理によって、その文字の文字コードに基づいて描画命令データ（前記文字を構成する各要素それぞれを描画するための複数のニーモニック（命令と当該命令に付随する引数との組み合わせを示すデータ）からなるデータ、所定の順番でニーモニックが並べられたデータ）を取得し、その描画命令データからニーモニックを前記所定の順序に従って１つずつ取得し、そのニーモニックに基づいて、前記描画指示があった文字のビットマップを生成する。
【００６０】
また、ＣＰＵ８は、描画モードを設定するためのニーモニック（モード設定用ニーモニック）が取得された場合には、そのモード設定用ニーモニックに従って、後に取得される前記描画指示があった文字を構成する各要素に対応するニーモニック（要素対応ニーモニック）に含まれる座標値（ビット列）の取り扱い方法を設定する。
すなわち、描画命令データを構成するニーモニックは、モード設定用ニーモニックの後に、その描画モードに従って座標値を取り扱わせるニーモニックが配されている。モード設定用ニーモニックによって設定された描画モードは、メモリ４における所定の変数値として格納される。
【００６１】
ここで、モード設定用ニーモニックとしては、図５に示すように、ChangeRelInt、ChangeRelFix、ChangeAbsInt、及びChangeAbsFixが挙げられる。
ChangeRelIntは、要素対応ニーモニックの座標値を、直前に描画された要素の終点の座標値との相対座標を整数形式（整数部のみを含む形式）で表現したものとして扱うことを指示する。
【００６２】
ChangeRelFixは、要素対応ニーモニックの座標値を、直前に描画された要素の終点の座標値との相対座標を小数形式（整数部と小数部との両方を含む形式）で表現したものとして扱うことを指示する。
ChangeAbsIntは、要素対応ニーモニックの座標値を、絶対座標を整数形式で表現したものとして扱うことを指示する。
【００６３】
ChangeAbsFixは、要素対応ニーモニックの座標値を、絶対座標を小数形式で表現したものとして扱うことを指示する。
なお、図５において、EndOfCodeは、描画命令データを構成する最後のニーモニックであることを示すコードである。
また、要素対応ニーモニックとしては、図６〜図９に示すように、MoveTo_S、MoveTo_M、MoveTo_L、HorLineTo_S、HorLineTo_M、HorLineTo_L、VerLineTo_S、VerLineTo_M、VerLineTo_L、LineTo_S、LineTo_M、LineTo_L、ConicCurveTo_S、ConicCurveTo_M、ConicCurveTo_L、CubicCurveTo_S、CubicCurveTo_M、及びCubicCurveTo_Lが挙げられる。
【００６４】
MoveTo_S、MoveTo_M及びMoveTo_Lは、引数の数（２）及び座標値（Ｘ１、Ｙ１）を含むコードである。そして、最後に読み込まれたモード設定用ニーモニックがChangeRelInt 又はChangeRelFixである場合には、直前に描画された要素の終点からの相対座標が座標値（Ｘ１，Ｙ２）となる点に移動することを指示する。また、最後に読み込まれたモード設定用ニーモニックがChangeAbsInt 又はChangeAbsFixである場合には、絶対座標系で座標値（Ｘ１，Ｙ２）に移動することを指示する。
なお、本実施形態では、表示体１０の左上隅に絶対座標の原点が設定され、平面視右方向にＸ軸が形成され、平面視下方向にＹ軸が形成される。
【００６５】
HorLineTo_S、HorLineTo_M及びHorLineTo_Lは、引数の数（１）及びＸ方向の座標値Ｘ１を含むコードである。そして、最後に読み込まれたモード設定用ニーモニックがChangeRelInt 又はChangeRelFixである場合には、直前に描画された要素の終点を始点とし、その始点からＸ方向に長さＸ１の水平線を描画することを指示する。また、最後に読み込まれたモード設定用ニーモニックがChangeAbsInt 又はChangeAbsFixである場合には、直前に描画された要素の終点を始点とし、その始点とＹ座標が等しく且つＸ座標値がＸ１となる点を終点とする水平線を描画することを指示する。
【００６６】
VerLineTo_S、VerLineTo_M及びVerLineTo_Lは、引数の数（１）及びＹ方向の座標値Ｙ１を含むコードである。そして、最後に読み込まれたモード設定用ニーモニックがChangeRelInt 又はChangeRelFixである場合には、直前に描画された要素の終点を始点とし、その始点からＹ方向に長さＹ１の垂直線を描画することを指示する。また、最後に読み込まれたモード設定用ニーモニックがChangeAbsInt 又はChangeAbsFixである場合には、直前に描画された要素の終点を始点とし、その始点とＸ座標が等しく且つＹ座標値がＹ１となる点を終点とする垂直線を描画することを指示する。
【００６７】
LineTo_S、LineTo_M及びLineTo_Lは、引数の数（２）及び１つの座標値（Ｘ１、Ｙ１）を含むコードである。そして、最後に読み込まれたモード設定用ニーモニックがChangeRelInt 又はChangeRelFixである場合には、直前に描画された要素の終点を始点とし、その始点からの相対座標が座標値（Ｘ１、Ｙ１）となる点を終点とする直線を描画することを指示する。また、最後に読み込まれたモード設定用ニーモニックがChangeAbsInt 又はChangeAbsFixである場合には、直前に描画された要素の終点を始点とし、座標値（Ｘ１、Ｙ１）を終点とする直線を描画することを指示する。
【００６８】
ConicCurveTo_S、ConicCurveTo_M及びConicCurveTo_Lは、引数の数（４）及び座標値（Ｘ１、Ｙ１）（Ｘ２、Ｙ２）を含むコードである。そして、最後に読み込まれたモード設定用ニーモニックがChangeRelInt 又はChangeRelFixである場合には、直前に描画された要素の終点を始点とし、その始点からの相対座標が座標値（Ｘ１、Ｙ１）となる点を制御点とし、前記制御点からの相対座標が座標値（Ｘ２、Ｙ２）となる点を終点とする２次ベジエ曲線を描画することを指示する。また、最後に読み込まれたモード設定用ニーモニックがChangeAbsInt 又はChangeAbsFixである場合には、直前に描画された要素の終点を始点とし、座標値（Ｘ１、Ｙ１）を制御点とし、座標値（Ｘ２、Ｙ２）を終点とする２次ベジエ曲線を描画することを指示する。
【００６９】
CubicCurveTo_S、CubicCurveTo_M及びCubicCurveTo_Lは、引数の数（６）及び座標値（Ｘ１、Ｙ１）（Ｘ２、Ｙ２）（Ｘ３、Ｙ３）を含むコードである。そして、最後に読み込まれたモード設定用ニーモニックがChangeRelInt 又はChangeRelFixである場合には、直前に描画された要素の終点を始点とし、その始点からの相対座標が座標値（Ｘ１、Ｙ１）となる点を第一制御点とし、前記第一制御点からの相対座標が座標値（Ｘ２、Ｙ２）となる点を第二制御点とし、前記第二制御点からの相対座標が座標値（Ｘ３、Ｙ３）となる点を終点とする３次ベジエ曲線を描画することを指示する。また、最後に読み込まれたモード設定用ニーモニックがChangeAbsInt 又はChangeAbsFixである場合には、直前に描画された要素の終点を始点とし、座標値（Ｘ１、Ｙ１）を第一制御点とし、座標値（Ｘ２、Ｙ２）を第二制御点とし、（Ｘ３、Ｙ３）を終点とする３次ベジエ曲線を描画することを指示する。
【００７０】
また、MoveTo_S、HorLineTo_S、VerLineTo_S、LineTo_S、ConicCurveTo_S、CubicCurveTo_Sにあっては、最後に読み込まれたモード設定用ニーモニックがChangeRelInt又はChangeAbsIntである場合には、座標値として７ビットのビット列を用いている。また、最後に読み込まれたモード設定用ニーモニックがChangeRelFix又はChangeAbsFixである場合には、座標値として整数部分に３ビットのビット列を用い且つ小数部分に４ビットのビット列を用いている。
【００７１】
MoveTo_M、HorLineTo_M、VerLineTo_M、LineTo_M、ConicCurveTo_M、CubicCurveTo_Mは、最後に読み込まれたモード設定用ニーモニックがChangeRelInt又はChangeAbsIntである場合には、座標値として１０ビットのビット列を用いている。また、最後に読み込まれたモード設定用ニーモニックがChangeRelFix又はChangeAbsFixである場合には、座標値として整数部分に６ビットのビット列を用い且つ小数部分に４ビットのビット列を用いている。
【００７２】
MoveTo_L、HorLineTo_L、VerLineTo_L、LineTo_L、ConicCurveTo_L及びCubicCurveTo_Lは、最後に読み込まれたモード設定用ニーモニックがChangeRelInt又はChangeAbsIntである場合には、座標値として１６ビットのビット列を用いている。また、最後に読み込まれたモード設定用ニーモニックがChangeRelFix又はChangeAbsFixである場合には、座標値として整数部分に２０ビットのビット列を用い且つ小数部分に４ビットのビット列を用いている。
【００７３】
＜ＣＰＵの動作＞
次に、ＣＰＵ８で実行される文字描画処理を図１０のフローチャートに基づいて説明する。
この文字描画処理は、文字の描画指示があると実行される処理であって、まず、そのステップＳ１０１で、前記描画指示された文字の文字コードを取得し、その文字コードをフォントデータのインデックスに変換する。
【００７４】
次にステップＳ１０２に移行して、前記ステップＳ１０１で変換されたインデックスに基づいて描画命令データ（所定の順番に従って並べられた、複数のニーモニックからなるデータ）を取得する。
次にステップＳ１０３に移行して、前記ステップＳ１０２で取得された描画命令データに基づいて、前記描画指示があった文字のビットマップを生成するビットマップ生成処理（後述）を実行してから、この演算処理を終了する。
【００７５】
次に、前記文字描画処理のステップＳ１０３で実行されるビットマップ生成処理を図１１のフローチャートに基づいて説明する。
このビットマップ生成処理は、まず、そのステップＳ２０１で、処理対象である画素を示す座標値（現在座標値）ｖを（０、０）とする。
次にステップＳ２０２に移行して、描画モードを示すパラメータModeを（Rel、Int）（モード設定用ニーモニックChanegeRelIntが読み込まれた状態）とする。
【００７６】
次にステップＳ２０３に移行して、前記ステップＳ１０２で取得された描画命令データからニーモニックを所定の順番に従って１つ取得する。
次にステップＳ２０４に移行して、前記ステップＳ２０３で取得されたニーモニックがEndOfCodeであるか否かを判定する。そして、EndOfCodeである場合には（Ｙｅｓ）ステップＳ２０６に移行し、EndOfCodeでない場合には（Ｎｏ）ステップＳ２０５に移行する。
【００７７】
前記ステップＳ２０５では、前記ステップＳ２０３で取得されたニーモニックに基づいて、前記描画指示があった文字の輪郭を示す輪郭データを生成する輪郭データ生成処理（後述）を実行してから、前記ステップＳ２０３に移行する。
一方、前記ステップＳ２０６では、前記ステップＳ２０５で生成された輪郭データに基づいて、前記描画指示があった文字のビットマップを生成してから、この演算処理を終了する。
【００７８】
次に、前記ビットマップ生成処理のステップＳ２０５で実行される輪郭データ生成処理を図１２のフローチャートに基づいて説明する。
この輪郭データ生成処理は、まず、そのステップＳ３０１で、前記ステップＳ２０３で取得されたニーモニックがChangeRelInt、ChangeRelFix、ChangeAbsInt、ChangeAbsFix、及びEndOfCodeのいずれかであるか否かを判定する。そして、ChangeRelInt等のいずれかである場合には（Ｙｅｓ）ステップＳ３０２に移行し、ChangeRelInt等のいずれでもない場合には（Ｎｏ）ステップＳ３０３に移行する。
【００７９】
前記ステップＳ３０２では、前記ステップＳ２０３で取得されたニーモニックに応じてパラメータModeを設定してから、この演算処理を終了する。
一方、前記ステップＳ３０３では、前記ステップＳ２０３で取得されたニーモニックから引数の数を取得し、座標値の数を示すパラメータargnumとする。
次にステップＳ３０４に移行して、前記ステップＳ３０３で設定されたパラメータargnumが「０」であるか否かを判定する。そして、「０」である場合には（Ｙｅｓ）ステップＳ３１３に移行し、「０」でない場合には（Ｎｏ）ステップＳ３０５に移行する。
【００８０】
前記ステップＳ３０５では、前記ステップＳ２０３で取得されたニーモニックから座標値を所定の順番に従って１つ取得する。
次にステップＳ３０６に移行して、前記ステップＳ３０２で設定されたModeにIntが含まれるか否かを判定する。そして、Intが含まれる場合には（Ｙｅｓ）ステップＳ３０７に移行し、Intが含まれない場合には（Ｎｏ）ステップＳ３０８に移行する。
【００８１】
前記ステップＳ３０７では、前記ステップＳ３０５で取得された座標値（ビット列）を整数値ｄに変換してから、ステップＳ３０９に移行する。
一方、前記ステップＳ３０７では、前記ステップＳ３０５で取得された座標値を小数値ｄに変換してから、前記ステップＳ３０９に移行する。
前記ステップＳ３０９では、前記ステップＳ３０２で設定されたModeにRelが含まれるか否かを判定する。そして、Relが含まれる場合には（Ｙｅｓ）ステップＳ３１０に移行し、Relが含まれていない場合には（Ｎｏ）ステップＳ３１１に移行する。
【００８２】
前記ステップＳ３１０では、前記ステップＳ３０７又はＳ３０８で変換された座標値ｄをそれまでの現在座標値ｖに加算して、新しい現在座標値ｖを算出してから、ステップＳ３１２に移行する。
一方、前記ステップＳ３１１では、前記ステップＳ３０７又はＳ３０８で変換された座標値ｄを新しい現在座標値ｖとしてから、前記ステップＳ３１２に移行する。
【００８３】
前記ステップＳ３１２では、パラメータargnumから「１」を減算して、新しいargnumを算出してから、前記ステップＳ３０４に移行する。
一方、前記ステップＳ３１３では、前記ステップＳ３１０又はＳ３１１で順次設定された現在座標値ｖに基づいて、前記描画指示のあった文字の輪郭データを生成してから、この演算処理を終了する。
なお、前記ステップＳ２０３で取得されたニーモニックにMoveToが含まれる場合には、座標値の計算だけを行い、文字の輪郭データは生成しない。
【００８４】
＜情報処理装置の動作＞
次に、本実施形態の情報処理装置１の動作を具体的状況に基づいて説明する。
まず、利用者が文字の描画を指示する操作を行い、入力手段２によって、文字の描画指示がＣＰＵ８に出力されたとする。すると、ＣＰＵ８によって、文字描画処理が実行され、図１０に示すように、まず、そのステップＳ１０１で、前記描画指示された文字の文字コードが取得され、その文字コードがフォントデータのインデックスに変換され、ステップＳ１０２で、そのインデックスに基づいて描画命令データが取得され、ステップＳ１０３で、その描画命令データに基づいてビットマップ生成処理を実行される。
【００８５】
ビットマップ生成処理が実行されると、図１１に示すように、まず、そのステップＳ２０１で、処理対象である画素を示す座標値（現在座標値）ｖが（０、０）とされ、ステップＳ２０２で、描画モードを示すパラメータModeが（Rel、Int）とされ、ステップＳ２０３で、前記取得された描画命令データからニーモニックが所定の順番に従って１つ取得され、ステップＳ２０４の判定が「Ｎｏ」となり、ステップＳ２０５で、前記取得されたニーモニックに基づいて輪郭データ生成処理が実行される。
【００８６】
図１３に示すように、前記取得されたニーモニックがChangeRelIntであった場合、輪郭データ生成処理が実行されると、図１２に示すように、まず、そのステップＳ３０１の判定が「Ｙｅｓ」となり、ステップＳ３０２で、前記取得されたニーモニックに応じてパラメータMode（Rel、Int）が設定された後、この演算処理を終了する。
そして、前記ステップＳ２０３及びＳ２０４を経て、次のニーモニックが取得され、前記ステップＳ２０５で、そのニーモニックに基づいて輪郭データ生成処理が実行される。
【００８７】
前記取得されたニーモニックがMoveTo_Sであった場合、輪郭データ生成処理が実行されると、図１２に示すように、前記ステップＳ３０１の判定が「Ｎｏ」となり、ステップＳ３０３で、前記取得されたニーモニックから引数の数（２）が取得され、座標値の数を示すパラメータargnumとされ、ステップＳ３０４の判定が「Ｎｏ」となり、ステップＳ３０５で、前記取得されたニーモニックから座標値が所定の順番に従って１つ取得され、ステップＳ３０６の判定が「Ｙｅｓ」となり、ステップＳ３０７で、前記取得された座標値が整数値ｄに変換され、ステップＳ３０９の判定が「Ｙｅｓ」となり、ステップＳ３１０で、前記変換された座標値ｄがそれまでの現在座標値ｖに加算され、新しい現在座標値ｖが算出され、ステップＳ３１２で、パラメータargnum（１）から「１」が減算され、新しいargnum（０）が算出され、前記ステップＳ３０４の判定が「Ｙｅｓ」となり、ステップＳ３１３を経た後、この演算処理を終了する。
【００８８】
そして、前記ステップＳ２０３及びＳ２０４を経て、次のニーモニックが取得され、上記フローが繰り返し実行され、文字の輪郭データが生成される。
上記フローが繰り返されるうちに、EndOfCodeが取得されたとする。すると、前記ステップＳ２０４の判定が「Ｙｅｓ」となり、ステップＳ２０６で、前記生成された輪郭データに基づいて、前記描画指示があった文字のビットマップが生成される。
そして、表示コントローラ９によって、その生成されたビットマップが表示体１０に描画され、前記描画指示された文字が表示体１０に表示される。
【００８９】
このように、本実施形態の情報処理装置にあっては、ChangeRelInt、ChangeRelFixが取得された場合、後に取得されるニーモニックに含まれる座標値を、直前に描画した要素の終点の座標値との相対座標の形式で表現したものとして扱い、ChangeAbsInt、ChangeAbsFixが取得された場合、後に取得されるニーモニックに含まれる座標値を、絶対座標の形式で表現したものとして扱うようにした。また、ChangeRelInt、ChangeAbsIntが取得された場合、後に取得されるニーモニックに含まれる座標値を、整数部のみで表現したものとして扱い、ChangeRelFix、ChangeAbsFixが取得された場合、後に取得されるニーモニックに含まれる座標値を、整数部と小数部との組で表現したものとして扱うようにした。そのため、ニーモニックに含まれる座標値を相対座標（又は整数部のみ）で表現したものとして取り扱わせるニーモニックと絶対座標（又は整数部と小数部との組）で表現したものとして取り扱わせるニーモニックとで同じニーモニックを用いることができるため、ニーモニックの種類が少なくて済み、その結果、描画命令データの圧縮率を向上することができる。
【００９０】
なお、図１４に示すように、ChangeRelInt等のモード設定用ニーモニックを用いることで描画命令データの累計ビット数は当該モード設定用ニーモニックの分増加するものの、通常、描画モードの変更の頻度は低いため、ビット数の増加量は僅かである。
【００９１】
また、ChangeRelFix、ChangeAbsFixが取得された場合には、ChangeRelInt、ChangeAbsIntが取得された場合に比べ、後に取得されるニーモニックに含まれる座標値を、より多くのビット幅（２４ビット）が割り当てられているものとして扱うようにした。そのため、例えば、図形を描画するためのニーモニックの取得前に、ChangeRelFix、ChangeAbsFixを取得させることで、前記ニーモニックに含まれる座標値に２４ビットを割り当てることができ、表示体１０全体に図形を描画する際に、拡大・縮小率を変更することなく、緻密な描画が可能になる。また、例えば、直線やベジエ曲線を分割せずに済み、その結果、ニーモニックの総数が増えることを防止することができる。
【００９２】
＜描画データの生成方法＞
次に、本発明の情報処理装置で利用される描画命令データの生成方法について説明する。
【００９３】
＜ChangeRelIntによる生成方法＞
図１５は、ChangeRelIntで描画モードが設定された描画命令データを生成するRelInt描画命令生成処理を示すフローチャートである。
このRelInt描画命令生成処理は、描画命令生成用のコンピュータで実行される処理であって、まず、そのステップＳ４０１で、書き込みバッファに格納されているデータを全て破棄する（書き込みバッファをクリアする）。
【００９４】
次にステップＳ４０２に移行して、描画命令データを構成する最初のニーモニックとしてChangeRelIntを格納する。
次にステップＳ４０３に移行して、現在座標値ｖを（０、０）とする。
次にステップＳ４０４に移行して、描画命令データの構成に用いるニーモニックが残っているか否かを判定する。そして、残っている場合には（Ｙｅｓ）ステップＳ４０５に移行し、残っていない場合には（Ｎｏ）ステップＳ４０６に移行する。
【００９５】
前記ステップＳ４０５では、前記ステップＳ４０４で残っていると判定されたニーモニックに対応するデータを書き込みバッファに格納するRelInt命令格納処理（後述）を実行してから、前記ステップＳ４０４に移行する。
一方、前記ステップＳ４０６では、描画命令データを構成する最後のニーモニックとしてEndOfCodeを格納する。
【００９６】
次にステップＳ４０７に移行して、前記ステップＳ４０５の命令格納処理で書き込みバッファに格納されたデータを、描画命令データを構成する要素として出力してから（書き込みバッファをフラッシュしてから）、この演算処理を終了する。
次に、前記RelInt描画命令生成処理のステップＳ４０５で実行されるRelInt命令格納処理を図１６のフローチャートに基づいて説明する。
このRelInt命令格納処理は、まず、そのステップＳ５０１で、前記ステップＳ４０４で残っていると判定されたニーモニックの種類を判定する。
次にステップＳ５０２に移行して、変数ｎを「０」とする。
【００９７】
次にステップＳ５０３に移行して、前記ステップＳ５０１で種類が判定されたニーモニックの引数（例えば、Ｘ１、Ｙ１等）を後述するステップＳ５０４〜５０７で全て処理したか否かを判定する。そして、引数を全て処理した場合には（Ｙｅｓ）ステップＳ５０８に移行し、全ては処理していない場合には（Ｎｏ）ステップＳ５０４に移行する。
次にステップＳ５０４に移行して、前記ステップＳ５０１で種類が判定されたニーモニックの引数argを取得する。
【００９８】
次にステップＳ５０５に移行して、現在座標値ｖとの差分ｄ［ｎ］を算出する。
次にステップＳ５０６に移行して、前記ステップＳ５０４で取得された引数argを新しい現在座標値ｖとする。
次にステップＳ５０７に移行して、変数ｎに「１」を加算して、新しい変数ｎを算出してから、前記ステップＳ５０３に移行する。
【００９９】
一方、前記ステップＳ５０８では、引数bit長に対応する命令を取得する。
次にステップＳ５０９に移行して、前記ステップＳ５０１で判定された種類に応じた命令コードを書き込みバッファに格納させる。
次にステップＳ５１０に移行して、前記ステップＳ５０５で算出された差分ｄ［ｎ］それぞれを書き込みバッファに格納させる。
【０１００】
次にステップＳ５１１に移行して、前記ステップＳ５０９又はＳ５１０で書き込みバッファに格納されたデータの総量が３２ビット以上であるか否かを判定する。そして、３２ビット以上である場合には（Ｙｅｓ）ステップＳ５１２に移行し、３２ビットより少ない場合には（Ｎｏ）この演算処理を終了する。
前記ステップＳ５１２では、前記ステップＳ５０９又はＳ５１０で書き込みバッファに格納されたデータを、描画命令データの構成要素として３２ビット分出力してから、前記ステップＳ５１１に移行する。
【０１０１】
＜ChangeAbsIntによる生成方法＞
図１７は、ChangeAbsIntで描画モードが設定された描画命令データを生成するAbsInt描画命令生成処理を示すフローチャートである。
このAbsInt描画命令生成処理は、描画命令生成用のコンピュータで実行される処理であって、まず、そのステップＳ６０１で、描画命令データを構成する最初のニーモニックとしてChangeAbsIntを格納する。
【０１０２】
次にステップＳ６０２に移行して、描画命令データの構成に用いるニーモニックが残っているか否かを判定する。そして、残っている場合には（Ｙｅｓ）ステップＳ６０３に移行し、残っていない場合には（Ｎｏ）ステップＳ６０４に移行する。
前記ステップＳ６０３では、前記ステップＳ６０２で残っていると判定されたニーモニックに対応するデータを書き込みバッファに格納するAbsInt命令格納処理（後述）を実行してから、前記ステップＳ６０２に移行する。
【０１０３】
一方、前記ステップＳ６０４では、描画命令データを構成する最後のニーモニックとしてEndOfCodeを格納してから、この演算処理を格納する。
次に、前記AbsInt描画命令生成処理のステップＳ６０３で実行されるAbsInt命令格納処理を図１８のフローチャートに基づいて説明する。
このAbsInt命令格納処理は、まず、そのステップＳ７０１で、前記ステップＳ６０２で残っていると判定されたニーモニックの種類を判定する。
【０１０４】
次にステップＳ７０２に移行して、前記ステップＳ７０１で判定された種類に応じた命令コードを書き込みバッファに格納させる。
次にステップＳ７０３に移行して、前記ステップＳ７０１で種類が判定されたニーモニックの引数（例えば、Ｘ１、Ｙ１等）を後述するステップＳ７０４、７０５で全て処理したか否かを判定する。そして、引数を全て処理した場合には（Ｙｅｓ）この演算処理を終了し、全ては処理していない場合には（Ｎｏ）ステップＳ７０４に移行する。
【０１０５】
次にステップＳ７０４に移行して、前記ステップＳ７０１で種類が判定されたニーモニックの引数argを取得する。
次にステップＳ７０５に移行して、前記ステップＳ７０４で取得された引数argそれぞれを書き込みバッファに格納させてから、前記ステップＳ７０３に移行する。
そして、このようなフロー構成とすることにより、RelInt描画命令生成処理或いはChangeAbsInt描画命令生成処理を実行することで、描画命令データとして、モード設定用ニーモニック（ChangeRelInt、ChangeAbsInt）の後に、その描画モードに従って座標値を取り扱わせるニーモニックが配されたものを生成することができる。
【０１０６】
なお、上記実施形態では、図１２のステップＳ３０１及びＳ３０２が特許請求の範囲に記載の設定機能を構成し、以下同様に、図１２のステップＳ３０６〜Ｓ３１１が表示機能を構成し、図１のＣＰＵ８、図１２のステップＳ３０１及びＳ３０２が設定手段を構成し、図１のＣＰＵ８、表示コントローラ９、表示体１０、図１２のステップＳ３０６〜Ｓ３１１が表示手段を構成する。
また、本発明の表示プログラム、データ構造及び情報処理装置は、上記実施の形態の内容に限定されるものではなく、本発明の趣旨を逸脱しない範囲で適宜変更可能である。
【０１０７】
上記実施形態では、モード設定用ニーモニック（ChangeRelInt、ChangeAbsInt等）が取得された場合に、後に取得されるニーモニックに含まれる座標値を相対座標及び絶対座標のいずれかの形式で表現したものとして扱う例を示したが、これに限られるものではない。例えば、描画モードとして、新たに取得された座標値を低圧縮座標指定（ニーモニックの命令ビット長と座標ビット長との合計が８、１６、３２等、ソフトウェア処理にとって扱いやすいビット数の倍数になるように調整された命令体系）で表現されたものとして扱うモードと、新たに取得された座標値を高圧縮座標指定（低圧縮座標指定以外の命令体系）で表現されたものとして扱うモードとを有し、特定のモード設定用ニーモニックを取得された場合に、後に取得されるニーモニックに含まれる座標値を前記低圧縮座標指定及び前記高圧縮座標指定のいずれかの形式で表現したものとして扱うようにしてもよい。そのようにすれば、低圧縮座標指定を用いることにより、ソフトウェアで動的に命令を生成する際、ビット演算が不要になるため、高速に処理ができるようになる。
【図面の簡単な説明】
【０１０８】
【図１】第１実施形態の情報処理装置１の内部構成を示すブロック図である。
【図２】メモリ４に格納されているプログラムを示す図である。
【図３】ＣＰＵ８の内部構成を示すブロック図である。
【図４】メモリ４に格納されているプログラムの従来における記述形式を示す図である。
【図５】モード設定用ニーモニックを説明するための説明図である。
【図６】ChangeRelIntが取得された後の要素対応ニーモニックの取り扱いを説明するための説明図である。
【図７】ChangeAbsIntが取得された後の要素対応ニーモニックの取り扱いを説明するための説明図である。
【図８】ChangeRelFixが取得された後の要素対応ニーモニックの取り扱いを説明するための説明図である。
【図９】ChangeAbsFixが取得された後の要素対応ニーモニックの取り扱いを説明するための説明図である。
【図１０】文字描画処理のフローを示すフローチャートである。
【図１１】ビットマップ生成処理のフローを示すフローチャートである。
【図１２】輪郭データ生成処理のフローを示すフローチャートである。
【図１３】本実施形態の動作を説明するための説明図である。
【図１４】本実施形態の動作を説明するための説明図である。
【図１５】RelInt描画命令生成処理のフローを示すフローチャートである。
【図１６】RelInt命令格納処理のフローを示すフローチャートである。
【図１７】AbsInt描画命令生成処理のフローを示すフローチャートである。
【図１８】AbsInt命令格納処理のフローを示すフローチャートである。
【符号の説明】
【０１０９】
１は情報処理装置、２は入力手段、３は入力手段コントローラ、４はメモリ、５はメモリコントローラ、６は外部記憶、７は外部記憶コントローラ、８はＣＰＵ、９は表示コントローラ、１０は表示体、１１はバスコントローラ、１２は電源コントローラ、１０１は制御回路、１０２は入力レジスタ、１０３は命令デコーダ、１０４は数値表現形式記憶回路、１０５は引数変換回路、１０６はレジスタファイル、１０７はＡＬＵ、１０８は出力レジスタ、１０９はプログラムカウンタ、１１０はインクリメンタ
【図１】
2007249666.tif 000003
【図２】
2007249666.tif 000004
【図３】
2007249666.tif 000005
【図４】
2007249666.tif 000006
【図５】
2007249666.tif 000007
【図６】
2007249666.tif 000008
【図７】
2007249666.tif 000009
【図８】
2007249666.tif 000010
【図９】
2007249666.tif 000011
【図１０】
2007249666.tif 000012
【図１１】
2007249666.tif 000013
【図１２】
2007249666.tif 000014
【図１３】
2007249666.tif 000015
【図１４】
2007249666.tif 000016
【図１５】
2007249666.tif 000017
【図１６】
2007249666.tif 000018
【図１７】
2007249666.tif 000019
【図１８】
2007249666.tif 000020