JPH08511640A - プロセッサにおけるさまざまな長さの文字列中のターミネーション文字を発見する方法および装置 - Google Patents

プロセッサにおけるさまざまな長さの文字列中のターミネーション文字を発見する方法および装置

Info

Publication number
JPH08511640A
JPH08511640A JP7502200A JP50220095A JPH08511640A JP H08511640 A JPH08511640 A JP H08511640A JP 7502200 A JP7502200 A JP 7502200A JP 50220095 A JP50220095 A JP 50220095A JP H08511640 A JPH08511640 A JP H08511640A
Authority
JP
Japan
Prior art keywords
register
character
address
significant bit
found
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP7502200A
Other languages
English (en)
Other versions
JP3637922B2 (ja
Inventor
ブイ. ジェームス、デイビット
ディー. ネミロフスキー、マリオ
Original Assignee
アップル コンピューター インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アップル コンピューター インコーポレーテッド filed Critical アップル コンピューター インコーポレーテッド
Publication of JPH08511640A publication Critical patent/JPH08511640A/ja
Application granted granted Critical
Publication of JP3637922B2 publication Critical patent/JP3637922B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/74Selecting or encoding within a word the position of one or more bits having a specified value, e.g. most or least significant one or zero detection, priority encoders
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 本発明は可変長のバイト列中の特定の文字または値のアドレスを捜し出す命令に関する。列の1部分中のオフセットが指定され、その列部分につきその指定されたオフセットで始まる特定文字が最初に発生することを求めてサーチされる。その特定文字が発見されたら次にその特定文字が表示され、その特定文字のアドレスまたはオフセットが保存されるかその他の方法で表示される。特定文字が発見されないときは、特定文字不存在の表示がされ、既に調べた列部分のすぐ次の文字を指摘するのに都合のよいアドレスまたはオフセットが保存されるかその他の方法で表示される。その特定文字は1または2以上のバイト長でもよく、予め定められた固定値でもあるいは常変する任意値でもよい。本発明は算術命令を行うのと同程度の時間で実行することができる。しかも本発明は別のロードや記憶命令と組合せることもでき、複写オペレーションを本発明の命令順序を1回または2回以上援用することによって行うこともできる。

Description

【発明の詳細な説明】 プロセッサにおけるさまざまな長さの文字列中のターミネーション文字を発見 する方法および装置発明の分野 本発明はターミネーション文字で終わるバイト列をコンピュータ上で処理する 方法に関する。より詳細にはコンピュータで使うバイト列中のターミネーション 文字を発見する命令に関する。発明の背景 コンピュータで実行される通常のオペレーションは、メモリー内の1アドレス 、「ソース」、からメモリー中の他のアドレス、「ターゲット」、へバイトまた は文字の列[string]をコピーすることである。バイト列は、不変長か可変長か のいずれかである。普通はバイト列が可変長のときは、代表例としてゼロバイト と呼ばれる空文字のようなターミネーション文字がバイト列の最後をマークする のに使われている。この場合バイト列は、その列の最初のバイトとターミネーシ ョン文字とのアドレスによって輪郭つけられるか、その他の方法で限定されてい るわけである。 コピーオペレーションが単一の命令としてコンピュータで行われるときは、終 了するまでに通常複数のサイクルを経る。しかしRISCプロセッサはこのよう なオペレーションを実行するのに、各命令が単一サイクルで実行される単一命令 順序[an instruction sequence]を使う。 IBM社のRISC System/6000プロセッサでは、所定長さの列または所定のター ミネーション文字列が、可変長のバイト列をコピーするのに使われている。この 方法だと、列の最初から始まってターミネーション文字までにある所定数のバイ トがコピーされる。「Load String And Compare Byte Indexed」(lscbx)命令 、すなわち「列をロードしてインデックスされたバイトを比較せよ」という命令 が、 記憶装置内の連続バイトを連続レジスタ中にロードするのに使われ、次にストア ストリング命令[a store string instruction]がこれらのバイトをレジスタか ら再び記憶装置へと戻しコピーするのに使われる。しかしこの方法は命令を完遂 するのに複数のサイクルを使うのが代表的である。このプロセッサにおける大半 の他の命令は単一サイクルで実行されるように設計されているのであるから、こ れはハードウエアや例外的操作の複雑さを増大させることになる。 RISC System/6000のlscbx命令についてはIBM社発行の「AIX Virsion 3.2 f or RISC System/6000,Assembler Language Reference」第2版(1992年1月)の 第5-156〜第5-158に記載されている。RISC System/6000はIBM社所有の商標 である。またIBMはInternational Business Machines Corporationの登録商 標である。 Hewlett Packard Company社のPrecision Architecture(HP-PA)で使われてい る方法では、UNIT XOR命令によって、あるワードがゼロバイトを含むか否かを発 見することができる。この方法によれば、排他的論理和のオペレーションが実行 されるとハードウエア探知論理[hardware detection logic]がゼロバイト値を 求めて得られた結果の各バイトをチェックする。得られたワード中のバイトのい ずれかがゼロか否かを示すように状態結果[status result]をセットすること ができる。しかしこの命令はゼロバイトのある場所を示すことはしない。ゼロバ イトのある実際の場所を探知するにはもう一つの命令を使わなければならない。 しかもテストされているワードと使用禁止マスク領域につき論理和を正しく実 行することによって、先頭バイトすなわちコピーされているバイト列の開始する アドレスの前にあるデータバイトを扱うのにもう一つ別の命令が使われる。先頭 バイトにマスクを作りこれを使うことのオーバーヘッドは、小さいバイト列で実 行されるコピーオペレーションにとって有益なものとなり得る。 Hewlett Packard Company社のPrecision ArchitectureおよびUNIT XOR命令に 関する基本的解説は“PA-RISC 1.1 Architecture and Instruction Set Referen ce Manual”,Hewlett Packard Company,Chapter 5,pgs.5-7,5-109(1990) 参照のこと。 Advanced Micro Devices,Inc.(AMD)のAM29050マイクロプロセッサーで使 われている方法では、任意ターミネーション状態[an arbitrary termination c ondition]につきチェックするため二つのレジスタ間のバイトごとの比較を行う のにCPBYTE命令が使われている。それら二つのレジスタの一方はチェックされて いる列部分を含み、他方はターミネーション文字の複製されたコピーを含む。比 較結果はそのターミネーション文字が発見されたか否かを示す。PA-RISC 1.1方 法による場合のように、追加の命令がターミネーション文字の在りか及びコピー される列の開始アドレスを決定するのに使われる。 CPBYTE命令については“Am29050 Microprocessor,User's Manual”,Advance d Micro Devices,Inc.,(1991),page 8-38参照のこと。発明の概要 本発明は可変長のバイト列中の特定の文字ないし特定の値のアドレスを捜し出 すための命令に関する。要するに本発明によれば、列の1部分に入るオフセット が指定され、その列部分が指定されたオフセットで始まる特定の文字の最初に発 生するのを求めてサーチされる。その特定の文字が捜し出されたら、その特定文 字が存在することが示され、その特定文字のアドレスまたはオフセットが保存さ れるかその他の方法で示される。特定文字が発見されなかったときは、特定文字 不存在の表示がされ、既に調べ終わった列部分のすぐ次の文字を指摘するのに都 合のよいアドレスまたはオフセットが保存されるかその他の方法で示される。い ずれの場合も、保存その他の方法で示されるアドレスまたはオフセットは、例え ばレジスタ、メモリーなどの記憶装置に保存することができる。 特定文字は典型的には、文字列とも呼ばれる可変長バイト列を終了させるのに 使われるターミネーション文字である。ターミネーション文字の長さは1バイト または2以上のバイトである。ターミネーション文字が1バイト以上の長さのと きは、その列内に並べられるのが好ましい。例えば0〜7とナンバー付けされた バイトを有する8バイト列にあっては、2バイトのターミネーション文字が0〜 1、2〜3、4〜5または6〜7バイト中にあるのが好ましい。 典型的にはターミネーション文字は空文字である。空文字の値は通常、ASCII における場合のようにゼロバイトであるが、これは言語特異的で、異なる言語に よって値は異なるものとなる。 ターミネーション文字は所定の固定値であるか、または動的な任意値かである 。動的なターミネーション文字の値はコピーオペレーション間で変化し得るが、 所定の固定値をもったターミネーション文字は常に一定である。 ターミネーション文字が固定値のときは、上述の本発明はそのターミネーショ ン文字を探知するように部分的に改変される。換言すれば、本発明に係るコンピ ュータはその具体的なターミネーション文字を探知するように設置される[hard wired]。 一方、ターミネーション文字が本発明のコンピュータのビルドプロセス[buil d process]中にあって知られていないとき、または使われる動的ターミネーシ ョン文字を許容することが望まれるときは、テストされている列のその部分を有 するデータと基準値の各バイトがその具体的なターミネーション文字を含んでい る基準値間にブール論理和[a boolean exclusive-or]が行われる。もしそれが 使われている回路技術で実行可能なら、この排他的論理和がその命令自体中で実 行することができる。あるいはその命令が実行される前に実行することができる 。 ターミネーション文字は典型的にはゼロバイトであるから、ゼロバイトを探知 するように特別に設計された命令を有することが好ましい。この場合、ゼロバイ ト以外の文字を探知する命令を使用することが望まれるときは、排他的論理和オ ペレーションがその命令を実行する前に行われる。このようにターミネーション 文字がゼロバイトのときは排他的論理和オペレーションのオーバーヘッドは発生 しない。このアプローチは固定的なターミネーション文字一般にも適用される。 次のようにすれば本発明はソースからターゲットへバイト列をコピーするのに 使うこともできる。すなわち本発明に係る命令を1回の呼出しで呼び出している 間に、レジスタのサイズと同数のバイトを有する列の1部分につき特定の文字を 求めてテストすることができる。本発明は1度に1個のバイトではなく、1レジ スタ中の多数のバイトに実行することができ、それによって1度に1バイトしか コピーしないソフトウエアをはるかに凌ぐ改良をパフォーマンスにもたらす。 本発明は加算命令を実行するのに匹敵する程度の時間で実行可能であり、特に 本発明を実行するのに多数サイクル命令を実行するための特別機を必要とはしな い。本発明は、他のロードしストアせよ命令と組合せることができ、それによっ てコピーオペレーションをこの命令順序を1回または2回以上実行することによ って行うことができる。 本発明はまたHP-PAとかAm29050のようなアーキテクチャーのプロセッサーより 以下のような数点で有利である。第1に、サーチされている列の部分中に入るオ フセットを指定することによって、本発明は先頭バイトをマスキングしなくても それらを明示的に無視でき、それによってそうしたマスキングオペレーションに 関連するオーバーヘッドを回避することができる。第2に、ターミネーション文 字の存在場所を決定するのに、もう一つの別の命令を必要とすることがない。と いうのは本発明はその情報をその単一サイクルの処理能力内で決定することがで きるからである。これは処理時間を減少させる。図面の簡単な説明 本発明につき上述の、及びその他の利点は、添付の図面に基づき行う以下の説 明によって一層理解を深めることであろう。 図1は本発明のシステムを簡単に説明したブロックダイヤグラムである。 図2は図1のシステムのプロセッサのブロックダイヤグラムである。 図3は本発明に係る命令のフォーマットを示す。 図4は本発明に従ってバイトレジスタ中にある特定の文字を捜し出すためのス テップの大略を示すフローチャートである。 図5は本発明に従ってバイトレジスタ中にある任意の文字を捜し出すためのス テップの大略を示すフローチャートである。 図6は本発明を具現化するハードウエアの第1実施例である。 図7は本発明を具現化するハードウエアの第2実施例である。 図8Aおよび図8B、すなわち表1および表2は、各々4バイトおよび8バイ トの真理表で、図6および図7の組合せ論理ユニットのためのブール論理を含む ものである。 図9は本発明を具現化するハードウエアの第3実施例である。 図10、すなわち表3は、図9の組台せ論理ユニットのためのブール論理を含 む4バイトの真理表である。 図11はソースアドレスからターゲットアドレスへのターミネーション文字中 に終了するバイト列をコピーする本発明の命令を使うステップのフローチャート である。発明の詳細な説明 図1の30は本発明を組み込むことができるタイプのコンピュータ全体を指す 。コンピュータ30は、プロセッサ34、ランダムアクセスメモリー(RAM) 36の形式で代表的には具現化されるメインメモリー、およびリードオンリーメ モリー(ROM)38を含むことができるスタティックメモリー[static memor y]を相互に接続する例えばシステムバスのようなシグナルパス32からなる。 プロセッサ34はロード/ストアアーキテクチャを有するマイクロプロセッサ である。例えばこのプロセッサはSun Microsystems,Inc.から購入することが できるSPARCマイクロプロセッサとか、IBM社から購入できるRISC System/6000マ イクロプロセッサである。 図2に示すようにプロセッサ34はレジスタファイル40と、命令レジスタ4 1とを有する。あるいはプロセッサ34はステートビット記憶装置[statebit s torage]42とキャッシュ[cache]46を有する。従来のロード/ストアアー キテクチャでは、データは計算することなくレジスタとメモリー間を移動し、計 算はレジスタ内の値間で行われている。 レジスタファイル40は、レジスタ「ra」50a,レジスタ「rb」50b、レ ジスタ「rc」50cを含む複数の汎用レジスタ50を有する。これらのレジスタ は、場合によって異なるが代表的には4バイトとか8バイトの特定のバイト長で ある。 レジスタ内容のフォーマットは、使用されるメモリーアドレシングスキーム如何 で異なる。Big Endianメモリーアドレシングでは、レジスタのバイト0は内容上 最上位ビットを含む。すなわちレジスタ中のバイトは0から始まって左から右へ 連続的に番号が振られている。Little Endianメモリーアドレシングでは、レジ スタのバイト0は内容上最下位ビットを含む。すなわちレジスタ中のバイトは0 から始まって右から左へ連続的に番号が振られている。好ましい実施例について はBig Endianメモリーアドレシングを使ったレジスタに関して記載されている。 しかしLittle Endianメモリーアドレシングを使ったレジスタに適用される実施 例は当業者には自明なことであろう。 ステートビット記憶装置42は、命令を制御するためのステートビット51a などの1または2以上のステートビット51を有している。このプロセッサは1 または2以上のステートビット51を一定の条件コードまたは状態を示すために セットすることができる。プロセッサ34は、ステートビット記憶装置42では なくレジスタファイル40内のレジスタ50を使うことができる。 典型的にはプロセッサ34はキャッシュ46またはメモリー36から命令を引 き出し、それを命令レジスタ41にストアする。図3は本発明を具現化するため の命令のフォーマットを示す。典型的な命令52は演算コード[opcode]60, 3つのレジスタ番号域、すなわちここではra規則子62、rb規則子64およ びrc規則子66と、あってもなくてもよいがテストフィールド68とがある。 演算コード60は、「第1フィールド」とも呼ばれるが、プロセッサの命令セ ット内で一定の命令を特定する。演算コード60は直接または間接に特定の命令 を同定する。例えば演算コード60は、本発明を具現化する命令に対応する「11 0000」のような二進数値たり得る。演算コード60の大きさは命令セットアーキ テクチャ次第で決まるが典型的には6ビットフィールドである。 説明の便宜上、本発明の命令をここでは「FINDARBCHAR」または「FINDFIXEDCH AR」命令と呼ぶことにする。FINDARBCHAR命令は、任意の又は動的なターミネー ション文字を取り扱うように明示的に設計されていることを別にすればFINDFIXE DCHAR命令と実質的に同一であるが、FINDFIXEDCHARはゼロバイトのような特定の 固定 的なターミネーション文字専用にされたものである。このようにターミネーショ ン文字を変更する能力があることが望まれる場合とか、コンピュータを構築する ときターミネーション文字が知られていない場合などでは、FINDARBCHAR命令が 有利である。ターミネーション文字が動的なとき、典型的にはそれはレジスタ5 0に記憶される。 任意の又は動的なターミネーション文字のためにも、あるいはコンピュータを 構築するときにターミネーション文字が未知であるときにFINDFIXEDCHAR命令を 使うことができる。この場合は、FINDFIXEDCHAR命令はゼロバイトに等しいター ミネーション文字用に設計される。FINDFIXEDCHAR命令が呼び出される前に、サ ーチされている列部分中に含まれているデータと、FINDFIXEDCHAR命令を呼び出 す前のターミネーション文字にセットされた各バイトを有する同一長のマスク間 とで排他的論理和[EXCLUSIVE-OR]が実行され、それによってターミネーション 文字を含有するバイトをゼロバイトにセットする。FINDFIXEDCHARは次にそのゼ ロバイトを捜し出すのに使われ、それによってゼロバイトでないターミネーショ ン文字を非明示的に取り扱う。FINDARBCBAR命令の場合は、上記の論理和は命令 自体内で行われる。 「第2フィールド」とも呼ばれるra規則子62は、レジスタra50aを特 定する。ra規則子62はレジスタra50aのためのレジスタファイル中に入 るインデックス、オフセットまたはポインターたり得る。 「第3フィールド」とも呼ばれるrb規則子64は、レジスタrb50bを特 定する。rb規則子64はra規則子62と同様である。 「第4フィールド」とも呼ばれるrc規則子66は、レジスタrc50cを特 定する。rc規則子66はra規則子62およびrb規則子64と同様である。 3つのレジスタフィールド62、64、66の大きさはサポートされるレジス タ数によって決まる。典型的には5ビットフィールドである。 任意的に「第5フィールド」とも呼ばれるテストフィールド68は、どの条件 コードがセットされるべきなのかを特定する。典型的にはこれらの条件コードは ブランチ[branches]その他の命令を無効にするのに使われる。セットされるか も しれない多数のステートビット51があるとき、テストフィールド68はそれら のどれが使われるのかを選択する。 FINDFIXEDCHARまたはFINDARBCHARのアセンブリ言語命令は、FBYTE ra,ra b,rcテストのように指定することができる。典型的には、より高いレベルの コピー命令を翻訳するときにコンパイラが、文字列のコピーを完遂するのに必要 なあらゆる先行する、また後続する制御命令を含むFBYTE命令を作る。あるいは ソースコード自体がコピーオペレーションを実行するアセンブリ言語で書かれた ルーチンを呼び出す。 図4はFINDFIXEDCHAR命令の実行中に行われるステップの全体を示す。必須的 に、ブロック100でgr[ra]の最下位ビット、すなわち「lsb’s」と ここで呼ぶもの、によって特定されたバイトアドルスで始まるgr[rb]のバ イトを調べて特定の文字、すなわちターミネーション文字とか、その他の特定文 字を捜し出す。使われる最下位ビット数はレジスタの大きさ、すなわちすべての バイトのありかを記述するのに必要なビット数によって決まる。例えばレジスタ が4バイトの長さであるとすれば、2ビットが場所0−3を記述するのに使われ 、レジスタが8バイト長なら3ビットが場所0−7を記述するのに使われる。 特定文字がブロック102で捜し出されたら、ブロック104でgr[rc] 、好ましくはそれの最下位ビットがそのターミネーション文字のバイトアドレス を特定するのに更新され、ブロック106で特定文字が発見されたことを表示手 段を介して示す。例えばこの表示手段は、セットされる条件コード、または実行 されるトラップである。ブロック104、106は順序を逆にして行われても構 わない。ブロック102で特定文字を発見できなかったら、ブロック108で、 gr[rc]、好ましくはそれの最下位ビットが調べ終わった列のバイトのすぐ 後の列中にあるバイトのアドルスまたはこのアドレスを作るのに都合のよい値を 特定するように更新される。ブロック110でその特定文字が発見されなかった ことを表示する。例えばこの表示手段はセットされた条件コードであるか、実行 されたトラップであることもある。ブロック108、110は逆に行われても構 わない。 あるいは条件コードを表示手段として使うのなら、ブロック100の前に、特 定文字が発見されなかったことを示すよう条件コードを初期化することができ、 そしてその特定文字が発見されて初めて更新されるのであって、ブロック110 で行われるステップが、ブロック102や108の後に行われるのではなく、ブ ロック100の前に行われ行われてしまうのでもよい。同様に、この条件コード は、ブロック100で調べられて特定文字が発見されたことを示すように初期化 され、特定文字が発見されないときに初めて更新するようにすることもできる。 すなわちブロック106で行われるステップをブロック102や104の後に行 うのでなく、ブロック100より前に行ってしまうわけである。 条件コードは容易にテストすることができるステートビット51のような条件 ビットであるのが好ましい。あるいは条件コードは特定文字が発見されたか否か を示す値をロードされるレジスタであってもよい。 図5はFINDARBCHAR命令の実行中に行われるステップの概略である。基本的にF INDFIXEDCHAR命令を実行するときに行われるのと同じステップであるが、ブロッ ク250でgr[rb]の内容が、論理的にマスクフィールドのついた排他的論 理和化されている点で異なる。マスクフィールドは調べている列部分と同じ長さ 、すなわちgr[rb]と同じ大きさで、求められている特定のターミネーショ ン文字の例の列を含んでいる。 図6〜図10は本発明に係るFINDFIXEDCHAR命令のハードウエアによる実施例 を示す。図6、図7および図9においては、4バイトレジスタが使われているが 、8バイトレジスタのような他の大きさのレジスタでも実施可能である。接続線 上の斜線は信号またはデータの経路数を示す。図6、図7および図9は1バイト 長のターミネーション文字の場合の実施例である。しかし当業者なら1バイト長 以上の長さのターミネーション文字の場合にもこれら図6、図7および図9を変 更して行うことが容易にできるであろう。 図6においてターミネーション文字がテストされている列部分に発見されない ときは、定数「n」を付け加えることによって次の文字単位アドレスを別の命令 が作ることができるようにgr[ra]の最下位ビットをクリアする。ここでn はレジスタgr[rb]内のバイト数である。あるいは図7において、ターミネ ーション文字が発見されないときは、そのFINDFIXEDCHAR命令内でgr[ra] の最下位ビットがクリアされ、そして定数「n」がそれに付け加えられるのでも よい。 図6において、3つのレジスタgr[ra]300、gr[rb]302、g r[rc]304が次のように接続されている。レジスタgr[rb]302の 各バイト中のビットは、バイトをターミネーション文字と比較するため論理30 5に接続されている。この論理は例えば、1または2以上のORゲート306で あるか、または補足された入力値を使うNANDゲート(図示せず)のようなO rゲートの同等物でもよい。 プログラム可能論理回路[Programmable Logic Array](PLA)のような組 合せ論理ユニット[combinatorial logic unit](CLU)308が論理305 の出力、ORゲート306として表されているものと、レジスタgr[ra]3 00の最下位ビットとを相互に接続する。レジスタgr[ra]の他のビットは レジスタgr[rc]304内の対応するビットに接続される。CLU308の 出力はオフセット信号310と発見された信号312である。レジスタgr[r c]304の最下位ビットはオフセット信号310の値にセットされる。発見さ れた信号312は、例えばステートビット51のようなインジケータ314へそ の内容を送ることによって条件コードをセットするのに使うことができる。 レジスタgr[ra]300の最下位ビットはレジスタgr[rb]302内 のどのバイトがターミネーション文字のサーチを始めるかを表示し、またgr[ ra]の他のビットはそのバイトの内容がメモリー中のどこにあるのかのアドレ スを表示する。 オペレーションのときは、レジスタgr[rb]302内のバイトのビットは 論理305を1文字につき1つのORゲート306として殆ど同時に通過する。 得られた結果(t0〜t3)がCLU308に入る。レジスタgr[ra]30 0の最下位ビットもCLU308へ入力として入り、レジスタgr[ra]のそ の他のビットはレジスタgr[rc]304中の対応する場所にコピーされる。 CLU308はオフセット信号310と発見信号312の2つの出力を作り出 す。発見信号312はターミネーション文字がレジスタgr[rb]302に発 見されたか否かを特定する。ターミネーション文字が発見されたときは、オフセ ット信号310がそのターミネーション文字のgr[rb]302内のありかを 特定する。そうでないときはオフセット信号310はゼロである。レジスタgr [rc]304の最下位ビットはオフセット信号310の値にセットされる。 図7に示す別の実施例ではターミネーション文字が発見されないときは、レジ スタgr[ra]のアドルスがその列中の次の未だ調べられていないバイトのア ドレスを特定するように更新される。この実施例では、3つのレジスタgr[r a]350,gr[rb]352,gr[rc]354が次のように相互に接続 されている。レジスタgr[rb]352のバイトのビットは、1バイトを1タ ーミネーション文字と比較するように論理355に接続される。この論理は例え ば1または2以上のORゲート356またはOrゲート同等物がなり得る。 PLAのような組合せ論理ユニット(CLU)358が論理355の出力、O Rゲート356として表されているものと、レジスタgr[ra]350の最下 位ビットとを相互に接続する。レジスタgr[ra]のその他のビットは演算数 を1づつ微増させるような加算演算を行える加算装置[addition unit](AU )360中に入力される。AU360は例えば加算器である。 CLU358はオフセット信号362と発見信号364を出力する。オフセッ ト信号362の内容はレジスタgr[rc]354の最下位ビット中にコピーさ れる。 発見信号364の逆値[the inverse of the value]がAU360に入力とし て入れられる。AU360の出力はgr[rc]354の対応する最下位ビット に接続される。発見信号364はまたその値を例えばステートビット51のよう なインジケータ366に送ることによって条件コードをセットするのに使うこと もできる。 オペレーションに当たっては、レジスタgr[rb]352のバイト内のビッ トは論理355を殆ど同時に通って1バイトごとに1つのORゲートとして表さ れる。得られた結果の(t0〜t3)はCLU358に送られる。レジスタgr [ra]350の最下位ビットはCLU358に第2の入力として送られ、レジ スタgr[ra]のその他のビットはAU360に入力として送られる。 ターミネーション文字が発見されたときは、オフセット信号362がgr[r b]352内のそのターミネーション文字のありかを特定する。発見されないと きはオフセット信号362はゼロで、gr[rb]352の最初のバイトのあり かを特定する。レジスタgr[rc]354の最下位ビットはオフセット信号3 62の値にセットされる。 発見信号364の逆値がAU360に送られる。その発見された信号がゼロな ら、ターミネーション文字が発見されないと表示し、そうするとAU360がA Uへのその他の入力として特定されたアドレスに1を加え、gr[rc]中の対 応する最上位ビット、すなわち最下位ビット以外のビットが結果にセットされる 。発見された信号がターミネーション文字が発見されたことを示す1なら、AU 360の出力はその他の入力として特定されたアドレスでgr[rc]中の対応 する最上位ビットが結果にセットされる。 表1および表2は各々、図6および図7のPLAの304および358の真理 値表である。表1は4バイトの真理値表で、表2は8バイトの真理値表である。 これらの真理値表で「x」はその入力値が0か1かに拘わらず同じ出力が作られ ることを示す。 これらの真理値表の各々は、適当なゲートレベルの相互接続仕様を作るSynops is Corp.から購入できるSynopsisのような論理合成プログラムへの入力として 使うことができる。 図9は本発明の実施例を具体化するためのハードウエアを示し、バイト列中の 1つのエンドバイトが、ターミネーション文字が発見されるか特定のエンドバイ トがサーチされるまでそのどちらが先に生ずるかに関係なくバイト列がターミネ ーション文字をサーチするように特定されることができる。4つのレジスタgr [ra]400,gr[rb]402,gr[rc]404,gr[rd]40 6が次のように相互接続されている。gr[ra]およびgr[rd]の最上位 ビットが等しいときは、レジスタgr[rd]406の最下位ビットはレジスタ gr[rb]342内のバイトをそのバイトを含めてターミネーション文字を求 めるよう表示し、gr[rd]のその他のビットはそのバイトの内容のメモリー 中のある場所のアドレスを表示する。gr[rd]によって特定されたバイトに 到着する前にターミネーション文字が発見されたら、サーチは終了する。 レジスタgr[rd]の最下位ビットは入力として組合せ論理ユニット408 中に送られる。最下位ビット以外のgr[rd]のビットは比較論理ユニット4 12に入力として接続される。最下位ビット以外のgr[ra]のビットも比較 論理ユニット412に入力として接続される。比較論理ユニット412の結果は CLU408へ入力として送られる。gr[ra]400の最下位ビットもCL U408へ入力として送られる。 レジスタgr[rb]402のバイト中のビットは1バイトを1ターミネーシ ョン文字と比較するために論理419へ接続される。論理419は例えば1また は2以上のORゲート420か、Orゲート同等物たり得る。例えばORゲート 420のような論理402の出力もCLU408への入力となる。レジスタgr [ra]400のその他のビットはレジスタgr[rc]404内の対応するビ ットに接続される。 CLU408の出力は、オフセット信号422、発見信号424、ラースト信 号426および好ましくは誤り信号428である。オフセット信号422はgr [rc]404の最下位ビットに接続される。使っている条件コードをセットす るため、発見信号424をインジケータ1430に接続することができ、ラース ト信号426をインジケータ2432に接続することができ、そして誤り信号4 28をインジケータ3433に接続することができる。インジケータ430、4 32、433は例えばステートビット51でもよい。あるいはインジケータ1、 インジケータ2の両方を使わずにダンインジケータ[done indicator]とも呼ば れる1個のインジケータ434を使ってサーチが終了したことを表示することも できる。このダンインジケータは、発見信号424およびラースト信号426の 各値に行われる論理和演算の結果に等しい値をもつ。ダンインジケータはターミ ネ ーション文字が発見されたか又はラースト文字が調べられたかのいずれかを指定 することができるが、これら2状態のどちらが発生したのかは表示しない。また 、誤り信号428は実際の設置においては無視されてしまうこともある。 演算に当たっては、最下位ビットよりもgr[rd]のビット406が、また 、最下位ビットよりもgr[ra]のビット400が比較論理ユニット412に 入力として入れられ、そこでこれら2値が比較され、それらが等しいか否かを表 示し、等しいなら1を戻し等しくないなら0を戻す。サーチされているバイトの アドレスがサーチされるべき最後のバイトのアドレスを含んでいるときは、それ らの値は等しい。比較論理ユニット412の出力は入力としてCLU408に入 る。 レジスタgr[rb]402のバイト中のビットは、1バイトごとに1個の論 理和ゲート420として表された論理419を事実上同時に通過する。結果(t 0〜t3)がCLU408に入れられる。レジスタgr[ra]400およびg r[rd]406の最下位ビットも入力としてCLU408に入れられる。レジ スタgr[ra]400の他のビットはレジスタgr[rc]404の対応する 箇所にコピーされる。 図9において、CLU408は、オフセット信号422、発見信号424、ラ ースト信号426および誤り信号428の4つの出力を作る。誤り信号428は なくてもよいし、発見信号424とラースト信号426は1つのダン信号にまと めることができる。発見信号424はターミネーション文字がレジスタgr[r b]402中に発見されたか否かを示す。もしターミネーション文字が発見され たのであれば、オフセット信号422がそのターミネーション文字のgr[rb ]402中の存在位置を示す。発見されなければオフセット信号422がgr[ rb]402の最初のバイトを示す。gr[rc]404の最下位ビットがその オフセット信号422の値にセットされる。 図9に示された実施例は図7について説明した排他的論理和の実施例を付加す ることによって動的ターミネーション文字を処理するように修正することができ る。同様に、図9の実施例は図7について説明した付加ユニットを付けるように 修正することもできる。 表3は図9のPLA408のための4バイト真理値表である。真理値表1およ び2と同様、真理値表3も論理合成プログラムへの入力として使用することがで きる。 「x」は、その入力値が0か1か同じ出力が作られることを示す。括弧内の値 はエラー状態、すなわち終了アドレスが開始アドレスより小さいときを示す。一 般にその他のデータ値はエラー状態が発生したときは無視されるが、プロセッサ によってはそうしたエラーをチェックしないものもある。したがって表では出力 はエラー状態について定義する。表中に示された値はエラーについての好ましい 値であるが、その他のどんな値でも使うことができる。 図11はソースアドレスからターゲットアドレスへの空終了バイト列をコピー するためのFINDFIXEDCHAR命令を使うときに行われるステップを示す。図11も またFINDARBCHAR命令を使うように修正することができる。 これらのステップはより高いレベルのコンピュータプログラミング言語では、 コピー指示呼出しすなわちサブルーチン呼出しに応えて実行される。コピー指示 は、ソースパラメータがターミネーション文字で終了するバイト列のアドレスを 、またターゲットパラメータがその列がコピーされるべきアドレスを指定する場 合には、例えばコピーせよ[COPY](ソース、ターゲット)と指示される。ソー スアドレスおよびターゲットアドレスはレジスタその他の比較的容易にアクセス できる一時記憶装置に既にロードされていることが前提である。例えば、ソース アドレスがロードされるレジスタはgr[ra]と呼ばれる。 簡略化して説明すると、図11ではソースアドレスおよびターゲットアドレス の最下位ビット、すなわちレジスタ内のバイトオフセットを特定するビットは、 同じである。そうでないときは追加的にアラインメント演算命令および桁送り命 令が使われる。 基本的にバイトの列はレジスタに一杯のバイトを1度にコピーすることによっ てソースアドレスからターゲットアドレスへとコピーされる。レジスタ一杯のバ イトはレジスタgr[rb]にロードされ、gr[ra]の最下位ビットで指定 されたgr[rb]内のオフセットで始まる内容につきターミネーション文字如 何が調べられる。ターミネーション文字が発見されたらgr[ra]の最下位ビ ットで指定された存在箇所とそのターミネーション文字の存在箇所との間のgr [rb]内容が包含的にターゲットアドレスで指定された適当なアドレスに記憶 される。ターミネーション文字が発見されないときは、gr[ra]の最下位ビ ットで指定されたオフセットで開始するgr[rb]内容が、最後までターゲッ トアドレスで指定された適当なアドレス中にストアされgr[ra]が次のコピ ーされるべき文字のアドレスを指定するように更新される。 具体的には図11に示すように、ブロック550でデータがソースアドレスを 使ってgr[rb]にロードされる。ブロック552でFINDFIXEDCHAR命令また はFINDARBCHAR命令が実行される。好ましくはソースアドレスつまりgr[ra ]およびデータつまりgr[rb]はパラメータとして呼出しに入れられるのが よい。「ネクスト」とも呼ばれる汎用レジスタgr[rc]および、ここでは「 テスト」と呼ばれるテストビットが出力パラメータとして使われる。 ターミネーション文字がブロック552で発見されたか否かを決定するためブ ロック554で調べられる。もし発見されたなら制御がブロック556へ送られ 、発見されないなら制御はブロック558へ送られる。ブロック556では「n 」がgr[rb]中のバイト数を指すとして、ソースのモジュロとn、すなわち nでソースを割った残りと、次のモジュロとnとの間のgr[rb]中のデータ のバイトを、ターゲットアドレスにストアする。 ブロック558で、ソースに示されたバイトを含むその後のgr[rb]中の バイト数にカウントセットする。ブロック560で、ターゲットアドレスから開 始してgr[rb]のバイト数のカウントをストアする。ブロック562で、ソ ースの最下位ビットをゼロにセットする。ブロック564でソースをnだけ微増 する。ブロック566でターゲットをnだけ微増する。ブロック564と566 は順序をとちらにしても実行可能である。次に制御をブロック550に移す。図 11のステップは開始バイトは勿論gr[rb]中の末端バイトをも指定するよ うに修正することができる。
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FR,GB,GR,IE,IT,LU,M C,NL,PT,SE),OA(BF,BJ,CF,CG ,CI,CM,GA,GN,ML,MR,NE,SN, TD,TG),AT,AU,BB,BG,BR,BY, CA,CH,CN,CZ,DE,DK,ES,FI,G B,HU,JP,KP,KR,KZ,LK,LU,LV ,MG,MN,MW,NL,NO,NZ,PL,PT, RO,RU,SD,SE,SK,UA,UZ,VN

