JPS62205431A - 分岐命令処理方式 - Google Patents

分岐命令処理方式

Info

Publication number
JPS62205431A
JPS62205431A JP4898786A JP4898786A JPS62205431A JP S62205431 A JPS62205431 A JP S62205431A JP 4898786 A JP4898786 A JP 4898786A JP 4898786 A JP4898786 A JP 4898786A JP S62205431 A JPS62205431 A JP S62205431A
Authority
JP
Japan
Prior art keywords
module
branch
branch instruction
label
instruction
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.)
Pending
Application number
JP4898786A
Other languages
English (en)
Inventor
Mitsuko Okumura
奥村 晃子
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP4898786A priority Critical patent/JPS62205431A/ja
Publication of JPS62205431A publication Critical patent/JPS62205431A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 (1)産業上の利用分野 本発明は分岐命令処理力式に関し、とくに連係編集プロ
グラムの処理力式に関する。
(2)従来の技術 従来、分岐命令と七の分岐命令が参照しているラベルと
の距離によってコード長が異なる分岐命令を有するマイ
、クロプロセッサ用の分岐命令は、ユーザがコーティン
グするときに逃択して指定するか、コンパイラやアセン
ブラ等の翻訳プログラムが分岐命令とその分岐命令の分
岐先の位置によってなるべく短いコード長の分岐命令に
置換えられる仮の分岐命令(以下、これを仮分岐命令と
いう)をユーザが記述したものについて、翻訳プログラ
ムが選択して仮分岐命令と選択した分岐砧令を置換えて
いた。
一刀、プログラムはモジー一層分割して、個々にコンパ
イルやアセンブルを行った恢にモジュールを結合して作
成する方法が一般的であるが、従来の技術では翻訳プロ
グラムによる分岐命令の選択は1回にコンパイルまたは
アセンブルするモジュール内に限られてしまう。ユーザ
がモジュール間分岐命令に対して分岐命令の選択を行う
ことは、モジュール結合後のモジュール間の相対番地を
ユーザが知らねばならないため、非常に難しかりた。
とくに、連係編集プログラムは翻訳プログラムにより出
力されたモジュールの命令コードと外部定義情報や外部
参照情報、およびモジュールの先頭アドレスが決定した
ときに変更しなければならない命令の位置情報(以下、
貴装置情報という)を入力して、モジュール間の連結と
アドレス解決処理を行ない、再配置情報をもとにモジュ
ールの先殆アドレスの決定にともなうアドレスの更新を
行なうものであるが、分岐命令のコード長を変更する機
能を持っていないため、モジュール間分岐命令に対し7
て短いコード長の分岐命令を選択することはできなかっ
た。
(3)発明が解決しようとする問題点 上述したように従来は、プログラムの翻訳において、ユ
ーザまたは翻訳プログ2ムが、コンパイルまたはアセン
ブル以前に解決できる範囲のみで分岐命令を選択してい
て、モジュール間の分岐命令についてはコード長の短い
分岐命令で分岐できるか否かを判定する情報を翻訳プロ
グラムが持っていないため、最急の場合を考慮してコー
ド長の最も長い分岐命令に置換えていた。また、従来の
連係編集プログラム忙おいては、アドレス解決およびプ
ログラム再配置のみを行っており、モジュール間分岐命
令の最適化を行う機能は持っていなかった。従ってモジ
ュール結合の結果、短いコード長の分岐命令による分岐
が可能な場合にも、翻訳プログラムが長いコード長の分
岐命令に置換えたままになり、プログラム全体のコード
長が長くなってしまうという欠点があった。
本発明の目的は、上述の欠点を除去し、モジュール間分
岐命令の最適化を行うという方式を提供することにある
(4)問題点を解決するための手段 本発明の分岐命令処理方式は、モジュール・サイズを保
持する手段と、モジュール間分岐命令の分岐命令が属す
るモジュールの先頭からの相対番地を保持する手段、モ
ジュール間分岐命令の分岐命令が属するモジ為−ルの終
わりからの相対番地を保持する手段、モジュール間分岐
命令によシ参照されているラベルを保持する手段と、ラ
ベルが属するモジュール以外のモジュールから参照され
るラベルを保持する手段、ラベルが為するモジエール以
外のモジュールから参照されるラベルのモジュール先頭
からの相対番地を保持する手段、ラベルが属するモジュ
ール以外のモジュールから参照されるラベルのモジエー
ル終わりからの相対番地を保持する手段を用いて、プロ
グラム内のすべてのモジエール間分岐命令についてコー
ド長の短い分岐命令で分岐可能であればコード長の短い
分岐命令に最適化することを特徴とする。
C5)実施例 次に、本発明について図面を参照して説明する。
第1図は本発明の処理方式を示すファイル関連図であっ
て、翻訳プログラムであるアセンプ2と連係編集プログ
ラムであるリンカを例に取ってファイルの入出力関係を
示している0アセンブラ1はユーザ争プログ2ムのンー
ス・モジュール2を入力して、オブジェクト・モジュー
ル3と、モジュール・サイズを保持する手段、モジュー
ル間分岐命令の分岐命令が属するモジュールの先頭から
の相対番地を保持する手段、モジュール間分岐命令の分
岐命令が属するモジュールの終わシからの相対番地を保
持する手段、モジュール間分岐命令によシ参照されてい
るラベルを保持する手段、ラベルが属するモジュール以
外のモジュールから参照されるラベルを保持する手段、
ラベルが属するモジュール以外のモジュールから参照さ
れるラベルのモジュール先頭からの相対番地を保持する
手段、ラベルが属するモジュール以外のモジュールから
参照されるラベルのモジュール終わりからの相対番地を
保持する手段を具備したテーブル6を出力する。リンカ
7はオブジェクト−モジュール3.4.5とテーブル6
.9.10を入力し、ロード−モジュール8を出力する
第2図は丸−ザ・プログラムの@半な例であって、モジ
エール11.12、]3の三つのモジュールからなり、
モジュール間分岐命令の分岐先とその分岐先への仮分岐
命令の部分だけを取出して記述しである。ここで、モジ
ュール11内のA:、モジュール12内のB:、モジュ
ール13内のC:はそれぞれラベルA%B、Cを有する
分岐命令の分岐先を、branchA%branch 
B、、branch CはそれぞれラベルA%B%Cへ
の分岐を示す仮分岐命令を示す。
第3図は第2図のユーザ・プログラムのもモジュールを
翻訳プログラムが処理したときに生成するテーブルで、
テーブル21はモジュール11のテーブル、テーブル2
2はモジュール】2のテーブル、テーブル23はモジュ
ール】3のテーブルを示す。
第4図は第2図のユーザのプログラムの各モジュールを
連係編集プログラムが結合した状態を示す。
第1図に示すように、コンパイラやアセンブラ等の翻訳
プログラムは、コンパイルまたはアセンブル時に本発明
のテーブルを生成し、リンカ等の連係編集プログラムは
このテープ′ルを参照して、最適な分岐命令を選択し、
生成するロード・モジュールに埋込んでいくoこの過程
を第2図のユーザ舎プログラムの例を用いて説明する。
モジエール11はモジュール間分岐命令の分岐先として
ラベルA1モジュール間分岐命令の仮分岐命令としてb
ranch A、 branch B%branch 
Cを有し、モジュール12はモジュール間分岐命令の分
岐先としてラベルBを有し、モジュール13はモジュー
ル間分岐命令の分岐先としてラベルC,モジュール間分
岐命令の仮分岐命令として二つのbranchBを有す
る。
翻訳プログラムでは、第3図のモジュール毎にテーブル
21.22.23にモジュール・サイズ、モジュール間
にわたる仮分岐命令拠関して分岐先のラベル、モジュー
ル始めからの相対番地、モジュール終わりからの相対番
地と、モジュール間分岐命令の分岐先に関して2ペル、
モジュール始めからの相対番地、モジュール終わりから
の相対番地を設定していく。このとき、仮分岐命令はコ
ード長の最も長い分岐命令と同じコード長としてモジュ
ール・サイズ、相対番地を計算する。
翻訳プログラムは第2図のモジュール11を処理する際
に、第3図のテーブル21にモジュール書サイズに1と
、branch Bの分岐先のラベルB1モジュール始
めからの相対番地nl、モジュール終わりからの相対番
地m1と、branch Cの分岐先のラベルC1モジ
ュール始めからの相対番地n2、モジュール終わりから
の相対番地m2と、ラベルA、Aのモジュール始めから
の相対番地n3、モジュール終わりからの相対番地m3
を設定し、モジュール12を処理する際に、テーブル2
2にモジュール・サイズに2と、ラベルB、Hのモジュ
ール始めからの相対番地n4.モジュール終わりからの
相対番地m4を設定し、モジュール13を処理する際に
、テーブル23にモジュール・サイズに3と、bran
ch Bの分岐先のラベルB1モジュール始めからの相
対番地n5、モジュール終わりからの相対番地m5と、
2番めのbranch Bの分岐先のラベルB1モジュ
ール始めからの相対番地n7、モジュール終わりからの
相対番地m7と、ラベルC1Cのモジュール始めからの
相対番地n6.モジュール鹸わりからの相対番地m6を
設定する。また、モジュール内の仮分岐命令に関して、
仮分岐命令とその分岐先の相対番地を計算し、実際の分
岐命令に置換える。また再配置情報としてアドレスを参
照している部分は、参照しているアドレスと参照先のア
ドレスの情報を残しておく。これは、仮分岐命令が連係
編集プログラムによってコード長の短い分岐命令に置換
った場合に短くされた分岐命令以降の参照しているアド
レスあるいは参照先のアドレスを更新修正するためであ
る。
連係編集プログラムは、モジュールを連結し、すべての
仮分岐命令に関して仮分岐命令と分岐先の相対番地を計
算し、必要なコード長の分岐命令に;#換えていきなが
らロードモジュールを出カシていく。
第4図のようにモジュール11、モジュール12、モジ
ュール13の順に連結する場合連係編集プログラムはモ
ジュール11に関して、テーブル21を参照して1番目
の仮分岐命令branch Bのモジュール終わりから
の相対番地m】とその仮分岐命令の分岐先Bに関してテ
ーブル22を参照して分岐先Bのモジュール始めからの
相対番地n4の和(ml +n4 )を計算し、コード
長の短い分岐命令によって分岐できる範囲であるかどう
かを千1定する。分岐できる範囲でなければ仮分岐命令
bra−nch Bをコード長の長い分岐命令に置換え
、分岐できる範囲であればコード長の短い分岐命令に置
換える0もし短い分岐命令に置換えられた場合には、(
コード長の長い分岐命令のコードナイズーコード長の短
い分岐命令のコードサイズ)の差分短くされた分岐命令
のアドレス以降のアドレスを参照しているアドレスと参
照先のアドレスがずれるので再配置情報の内容の補正を
行なう。次にテーブル21の2査目の仮分岐命令bra
nch Cについて同様に仮分岐命合branch C
のモジュール終わりからの相対番地m2、モジュール1
2のモジュール・サイズに2、その仮分岐命骨の分岐先
Cのモジュール始めからの相対番地n6の和(m2+k
z+n6)を計算し、コード長の短い分岐命令によって
分岐できる範囲であるかどうかを判定する。分岐できる
範囲でなければ仮分岐命令bra −nch Cをコー
ド長の長い分岐命令に置換え、分岐できる範囲であれば
コード長の短い分岐命令に置換える◇また短い分岐命令
に置換えられた場合には、(コード長の長い分岐命令の
コードサイズ−コード長の短い分岐命令のコードサイズ
)の差分の再配置情報に対する補正を行なう。モジュー
ル1302つのbranch Bについても同様に計算
し、判定し、分岐命令と置換え、再配置情報の補正を行
なう◇ すべての仮分岐命令の置換えが終了したら、再配置情報
によりアドレスを参照している部分に対してコード長が
変わったことによる修正を行う0翻訳プログラムにより
、モジュール11のbra nchAには分岐命令とラ
ベルAを指すアドレスが割当てられるが、branch
 B 、 branch Cのコード長が短くなった場
