JPH07121380A - コンパイル装置 - Google Patents

コンパイル装置

Info

Publication number
JPH07121380A
JPH07121380A JP27030493A JP27030493A JPH07121380A JP H07121380 A JPH07121380 A JP H07121380A JP 27030493 A JP27030493 A JP 27030493A JP 27030493 A JP27030493 A JP 27030493A JP H07121380 A JPH07121380 A JP H07121380A
Authority
JP
Japan
Prior art keywords
base value
instruction
data segment
segment
destination label
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.)
Withdrawn
Application number
JP27030493A
Other languages
English (en)
Inventor
Tateki Takahashi
干城 高橋
Masahiro Takeda
昌弘 竹田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP27030493A priority Critical patent/JPH07121380A/ja
Publication of JPH07121380A publication Critical patent/JPH07121380A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】 【目的】本発明は、ソースプログラムをコンパイルする
ことで、主記憶をセグメントに分けて管理する構成を採
る中央処理装置で動作するオブジェクトを生成するコン
パイル装置に関し、オブジェクト量の削減を目的とす
る。 【構成】オブジェクトを生成していくときに、オブジェ
クト生成対象が分岐命令か分岐先ラベルであるかを判断
する判断部16と、分岐命令/分岐先ラベルが判断され
るときに、セグメントのベース値を管理するセグメント
レジスタが、アクセス頻度の高いセグメントのベース値
を保持しているのか否かを検出する検出部17と、アク
セス頻度の高いセグメントのベース値の非保持が検出さ
れるときに、そのベース値をセグメントレジスタに設定
することを指示するオブジェクトを生成して、分岐命令
/分岐先ラベルに割り付ける割付部18とを備えるよう
に構成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、ソースプログラムをコ
ンパイルすることで、主記憶をセグメントに分けて管理
する構成を採る中央処理装置で動作するオブジェクトを
生成するコンパイル装置に関し、特に、オブジェクト量
の削減を図って、高速な実行処理を実現するコンパイル
装置に関する。
【0002】
【従来の技術】主記憶をセグメントに分けて管理する構
成を採る中央処理装置で動作するオブジェクトでは、デ
ータセグメントレジスタ(複数用意されることもある)
に対して、アクセス対象となるメモリデータの存在する
データセグメントのベース値を保持する構成を採って、
そのデータセグメントレジスタの保持するベース値から
のオフセットを使って命令を記述するという構成を採っ
ている。
【0003】このデータセグメントは、命令においてア
クセスされるメモリデータを管理するセグメントであっ
て、例えば1セグメントの容量が64Kであるときに、
メモリデータが64Kを超えるようなときには、図6に
示すように複数生成されることになる。
【0004】従って、例えば、「MOV AX,DS:
100」という命令は、データセグメントレジスタDS
の指すベース値が図6のデータセグメント1を示してい
る場合には、データセグメント1のオフセット100と
いう格納位置のメモリデータをレジスタAXに転記する
ことを指示することになる。
【0005】なお、セグメントには、このデータセグメ
ントの他に、図7に示すような命令列を管理するコード
セグメントが存在して、データセグメントレジスタの他
に、このコードセグメントのベース値を保持するための
コードセグメントレジスタが用意されている。
【0006】この構成に従うオブジェクトには、当然の
如く、図8に示すように分岐命令と分岐先ラベルとが含
まれる。この分岐先ラベル後の図中のの命令について
考えてみるに、このの命令では、メモリデータをアク
セスする必要が出てくることになるが、従来技術では、
この命令の直前に、必ず、「MOV DS メモリデー
タの存在するデータセグメントのベース値」という命令
のオブジェクトを生成するという構成を採っていた。こ
こで、メモリデータの存在するデータセグメントのベー
ス値は、コンパイル処理途中で生成される中間言が把握
している。
【0007】このような命令のオブジェクトを生成する
理由は、分岐先ラベルでは、図中ののように分岐命令
より分岐して処理が流れてくる場合もあるし、図中の
のように分岐しないで直線的に処理が流れてくる場合も
あるが、コンパイラは、このどちらであるかを意識する
ことができない。このことは、分岐先ラベルに処理が流
れてきた時点におけるデータセグメントレジスタが、ど
のデータセグメントのベース値を保持しているのかが分
からないことを意味する。すなわち、直線的に処理が流
れてくる場合には、データセグメントレジスタに設定さ
れるベース値が分岐命令時点のものとは異なるものとな
る可能性があるからである。
【0008】これから、コンパイラは、確実にメモリデ
ータをアクセスできるようにするために、アクセス対象
のメモリデータの展開されるデータセグメントの持つベ
ース値をロードする上述のロード命令を必ず生成してい
く必要がある。
【0009】このように、従来技術では、分岐先ラベル
のオブジェクトを生成した後、メモリデータをアクセス
する命令のオブジェクトを生成する場合には、既にデー
タセグメントレジスタがアクセス対象のメモリデータの
ベース値を保持している可能性はあるが、保持していな
い場合もあるという理由により、図9のに示すよう
に、常に、アクセス対象のメモリデータのベース値をデ
ータセグメントレジスタにロードするというオブジェク
トの命令を生成するという構成を採っていたのである。
【0010】
【発明が解決しようとする課題】しかるに、プログラム
規模がそれほど大きなものでないときには、アクセス頻
度の高いメモリデータは、通常、特定のデータセグメン
ト(例えば、先頭のデータセグメント)に存在している
ことが多く、これがために、命令中でメモリデータのア
クセスを行う場合に、データセグメントレジスタのベー
ス値が変更されていることは殆ど起こらない。
【0011】しかしながら、従来技術に従っていると、
分岐先ラベルの後では、必ずベース値のロード命令のオ
ブジェクトを生成する構成を採っていることから、オブ
ジェクト量が増加するとともに、それに応じて実行速度
が低下するという問題点があった。
【0012】本発明はかかる事情に鑑みてなされたもの
であって、ソースプログラムをコンパイルすることで、
主記憶をセグメントに分けて管理する構成を採る中央処
理装置で動作するオブジェクトを生成するときにあっ
て、オブジェクト量の削減を図って、高速な実行処理を
実現する新たなコンパイル装置の提供を目的とする。
【0013】
【課題を解決するための手段】図1に本発明の原理構成
を図示する。図中、1はデータ処理装置、2はデータ処
理装置1に展開される本発明を実現するコンパイラであ
って、ソースプログラムをコンパイルすることで、主記
憶をセグメントに分けて管理する構成を採る中央処理装
置で動作するオブジェクトを生成するものである。
【0014】このコンパイラ2は、ソースプログラムを
受け取って構文解析処理を実行する構文解析部10と、
構文解析部10の後段に接続されて意味解析処理を実行
する意味解析部11と、意味解析部11により生成され
る中間言を管理する中間言管理部12と、中間言を受け
取って最適化処理を実行する最適化部13と、最適化部
13の後段に接続されて領域割付処理を実行する領域割
付部14と、領域割付部14の後段に接続されてオブジ
ェクトを生成するオブジェクト生成部15とを備える。
【0015】そして、このオブジェクト生成部15は、
オブジェクト生成対象が分岐命令か分岐先ラベルである
のかを判断する判断部16と、主的データセグメントレ
ジスタ(プログラム中で主的に用いられるデータセグメ
ントレジスタ)がアクセス頻度の高いデータセグメント
のベース値を保持しているのか否かを検出する検出部1
7と、分岐命令/分岐先ラベルに規定のオブジェクトを
割り付ける割付部18とを備える。
【0016】
【作用】本発明のオブジェクト生成部15では、判断部
16は、オブジェクトを生成していくときに、オブジェ
クト生成対象が分岐命令か分岐先ラベルであるのかを判
断し、この判断結果に従って、生成対象のオブジェクト
が分岐命令か分岐先ラベルであることが判断されると、
検出部17は、主的データセグメントレジスタがアクセ
ス頻度の高いデータセグメントのベース値を保持してい
るのか否かを検出する。
【0017】この検出結果に従って、主的データセグメ
ントレジスタがアクセス頻度の高いデータセグメントの
ベース値を保持していないことが検出されると、割付部
18は、そのアクセス頻度の高いデータセグメントのベ
ース値を主的データセグメントレジスタに設定すること
を指示するオブジェクト生成して、判断部16の判断し
た分岐命令/分岐先ラベルに割り付ける。
【0018】このようにして、本発明では、分岐先ラベ
ルの所で、分岐して処理が流れてくる場合にも、分岐せ
ずに処理が流れてくる場合にも、主的データセグメント
レジスタにアクセス頻度の高いデータセグメントのベー
ス値が設定されることを保証する。これにより、特定の
データセグメントにアクセス頻度の高いメモリデータが
集中している場合には、主的データセグメントレジスタ
にベース値を設定することを指示するオブジェクトを生
成する必要がなくなることから、オブジェクト量を削減
できるようになる。従って、本発明を用いることで従来
よりもデータ処理を高速に実行できるようになる。
【0019】
【実施例】以下、実施例に従って本発明を詳細に説明す
る。図2に、図1で説明したオブジェクト生成部15
が、オブジェクト生成対象が分岐命令か分岐先ラベルで
あることを検出するときに実行する処理フローを図示す
る。次に、この処理フローに従って、本発明がコンパイ
ル処理時に実行するオブジェクト生成の最適化処理につ
いて詳細に説明する。
【0020】オブジェクト生成部15は、オブジェクト
生成対象が分岐命令であることを検出すると、図2の処
理フローに示すように、先ず最初に、ステップ1で、主
的に用いられているデータセグメントレジスタDSが、
使用頻度の高いベース値(すなわち、アクセス頻度の高
いデータセグメントのベース値)を保持しているのか否
かをチェックする。例えば、データセグメント1と、デ
ータセグメント2という2つのデータセグメントが存在
するときにあって、データセグメント1のメモリデータ
の方がアクセス頻度が高い場合には、データセグメント
レジスタDSがデータセグメント1のベース値を保持し
ているのか否かをチェックするのである。
【0021】このチェック処理に従って、データセグメ
ントレジスタDSが使用頻度の高いベース値を保持して
いないことを判断するときには、ステップ2に進んで、
データセグメントレジスタDSに使用頻度の高いベース
値を保持させるロード命令のオブジェクトを生成して出
力する。そして、続くステップ3で、その後に分岐命令
のオブジェクトを出力する。
【0022】このようにして、分岐命令のオブジェクト
の出力位置において、データセグメントレジスタDSが
使用頻度の高いベース値を保持していないときには、図
3のに示すように、「MOV DS,ベース値1」と
いうロード命令のオブジェクトが出力されることにな
る。
【0023】一方、ステップ1でのチェック処理に従っ
て、データセグメントレジスタDSが使用頻度の高いベ
ース値を保持していることを判断するときには、直ちに
ステップ3に進んで、分岐命令のオブジェクトを出力す
る。
【0024】また、オブジェクト生成部15は、オブジ
ェクト生成対象が分岐先ラベルであることを検出する
と、図2の処理フローに示すように、先ず最初に、デー
タセグメントレジスタDSが、使用頻度の高いベース値
を保持しているのか否かをチェックする。
【0025】このチェック処理に従って、データセグメ
ントレジスタDSが使用頻度の高いベース値を保持して
いないことを判断するときには、ステップ2に進んで、
データセグメントレジスタDSに使用頻度の高いベース
値を保持させるロード命令のオブジェクトを生成して分
岐先ラベルに続く位置に出力する。そして、続くステッ
プ3で、その後の命令のオブジェクトを出力する。
【0026】一方、ステップ1でのチェック処理に従っ
て、データセグメントレジスタDSが使用頻度の高いベ
ース値を保持していることを判断するときには、直ちに
ステップ3に進んで、その後の命令のオブジェクトを出
力する。
【0027】この図2の処理フローの実行に従って、分
岐命令のオブジェクトの出力位置において、データセグ
メントレジスタDSが使用頻度の高いベース値を保持し
ていないときには、図4のに示すように、「MOV
DS,ベース値1」というロード命令のオブジェクトが
出力されることになるとともに、分岐先ラベルの出力位
置において、データセグメントレジスタDSが使用頻度
の高いベース値を保持していないときには、図4のに
示すように、「MOV DS,ベース値1」というロー
ド命令のオブジェクトが出力される。なお、データセグ
メントレジスタDSが使用頻度の高いベース値を保持し
ているときに、これらのロード命令のオブジェクトは出
力されることはない。
【0028】このロード命令の出力処理に従って、図4
ののように、分岐命令により分岐して分岐先ラベルに
処理が進んでくる場合にも、図4ののように、分岐命
令で分岐せずに分岐先ラベルに処理が進んでくる場合に
も、分岐先ラベル後におけるデータセグメントレジスタ
DSは、必ず使用頻度の高いベース値を保持することに
なる。
【0029】このようにして、従来であれば、分岐先ラ
ベルのオブジェクトを生成した後、必ず、アクセス対象
のメモリデータのベース値をデータセグメントレジスタ
にロードするという命令のオブジェクトを生成していた
のに対して、本発明を用いることで、そのようなオブジ
ェクトの生成を必ずしも必要しなくなって、従来よりも
オブジェクト量を削減できるようになる。そして、それ
に応じて、高速処理が可能になるのである。
【0030】この本発明による高速処理の効果は、プロ
グラムにループ処理が含まれる場合に一層効果的なもの
となる。すなわち、図5に示すように、レジスタAXの
値をレジスタCXが保持する値の回数分、メモリ中のデ
ータに転記するループ処理があり、かつ、図中のでア
クセスするデータはアクセス頻度の高いデータセグメン
トに存在することを想定すると、従来であれば、図中の
に示すように、分岐先ラベルの後にロード命令のオブ
ジェクトが必ず生成されていたのに対して、本発明を用
いると、こののロード命令の生成が抑止されるととも
に、分岐先命令の生成時にもロード命令が生成されるこ
とがない。従って、従来技術に従っていると、レジスタ
CXの保持するループ回数分、このの命令が実行され
るのに対して、本発明を用いると、この命令を1回も実
行する必要がなくなる。
【0031】
【発明の効果】以上説明したように、本発明によれば、
ソースプログラムをコンパイルすることで、主記憶をセ
グメントに分けて管理する構成を採る中央処理装置で動
作するオブジェクトを生成するときにあって、オブジェ
クト量の削減を実現できるようになる。そして、それに
応じて、高速な実行処理を実現するオブジェクトを生成
できるようになる。
【図面の簡単な説明】
【図1】本発明の原理構成図である。
【図2】オブジェクト生成部の実行する処理フローであ
る。
【図3】本発明の動作説明図である。
【図4】本発明の動作説明図である。
【図5】本発明の効果を説明するための図である。
【図6】データセグメントの説明図である。
【図7】コードセグメントの説明図である。
【図8】分岐命令を含むプログラムの一例である。
【図9】従来技術の説明図である。
【符号の説明】
1 データ処理装置 2 コンパイラ 10 構文解析部 11 意味解析部 12 中間言管理部 13 最適化部 14 領域割付部 15 オブジェクト生成部 16 判断部 17 検出部 18 割付部

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 ソースプログラムをコンパイルすること
    で、主記憶をセグメントに分けて管理する構成を採る中
    央処理装置で動作するオブジェクトを生成するコンパイ
    ル装置において、 オブジェクトを生成していくときに、オブジェクト生成
    対象が分岐命令か分岐先ラベルであるのかを判断する判
    断部(16)と、 上記判断部(16)が分岐命令か分岐先ラベルであることを
    判断するときに、セグメントのベース値を管理するセグ
    メントレジスタが、アクセス頻度の高いセグメントのベ
    ース値を保持しているのか否かを検出する検出部(17)
    と、 上記検出部(17)がアクセス頻度の高いセグメントのベー
    ス値を保持していないことを検出するときに、該ベース
    値を上記セグメントレジスタに設定することを指示する
    オブジェクトを生成して、上記判断部(16)の判断した分
    岐命令/分岐先ラベルに割り付ける割付部(18)とを備え
    ることを、 特徴とするコンパイル装置。