Claims (1)

  1. 【特許請求の範囲】 1.第1のレシスタ中の文字列の1部分を記憶し、 該第1レジスタ中の存在場所を指摘する開始場所を指定し、 プロセッサーで命令を受け取り、 該命令に応えて次の処置を単一命令中で実行し、すなわち、 上記開始場所と同一場所またはそれより後の場所で上記第1レジスタ 中に記憶されている複数の文字と上記特定の文字とを同時に比較し、 その特定文字が発見されたら、該特定文字の存在場所を示すアドレス をレジスタ中に保存し、 その特定文字が発見されなければ、上記文字列の調べ終わった部分の すぐ次の文字列中の文字を指摘するアドレスを第2のレジスタに保存する、 というステップを有することを特徴とするプロセッサーにアクセスできるメ モリー中に記憶された可変長文字列中にある特定の文字を発見する方法。 2.特定の文字が発見されたか否かをプロセッサーが表示するステップをさらに 有することを特徴とする請求項1に記載の方法。 3.特定の文字が発見されたか否かの表示が条件コードをセットするステップも 含むことを特徴とする請求項2に記載の方法。 4.特定の文字が予め定められた固定値であることを特徴とする請求項1に記載 の方法。 5.特定の文字が動的値であることを特徴とする請求項1に記載の方法。 6.特定の文字が空文字であることを特徴とする請求項1に記載の方法。 7.特定の文字が1バイト長であることを特徴とする請求項1に記載の方法。 8.特定の文字が2バイト長以上であることを特徴とする請求項1に記載の方法 。 9.命令を受け取ることが単一の命令しか受け取らないことを特徴とする請求項 1に記載の方法。 10.第1のレジスタ中の文字列の1部分を記憶し、 該第1レジスタ中の存在場所を指摘する開始場所を指定し、 上記第1レジスタ中の存在場所を指摘する終端場所を指定し、該第1レジス タ中に保存されている複数の文字を書き込む開始場所および終端場所を特定の文 字と比較し、 プロセッサーで命令を受け取り、 該命令に応えて次の処置を単一命令中で実行し、すなわち、 上記開始場所と終端場所とを含むそれら場所間の複数の場所で上記第 1レジスタ中に記憶されている複数の文字と上記特定の文字とを同時に比較し、 その特定文字が発見されたら、該特定文字の存在場所を示すアドレス をレジスタ中に保存し、 その特定文字が発見されなければ、上記文字列の調べ終わった部分の すぐ次の文字列中の文字を指摘するアドレスをレジスタに保存する、 というステップを有することを特徴とするプロセッサーにアクセスできるメ モリー中に記憶された可変長文字列中にある特定の文字を発見する方法。 11.プロセッサーで命令を受け取り、 該命令に応えて、 サーチされている文字部分と動的文字を複製した連続を含む基準値[ reference value]との間で排他的論理和演算を実行し、 該排他的論理和演算が何らかの文字の存在場所でゼロ結果を出すとき は、そのゼロ結果の存在場所を示すアドレスをレジスタ中に保存し、排他的論理 和演算がいずれの文字の存在場所でもゼロ結果を出さないときは、その文字列の 調べ終わった部分のすぐ次の文字列中の文字を指摘するアドレスレジスタに保存 する、 というステップを有することを特徴とする プロセッサーで可変長文字列中にゼロ値によって表される文字以外の動的文字 を発見する方法。 12.排他的論理和演算が調べたバイトの存在場所のいずれかにつきゼロ結果を 出すか否かを表示するステップをさらに有することを特徴とする請求項12に記 載の方法。 13.ソースアドレスを使って文字列の1部分をロードし、 該文字列の1部分を第1のレジスタに記憶させ、 該第1レジスタ中に存在場所を指摘する開始場所を指摘し、 プロセッサーで命令を受け取り、 該命令に応えて次の処置を単一命令中で実行し、すなわち、 上記開始場所と同一場所またはそれより後の場所で上記第1レジスタ 中に記憶されている複数の文字と上記特定の文字とを同時に比較し、 その特定文字が発見されたら、該特定文字の存在場所を示すアドレス をレジスタ中に保存し、 その特定文字が発見されなければ、上記文字列の調べ終った部分のす ぐ次の文字列中の文字を指摘するアドレスを第2のレジスタに保存し、 その特定文字が発見されたら、ソースアドレスとそのターミネーション文字 のアドレスとの間に文字列の部分のバイトをターゲットアドレスに保存し、 その特定のターミネーション文字が発見されなければ、その文字列のその部 分の最後までソースアドレスによって特定されるバイトの開始端からのその文字 列のその部分をターゲットアドレスに保存し、文字列のその部分の長さだけソー スアドレスを微増させ、文字列のその部分の長さだけターゲットアドレスを微増 させ、そしてソースアドレスの最下位ビットをゼロにセットする、 というステップを有することを特徴とするソースアドレスからターゲットア ドレスに特定のターミネーション文字で終る可変長文字列を複製する方法。 14.第1のレジスタ中の文字列の1部分を記憶し、 該第1レジスタ中の存在場所を指摘する開始場所を指定し、 プロセッサーで命令を受け取り、 該命令に応えて次の処置を単一命令中で実行し、すなわち、 上記開始場所と同一場所またはそれより後の場所で上記第1レジスタ 中に記憶されている複数の文字と上記特定の文字とを同時に比較し、 その特定文字が発見されたら、該第1レジスタ中の該特定文字の存在 場所に対応する最下位ビットを第3のレジスタ中に保存し、 その特定文字が発見されなければ、上記第1レジスタ中の特定文字の 存在場所に対応する最下位ビットを上記第3レジスタにセットし、 その特定文字が発見されなければ、上記第1レジスタの初めのアドレ スに対応する最下位ビットを上記第3レジスタにセットし、そして、 その特定文字が発見されたか否かを表示する、 というステップを有することを特徴とするプロセッサーにアクセスできるメ モリー中に記憶された可変長文字列中にある特定の文字を発見する方法。 15.特定の文字を求めて第1レジスタ中の複数の文字を調べる前に第1レジス タの内容とその特定文字の複製された連続を有する基準値の内容とを排他的論理 和演算するステップを有することを特徴とする請求項4に記載の方法。 16.1または2以上のデータ文字を保存することができる第1のレジスタと、 該第1レジスタ中に入るオフセットを指定する最下位ビットと上記第1レジ スタの内容のメモリーのアドレスを指定する最上位ビットとを有する第2のレジ スタと、 該第1レジスタ中に入るオフセットを指定する最下位ビットと上記第2レジ スタの最上位ビットの内容のコピーを保持する最上位ビットとを有する第3のレ ジスタと、 特定文字と多数のバイトとを同時に比較するバイト比較論理であって、上記 第1レジスタの文字に結合される1または2以上のOR−GATESを有し、 これらOR−GATESは1文字が1個のOR−GATEに結合されるように 、また1個のOR−GATEは1文字に結合されるように配列されたものと、 上記バイト比較論理の出力および上記第2レジスタの最下位ビットに結合さ れる入力を有する組合せ論理ユニットであって、上記第1レジスタ中に入るオフ セットを示し、かつ、上記第3レジスタの最下位ビットに送られるオフセット信 号出力と上記特定文字が発見されたか否かを示す発見信号出力とを出すもので、 特定の文字を発見したときは上記オフセット信号出力が上記第1レジス タ中に特定の文字の存在場所を特定するオフセットにセットされ、特定文字を発 見しないときはゼロにセットされる組合せ論理ユニットと、 を有することを特徴とするコンピュータに可変長文字列中に特定の文字を発 見する装置。 17.ORゲートが1個の文字中のビットに接続され、第1レジスタ中の各文字 が1個のORゲートに接続されるように上記第1レジスタに接続される1または 2以上のORゲートであって、第1レジスタのビットが接続されるORゲートに 入力として接続されるものを上記論理が有することを特徴とする請求項17に記 載の装置。 18.第2レジスタの他のビットに接続される第1の入力と、発見した信号の出 力の逆値に接続される第2の入力とを有し、さらに、上記第3レジスタの他のビ ットに接続される出力を有する加算器をさらに有することを特徴とする請求項1 7に記載の装置。 19.データの1または2以上のバイトを保存することができる第1のレジスタ と、 上記第1レジスタ中に入る開始オフセットを指定する最下位ビットと、該第 1レジスタ中のデータに関連するメモリーのアドレスを開始するオフセットロケ ーションに指定するための最上位ビットを有する第2のレジスタと、 上記第1レジスタ中に入るオフセットを指定するための最下位ビットと、上 記第2レジスタの最上位ビットの内容のコピーを保持するための最上位ビットと を有する第3のレジスタと、 上記第1レジスタ中に入る終端のオフセットを指定するための最下位ビット と、第1レジスタ中のデータに関連するメモリーのアドレスを上記終端のオフセ ットロケーションに指定するための他のビットとを有する第4のレジスタと、 ゼロ値にされたターミネーション文字と多数のバイトとを同時に比較するバ イト比較論理であって、上記第1レジスタのバイトに結合される1または2以上 のOR−GATESを有し、これらOR−GATESは上記第1レジスタ中のバ イト各々が1個のOR−GATEに結合され、また各々のOR−GATE が単一バイトに結合されるように配列されたものと、 上記第4レジスタの他のビットに結合される第1の入力と、上記第2レジス タの他のビットに結合される第2の入力とを有するアドレス比較ユニットであっ て、上記第1および第2の入力が同じメモリーのアドレスを指定するか否かを決 定すること、およびその決定の結果を表示する出力を出すことができるものと、 上記バイト比較論理の出力、上記第2レジスタの最下位ビット、上記第4レ ジスタの最下位ビットおよび上記比較論理ユニットの出力に結合される入力を有 する組合せ論理ユニットであって、上記第1レジスタ中に入るオフセットを示し 、かつ、上記第3レジスタの最下位ビットに送られるオフセット信号出力と、特 定文字が発見されたか否かを示す発見信号出力とを出すもので、上記オフセット 信号出力は特定文字が発見されたら上記第1レジスタ中の特定文字の存在場所を 指定するオフセットにセットされ、特定文字が発見されなければゼロにセットさ れるもので、第4レジスタの最下位ビットに指定される最後のオフセットが調べ られたか否かを示すラースト信号出力と、エラーが発生したか否かを示すエラー 信号出力とを有することを特徴とするコンピュータで文字列中の特定の文字を発 見する装置。 20.上記論理が上記第1レジスタに接続された1または2以上のORゲートを 、ORゲートが単一バイト中のビットに接続され第1レジスタ中の各バイトが単 一のORゲートに接続されるように備え、第1レジスタのビットがそれらが接続 されるORゲートに入力として接続されていることを特徴とする請求項20に記 載の装置。 21.上記発見信号出力と上記ラースト信号出力とがそれらが接続されるORゲ ートに入力として接続されていることを特徴とする請求項20に記載の装置。 22.第1のレジスタに1または2以上の文字を記憶し、 第2のレジスタの第1の部分に上記第1レジスタ中に記憶された第1の文字 のアドレスを記憶し、 上記第2レジスタの第2の部分に上記第1部分に記憶されたアドレスからの オフセットであって特定の文字を求めてサーチを開始する第1レジスタ中のバイ トのロケーションを示すものを記憶し、 上記第2レジスタの第2部分に指定されたバイトロケーションに存在するか 、またはそれより後に存在する第1レジスタの中の複数の文字を同時にサーチし 、 特定文字を発見したら、第3のレジスタに第1レジスタ中のその特定文字の 存在場所を示すアドレスを保存し、 特定文字を発見しなかったら、その文字列の調べ終わった部分のすぐ次の可 変長文字列中の文字を指摘するアドレスを第3レジスタに記憶する、 というステップを有することを特徴とする可変長文字列中に特定文字の発生 したことを探知する方法。 23.データの1または2以上の文字を保存することができる第1のレジスタと 、 該第1レジスタ中に入るオフセットを指定する最下位ビットを有する第2の レジスタであって第1レジスタの内容のメモリーアドレスを指定する最上位ビッ トを有するものと、 上記第1レジスタ中に入るオフセットを指定する最下位ビットを有する第3 のレジスタであって、第2レジスタの最上位ビットの内容のコピーを保持する最 上位ビットを有するものと、 多数のバイトを特定文字と同時に比較するバイト比較論理であって、1出力 と各構成部分が、第1レジスタ中の文字中から得られるビットを入力として備え 、また第1レジスタ中の1個の構成部分に入力を供給するように配置された1ま たは2以上の構成部分を有するものと、 バイト比較論理の出力および第2レジスタの最下位ビットに接続される入力 を有する組合せ論理ユニットであって、上記第1レジスタ中に入るオフセットを 示し上記第3のレジスタの最下位ビットに送られるオフセット信号出力と特定文 字が発見されたか否かを示す発見信号出力とを出すもので、上記オフセット信号 出力は特定文字が発見されたときは上記第1レジスタ中に特定文字の存在場所を 指定するオフセットにセットされ、特定文字が発見されないときはゼロにセット されるものと、 を有することを特徴とするコンピュータで可変長文字列中に特定の文字を発 見する装置。