合ラベルAのアドレスも変化する。
このため、すべての仮分岐命令に対する分岐命令への置
換えが決定した後に、再配電情報によシアドレス参照部
分のアドレス情報を変更されたアドレスに更新する0 1G)発明の効果 以上説!Jりしたように本発明は、モジュール結合時に
、必贋な長さのコード長の分岐命令で仮分岐命令を置換
えることにより、プログラム全体のコード数を減らし、
より小さいメモリ上での動作を可能にする効果がある。
【図面の簡単な説明】
第1図は本発明の処理方式を採用した翻訳プログラムの
簡単な入出力図、第2図はユーザ・プログラムの一例を
示す図、第3図は第2図のユーザ・プログラムの各モジ
ュールを翻訳プログラムが処理したときに生成するテー
ブルを示す図、第4図は第2図のユーザ・プログラムの
各モジュールを連係災集プログラムが連結し7た状態を
示す図である0 1・・・・・・アセ7ブラ、2・・・・・・ユーザープ
ログラムのンース・モジュール、3・・・・オブジェク
ト−モジュール、4・・・・・・オブジェクト−モジュ
ール、5・・・・・・オブジェクト−モジュール、6・
・・・・・本発明のテーブル、7・・・・・・リンカ、
8・・・・・・ロード−モジュール、9・・・・・・本
発明のテーブル、10・・・・・本発明のテーブル、1
1・・・・・・ユーザ・プログラムのモジュール(モジ
ュー/L/11)、12・・・・・・ユーザ・プログラ
ムのモジュール(モジュール12)、13・・・・・・
ユーザープログラムのモジュール(モジュール13)、
21・・・・・・モジュール】】のテーブル、22・・
・・・・モジュール】2のテーブル、23・・・・・・
モジュール13のテーブル、31・・・・・・結合後の
ユーザーグログラム。 第I 図 −旧 牟3 口