JP27030493A 1993-10-28 1993-10-28 コンパイル装置 Withdrawn JPH07121380A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP27030493A JPH07121380A (ja) 1993-10-28 1993-10-28 コンパイル装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP27030493A JPH07121380A (ja) 1993-10-28 1993-10-28 コンパイル装置

Publications (1)

Publication Number Publication Date
JPH07121380A true JPH07121380A (ja) 1995-05-12

Family

ID=17484414

Family Applications (1)

Application Number Title Priority Date Filing Date
JP27030493A Withdrawn JPH07121380A (ja) 1993-10-28 1993-10-28 コンパイル装置

Country Status (1)

Country Link
JP (1) JPH07121380A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011123719A (ja) * 2009-12-11 2011-06-23 Renesas Electronics Corp 言語処理システム、言語処理方法、及び言語処理用プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011123719A (ja) * 2009-12-11 2011-06-23 Renesas Electronics Corp 言語処理システム、言語処理方法、及び言語処理用プログラム

Similar Documents

Publication Publication Date Title
JP3320358B2 (ja) コンパイル方法、例外処理方法、及びコンピュータ
US6721944B2 (en) Marking memory elements based upon usage of accessed information during speculative execution
US5761514A (en) Register allocation method and apparatus for truncating runaway lifetimes of program variables in a computer system
US5923863A (en) Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination
JP3311462B2 (ja) コンパイル処理装置
US8671399B2 (en) Systems and methods for efficiently using stack registers and storage medium therefor
US20030023663A1 (en) Method and apparatus for enabling a compiler to reduce cache misses by performing pre-fetches in the event of context switch
JP2000222220A (ja) 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ
JPH04225431A (ja) 命令キャッシュ効率を増大するコンピュータ命令をコンパイルする方法
JP2005332387A (ja) メモリ命令をグループ化及び管理する方法及びシステム
WO2001067239A2 (en) Method and apparatus for facilitating exception handling using a conditional trap instruction
US5978905A (en) Program translating apparatus and a processor which achieve high-speed execution of subroutine branch instructions
JP3179536B2 (ja) ディジタルコンピュータの操作方法
US6314561B1 (en) Intelligent cache management mechanism
US20060277552A1 (en) Facilitating handling of exceptions in a program implementing a M-on-N threading model
JPH07121380A (ja) コンパイル装置
JP2004240953A (ja) コンピュータシステム、その同時多重スレッディング方法およびキャッシュコントローラシステム。
JP3241214B2 (ja) 分散処理装置及びプロセス実行方法
JPH0877021A (ja) 割込処理装置および方法
JPH04268928A (ja) エミュレーション装置及び半導体装置
JP3625878B2 (ja) コンパイラによるスタック領域割り付け方法
JPS62204374A (ja) 2倍演算最適化処理方式
JP2001265605A (ja) コンパイラの命令列最適化方法、コンパイラ装置、記録媒体、及びプログラム
Ogasawara Handler cloning for optimizing exception handling
JPS6074023A (ja) 変数チエツク方式

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20010130