JP50220095A 1993-06-14 1994-06-13 プロセッサにおけるさまざまな長さの文字列中のターミネーション文字を発見する方法および装置 Expired - Lifetime JP3637922B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US7752893A 1993-06-14 1993-06-14
US08/077,528 1993-06-14
PCT/US1994/006752 WO1994029790A1 (en) 1993-06-14 1994-06-13 Method and apparatus for finding a termination character within a variable length character string or a processor

Publications (2)

Publication Number Publication Date
JPH08511640A true JPH08511640A (ja) 1996-12-03
JP3637922B2 JP3637922B2 (ja) 2005-04-13

Family

ID=22138606

Family Applications (1)

Application Number Title Priority Date Filing Date
JP50220095A Expired - Lifetime JP3637922B2 (ja) 1993-06-14 1994-06-13 プロセッサにおけるさまざまな長さの文字列中のターミネーション文字を発見する方法および装置

Country Status (6)

Country Link
US (1) US5495592A (ja)
EP (1) EP0704073A1 (ja)
JP (1) JP3637922B2 (ja)
AU (1) AU7108994A (ja)
CA (1) CA2162115A1 (ja)
WO (1) WO1994029790A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015519626A (ja) * 2012-03-15 2015-07-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 終了文字を有する文字データ・セットの長さを見出す

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4334294C1 (de) * 1993-10-08 1995-04-20 Ibm Prozessor für Zeichenketten variabler Länge
US5931940A (en) * 1997-01-23 1999-08-03 Unisys Corporation Testing and string instructions for data stored on memory byte boundaries in a word oriented machine
US7191318B2 (en) * 2002-12-12 2007-03-13 Alacritech, Inc. Native copy instruction for file-access processor with copy-rule-based validation
WO2008020271A1 (en) * 2006-08-18 2008-02-21 Freescale Semiconductor, Inc. Method for performing plurality of bit operations and a device having plurality of bit operations capabilities
US9069547B2 (en) 2006-09-22 2015-06-30 Intel Corporation Instruction and logic for processing text strings
US20100211591A1 (en) * 2009-02-16 2010-08-19 Chuan-Hua Chang Apparatus for processing strings simultaneously
US9710266B2 (en) 2012-03-15 2017-07-18 International Business Machines Corporation Instruction to compute the distance to a specified memory boundary
US9588762B2 (en) * 2012-03-15 2017-03-07 International Business Machines Corporation Vector find element not equal instruction
US9459868B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a dynamically determined memory boundary
US9715383B2 (en) 2012-03-15 2017-07-25 International Business Machines Corporation Vector find element equal instruction
US9459867B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Instruction to load data up to a specified memory boundary indicated by the instruction
US9268566B2 (en) 2012-03-15 2016-02-23 International Business Machines Corporation Character data match determination by loading registers at most up to memory block boundary and comparing
US9280347B2 (en) 2012-03-15 2016-03-08 International Business Machines Corporation Transforming non-contiguous instruction specifiers to contiguous instruction specifiers
US9459864B2 (en) 2012-03-15 2016-10-04 International Business Machines Corporation Vector string range compare
US9454366B2 (en) * 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US10095517B2 (en) 2015-12-22 2018-10-09 Intel Corporation Apparatus and method for retrieving elements from a linked structure
US10789069B2 (en) 2017-03-03 2020-09-29 International Business Machines Corporation Dynamically selecting version of instruction to be executed
US10564967B2 (en) 2017-03-03 2020-02-18 International Business Machines Corporation Move string processing via inline decode-based micro-operations expansion
US10324716B2 (en) 2017-03-03 2019-06-18 International Business Machines Corporation Selecting processing based on expected value of selected character
US10613862B2 (en) * 2017-03-03 2020-04-07 International Business Machines Corporation String sequence operations with arbitrary terminators
US10620956B2 (en) 2017-03-03 2020-04-14 International Business Machines Corporation Search string processing via inline decode-based micro-operations expansion
US10564965B2 (en) 2017-03-03 2020-02-18 International Business Machines Corporation Compare string processing via inline decode-based micro-operations expansion

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4219874A (en) * 1978-03-17 1980-08-26 Gusev Valery Data processing device for variable length multibyte data fields
US4520439A (en) * 1981-01-05 1985-05-28 Sperry Corporation Variable field partial write data merge
US4654781A (en) * 1981-10-02 1987-03-31 Raytheon Company Byte addressable memory for variable length instructions and data
US4556951A (en) * 1982-06-06 1985-12-03 Digital Equipment Corporation Central processor with instructions for processing sequences of characters
US4569016A (en) * 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
US4739471A (en) * 1985-06-28 1988-04-19 Hewlett-Packard Company Method and means for moving bytes in a reduced instruction set computer
US4747046A (en) * 1985-06-28 1988-05-24 Hewlett-Packard Company Mechanism for comparing two registers and storing the result in a general purpose register without requiring a branch
US4916655A (en) * 1986-02-14 1990-04-10 Hitachi, Ltd. Method and apparatus for retrieval of a search string
US5073864A (en) * 1987-02-10 1991-12-17 Davin Computer Corporation Parallel string processor and method for a minicomputer
CA1327080C (en) * 1987-05-26 1994-02-15 Yoshiko Yamaguchi Reduced instruction set computer (risc) type microprocessor
EP0395636A4 (en) * 1987-08-20 1991-10-16 Davin Computer Corporation Parallel string processor and method for a minicomputer
US5060143A (en) * 1988-08-10 1991-10-22 Bell Communications Research, Inc. System for string searching including parallel comparison of candidate data block-by-block
US5144072A (en) * 1988-10-21 1992-09-01 American Home Products Corporation Anti-arrhythmic agents
US5179711A (en) * 1989-12-26 1993-01-12 International Business Machines Corporation Minimum identical consecutive run length data units compression method by searching consecutive data pair comparison results stored in a string
US5168571A (en) * 1990-01-24 1992-12-01 International Business Machines Corporation System for aligning bytes of variable multi-bytes length operand based on alu byte length and a number of unprocessed byte data
US5228133A (en) * 1990-10-01 1993-07-13 Carl Oppedahl Method to perform text search in application programs in computer by selecting a character and scanning the text string to/from the selected character offset position

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015519626A (ja) * 2012-03-15 2015-07-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 終了文字を有する文字データ・セットの長さを見出す