Claims (1)

    【特許請求の範囲】
  1. 分岐命令とその分岐命令が参照しているラベルとの距離
    によってコード長が異なる分岐命令を有するマイクロプ
    ロセッサ用の連係編集プログラムに対して、モジュール
    ・サイズを保持する手段と、モジュール間分岐命令の分
    岐命令が属するモジュールの先頭からの相対番地を保持
    する手段、モジュール間分岐命令の分岐命令が属するモ
    ジュールの終わりからの相対番地を保持する手段、モジ
    ュール間分岐命令により参照されているラベルを保持す
    る手段と、ラベルが属するモジュール以外のモジュール
    から参照されるラベルを保持する手段、ラベルが属する
    モジュール以外のモジュールから参照されるラベルのモ
    ジュール先頭からの相対番地を保持する手段、ラベルが
    属するモジュール以外のモジュールから参照されるラベ
    ルのモジュール終わりからの相対番地を保持する手段と
    を用いてモジュール間の分岐命令の最適化を行なうこと
    を特徴とする分岐命令処理方式。
JP4898786A 1986-03-05 1986-03-05 分岐命令処理方式 Pending JPS62205431A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4898786A JPS62205431A (ja) 1986-03-05 1986-03-05 分岐命令処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4898786A JPS62205431A (ja) 1986-03-05 1986-03-05 分岐命令処理方式

Publications (1)

Publication Number Publication Date
JPS62205431A true JPS62205431A (ja) 1987-09-10

Family

ID=12818584

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4898786A Pending JPS62205431A (ja) 1986-03-05 1986-03-05 分岐命令処理方式

Country Status (1)

Country Link
JP (1) JPS62205431A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01310437A (ja) * 1988-06-08 1989-12-14 Nec Corp ロードモジュール生成方式
JPH04330526A (ja) * 1991-01-31 1992-11-18 Nec Ic Microcomput Syst Ltd リローケタブル・アセンブラ
JPH06301533A (ja) * 1993-04-14 1994-10-28 Nec Corp データ処理装置
JPH08241196A (ja) * 1995-03-05 1996-09-17 Nec Corp 分岐命令処理方式
EP0803805A1 (en) * 1996-04-25 1997-10-29 Nec Corporation Assembler

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01310437A (ja) * 1988-06-08 1989-12-14 Nec Corp ロードモジュール生成方式
JPH04330526A (ja) * 1991-01-31 1992-11-18 Nec Ic Microcomput Syst Ltd リローケタブル・アセンブラ
JPH06301533A (ja) * 1993-04-14 1994-10-28 Nec Corp データ処理装置
JPH08241196A (ja) * 1995-03-05 1996-09-17 Nec Corp 分岐命令処理方式
US5740447A (en) * 1995-03-05 1998-04-14 Nec Corporation Branch instruction optimizing process system in linkage editor
EP0803805A1 (en) * 1996-04-25 1997-10-29 Nec Corporation Assembler

Similar Documents

Publication Publication Date Title
JP2838855B2 (ja) コンパイラの最適化方法
EP0889405A1 (en) Software debugging method
JPS62205431A (ja) 分岐命令処理方式
JP3047771B2 (ja) 分岐命令処理方法及び装置
CN100437476C (zh) 用于处理文件的机器执行方法及结合该方法的机器
CN114791811B (zh) 一种基于元函数模板的汇编器实现方法
JPH08227363A (ja) 分岐命令処理方法
JPH02245934A (ja) データ処理装置
JP2008204023A (ja) プログラマブルコントローラシステム、プログラマブルコントローラのデバッグ方法
JPS5922140A (ja) 対話型コンパイル方式
JP6944838B6 (ja) 変換装置および変換方法
JP2000155673A (ja) リンク装置及びリンク方法
JPH0659903A (ja) リロケータブル・アセンブル・システム
JPH0651993A (ja) アセンブル装置
JPS6326730A (ja) プログラム修正方式
JP3278613B2 (ja) 言語処理システム及びその言語処理方法
JPH025131A (ja) 実行ユニット変更方式
JPH02310627A (ja) 言語処理プログラミングにおけるオブジェクトプログラムのリンク方法
JPH0695307B2 (ja) 言語処理プリプロセッサ
JPH11345126A (ja) 命令変換方法
JPH0126091B2 (ja)
JPH03228137A (ja) 構造化アセンブラの最適命令生成処理方式
JPH01161534A (ja) アセンブラ方式
JPH1124939A (ja) プログラム変換方法
JPH03156641A (ja) コンパイル処理方式