Also Published As

Publication number Publication date
WO1994029790A1 (en) 1994-12-22
EP0704073A1 (en) 1996-04-03
US5495592A (en) 1996-02-27
CA2162115A1 (en) 1994-12-22
AU7108994A (en) 1995-01-03
JP3637922B2 (ja) 2005-04-13

Similar Documents

Publication Publication Date Title
JPH08511640A (ja) プロセッサにおけるさまざまな長さの文字列中のターミネーション文字を発見する方法および装置
US5517651A (en) Method and apparatus for loading a segment register in a microprocessor capable of operating in multiple modes
KR100571325B1 (ko) 어레이 처리 동작
US4205370A (en) Trace method and apparatus for use in a data processing system
EP1226492B1 (en) Method and apparatus for maintaining context while executing translated instructions
US5640503A (en) Method and apparatus for verifying a target instruction before execution of the target instruction using a test operation instruction which identifies the target instruction
EP0730226A2 (en) Hardware support for fast software emulation of unimplemented instructions
JPH06236268A (ja) 命令の長さを判定する装置と方法
JPH07105002A (ja) 計算機システム
AU642927B2 (en) Minimizing hardware pipeline breaks using software scheduling techniques during compilation
JP3631896B2 (ja) オブジェクト変換装置及びオブジェクト変換方法及びプログラム記録媒体
JPH09503327A (ja) 可変長の文字ストリング用のプロセッサ
US5692146A (en) Method of implementing fast 486TM microprocessor compatible string operations
US5564030A (en) Circuit and method for detecting segment limit errors for code fetches
US4028670A (en) Fetch instruction for operand address calculation
US20070260826A1 (en) Compare, swap and store facility with no external serialization
US20040044885A1 (en) Performing repeat string operations
JP3170472B2 (ja) レジスタ・リマップ構造を有する情報処理システム及び方法
EP0509558A2 (en) Information processing system with support means responsive to an overall system control
US5896526A (en) Programmable instruction trap system and method
US5799166A (en) Window delta from current window for fast register file address dependency checking
US5045992A (en) Apparatus for executing instruction regardless of data types and thereafter selectively branching to other instruction upon determining of incompatible data type
US5829049A (en) Simultaneous execution of two memory reference instructions with only one address calculation
EP0297890B1 (en) Apparatus and method for data induced condition signaling
US20030074533A1 (en) Instruction pair detection and pseudo ports for cache array

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040302

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040528

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040712

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040809

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040928

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040930

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20041116

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050104

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080121

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090121

Year of fee payment: 4

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090121

Year of fee payment: 4

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090121

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100121

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110121

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110121

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120121

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130121

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130121

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term