JPH04362738A - 変数管理方法 - Google Patents
変数管理方法Info
- Publication number
- JPH04362738A JPH04362738A JP16508091A JP16508091A JPH04362738A JP H04362738 A JPH04362738 A JP H04362738A JP 16508091 A JP16508091 A JP 16508091A JP 16508091 A JP16508091 A JP 16508091A JP H04362738 A JPH04362738 A JP H04362738A
- Authority
- JP
- Japan
- Prior art keywords
- variable
- program
- variables
- integer data
- source program
- 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
Links
- 238000000034 method Methods 0.000 title description 4
- 238000007726 management method Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000005094 computer simulation Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【0001】
【産業上の利用分野】本発明は、変数への整数データの
格納形式の異なる計算機の相互で、同一のソースプログ
ラムの利用を実現する変数管理方法に関する。
格納形式の異なる計算機の相互で、同一のソースプログ
ラムの利用を実現する変数管理方法に関する。
【0002】
【従来の技術】計算機を動作させるためには、プログラ
ムが必要となる。このプログラムは、計算機の機種や使
用言語によって、種々の形式のものを用意することがで
きる。またプログラムには、必ずといって良いほど任意
のデータを格納する変数が用意される。変数には、文字
データや整数データ等、各種のデータを格納することが
できる。そして整数データを格納する変数の場合、ビッ
グエンディアンとリトルエンディアンと呼ばれる2種類
の格納形式が用意されている。
ムが必要となる。このプログラムは、計算機の機種や使
用言語によって、種々の形式のものを用意することがで
きる。またプログラムには、必ずといって良いほど任意
のデータを格納する変数が用意される。変数には、文字
データや整数データ等、各種のデータを格納することが
できる。そして整数データを格納する変数の場合、ビッ
グエンディアンとリトルエンディアンと呼ばれる2種類
の格納形式が用意されている。
【0003】図2に、一般的な変数の説明図を示す。こ
こでは、整数データとして、16進数“1234567
8”の整数データを格納する変数Hが8バイト、そして
、変数Hの読取りが2バイト単位で実行されるものとす
る。この場合、変数Hがリトルエンディアンの格納形式
を採る場合、変数Hには、整数データが“123456
78”の順番で、即ち若番地側(LSB側)に整数値の
下位桁が格納される。
こでは、整数データとして、16進数“1234567
8”の整数データを格納する変数Hが8バイト、そして
、変数Hの読取りが2バイト単位で実行されるものとす
る。この場合、変数Hがリトルエンディアンの格納形式
を採る場合、変数Hには、整数データが“123456
78”の順番で、即ち若番地側(LSB側)に整数値の
下位桁が格納される。
【0004】一方、変数Hがビッグエンディアンの格納
形式を採る場合、変数Hには、整数データが“7856
3412”の順番で、即ち若番地側(LSB側)に整数
値の上位桁が格納される。これらの格納形式は計算機(
オペレーティングシステム)固有のもので、ソースプロ
グラムを開発する際、考慮しなければならない事柄の一
つである。例えばC言語において変数には、その定義を
行なうプログラム上の位置により、グローバル変数とロ
ーカル変数(自動変数)の2つを適宜用意することがで
きる。 グローバル変数の場合、存在区間がプログラムの全体に
渡り、ローカル変数の場合、存在区間は限定された区間
(例えば特定の関数)内に制限される。ローカル変数の
内容を、定義がなされた関数以外の他の関数に渡す場合
、一般にローカル変数の内容が格納されたメモリ上の位
置を示すアドレス演算を行ない、この結果をポインタ変
数として通知することにより、ローカル変数の内容の受
渡しを実現することができる。
形式を採る場合、変数Hには、整数データが“7856
3412”の順番で、即ち若番地側(LSB側)に整数
値の上位桁が格納される。これらの格納形式は計算機(
オペレーティングシステム)固有のもので、ソースプロ
グラムを開発する際、考慮しなければならない事柄の一
つである。例えばC言語において変数には、その定義を
行なうプログラム上の位置により、グローバル変数とロ
ーカル変数(自動変数)の2つを適宜用意することがで
きる。 グローバル変数の場合、存在区間がプログラムの全体に
渡り、ローカル変数の場合、存在区間は限定された区間
(例えば特定の関数)内に制限される。ローカル変数の
内容を、定義がなされた関数以外の他の関数に渡す場合
、一般にローカル変数の内容が格納されたメモリ上の位
置を示すアドレス演算を行ない、この結果をポインタ変
数として通知することにより、ローカル変数の内容の受
渡しを実現することができる。
【0005】さて、従来ポインタ変数の通知を受けて、
ローカル変数の値を受継ぐ場合、格納形式が問題となっ
ていた。即ち、リトルエンディアンに対応した計算機上
で、ビッグエンディアンに対応したプログラムを実行さ
せ、ポインタ変数の示す内容の読取りを行なう場合、整
数データの上位桁と下位桁の順序が乱れ、全く意味の無
い整数データとして取扱う恐れがあった。このため、ソ
ースプログラムをリトルエンディアン及びビッグエンデ
ィアンの計算機の両者で利用しようとした場合、変数を
リトルエンディアンで取扱うか、ビッグエンディアンで
取扱うかの切り分けを行ない、それぞれ変数の読取り形
態を変更する必要がある。
ローカル変数の値を受継ぐ場合、格納形式が問題となっ
ていた。即ち、リトルエンディアンに対応した計算機上
で、ビッグエンディアンに対応したプログラムを実行さ
せ、ポインタ変数の示す内容の読取りを行なう場合、整
数データの上位桁と下位桁の順序が乱れ、全く意味の無
い整数データとして取扱う恐れがあった。このため、ソ
ースプログラムをリトルエンディアン及びビッグエンデ
ィアンの計算機の両者で利用しようとした場合、変数を
リトルエンディアンで取扱うか、ビッグエンディアンで
取扱うかの切り分けを行ない、それぞれ変数の読取り形
態を変更する必要がある。
【0006】図3に、従来一般の切り分けに係る説明図
を示す。図はC言語で記述されたソースプログラムの例
で、ここでは、変数lengthが4バイトの容量を持
ち、リトルエンディアンの場合、1バイト単位でLSB
側から変数の認識を行ない、ビッグエンディアンの場合
、1バイト単位でMSB側から変数の認識を行なうもの
とする。まず、ステップS1において、計算機がビッグ
エンディアンであるかの判定を行ない、判定が肯定され
た場合、ステップS2において、変数lengthのM
SB側から1バイトずつ読み出して、順次cbuf[0
〜3]に格納し、ステップS5において処理を終了する
。
を示す。図はC言語で記述されたソースプログラムの例
で、ここでは、変数lengthが4バイトの容量を持
ち、リトルエンディアンの場合、1バイト単位でLSB
側から変数の認識を行ない、ビッグエンディアンの場合
、1バイト単位でMSB側から変数の認識を行なうもの
とする。まず、ステップS1において、計算機がビッグ
エンディアンであるかの判定を行ない、判定が肯定され
た場合、ステップS2において、変数lengthのM
SB側から1バイトずつ読み出して、順次cbuf[0
〜3]に格納し、ステップS5において処理を終了する
。
【0007】ステップS1において、判定が否定された
場合、処理がステップS3に移り、ステップS4におい
て、変数lengthのMSB側から1バイトずつ読み
出し、順次cbuf[3〜0]に格納し、ステップS5
において処理を終了する。
場合、処理がステップS3に移り、ステップS4におい
て、変数lengthのMSB側から1バイトずつ読み
出し、順次cbuf[3〜0]に格納し、ステップS5
において処理を終了する。
【0008】
【発明が解決しようとする課題】変数の格納形式の異な
る計算機相互にソースプログラムを移植しようとした場
合、外部関数に変数の値を受渡す処理が実行されるソー
スプログラム上に、図3において説明したような変換用
のソースプログラムのコーディングが必ず必要となる。 このため、コーディングの手間の増加及びソースプログ
ラムの読解性が損なわれてしまうといった問題が生じて
いた。また、変換用のソースプログラムのコーディング
を忘れた場合、デバッグ作業を強いられるといった問題
も生じていた。本発明は以上の点に着目してなされたも
ので、変数の格納形式が相違してもソースプログラムの
移植を手間をかけることなく容易に行なうことができる
変数管理方法を提供することを目的とする。
る計算機相互にソースプログラムを移植しようとした場
合、外部関数に変数の値を受渡す処理が実行されるソー
スプログラム上に、図3において説明したような変換用
のソースプログラムのコーディングが必ず必要となる。 このため、コーディングの手間の増加及びソースプログ
ラムの読解性が損なわれてしまうといった問題が生じて
いた。また、変換用のソースプログラムのコーディング
を忘れた場合、デバッグ作業を強いられるといった問題
も生じていた。本発明は以上の点に着目してなされたも
ので、変数の格納形式が相違してもソースプログラムの
移植を手間をかけることなく容易に行なうことができる
変数管理方法を提供することを目的とする。
【0009】
【課題を解決するための手段】本発明の変数管理方法は
、特定の計算機上での稼働を想定して生成され、変数へ
の整数データの格納形式が前記特定の計算機に固有の形
態を採るソースプログラムを、前記変数への前記整数デ
ータの格納形式が異なる他の計算機に移植する場合、前
記ソースプログラム上に、前記変数の記述された領域を
特定する領域指示記号を記述し、前記ソースプログラム
をオブジェクトプログラムに変換するために、当該ソー
スプログラム上の全ての変数について整数データの格納
形式を判断し、前記領域指示記号で指示された領域に記
述された変数について、前記格納形式を変更するための
オブジェクトコードを付加し、前記オブジェクトプログ
ラムを生成する。
、特定の計算機上での稼働を想定して生成され、変数へ
の整数データの格納形式が前記特定の計算機に固有の形
態を採るソースプログラムを、前記変数への前記整数デ
ータの格納形式が異なる他の計算機に移植する場合、前
記ソースプログラム上に、前記変数の記述された領域を
特定する領域指示記号を記述し、前記ソースプログラム
をオブジェクトプログラムに変換するために、当該ソー
スプログラム上の全ての変数について整数データの格納
形式を判断し、前記領域指示記号で指示された領域に記
述された変数について、前記格納形式を変更するための
オブジェクトコードを付加し、前記オブジェクトプログ
ラムを生成する。
【0010】
【作用】予め、ソースプログラム上に、整数データを格
納する変数の記述された領域を特定する領域指示記号を
記述する。ソースプログラムをオブジェクトプログラム
に変換する際、領域指示記号で指示された領域に記述さ
れた変数について、格納形式を変更するためのオブジェ
クトコードを付加する。
納する変数の記述された領域を特定する領域指示記号を
記述する。ソースプログラムをオブジェクトプログラム
に変換する際、領域指示記号で指示された領域に記述さ
れた変数について、格納形式を変更するためのオブジェ
クトコードを付加する。
【0011】
【実施例】図1に、本発明に係る処理説明図を示す。な
お、ここではビッグエンディアンの計算機を想定したソ
ースプログラムを、リトルエンディアンの計算機に移植
する場合を例に説明する。図に示すように、ソースプロ
グラムSPは、構文解析装置1に内容が解析され、ソー
スプログラムSP上の整数を格納する変数について、格
納形式がビッグエンディアンであるかリトルエンディア
ンであるかが判定され、判定結果を格納する記号表2が
生成される。コンパイラ3は、記号表2を参照し、ソー
スプログラムSPのコンパイルを実施して、計算機が認
識して処理を実行するために参照するオブジェクトプロ
グラムOPの生成を行なう。
お、ここではビッグエンディアンの計算機を想定したソ
ースプログラムを、リトルエンディアンの計算機に移植
する場合を例に説明する。図に示すように、ソースプロ
グラムSPは、構文解析装置1に内容が解析され、ソー
スプログラムSP上の整数を格納する変数について、格
納形式がビッグエンディアンであるかリトルエンディア
ンであるかが判定され、判定結果を格納する記号表2が
生成される。コンパイラ3は、記号表2を参照し、ソー
スプログラムSPのコンパイルを実施して、計算機が認
識して処理を実行するために参照するオブジェクトプロ
グラムOPの生成を行なう。
【0012】ソースプログラムSPには、予めビッグエ
ンディアンを想定して記述された箇所を特定するための
構文(領域指示記号)をコーディングする。図4に、本
発明に係る構文のコーディング例を示す。図に示すよう
に、ステップS12の範囲にコーディングされた内容が
、ビッグエンディアンを想定したもので、その前後、即
ちステップS11及びステップS13において、ビッグ
エンディアンを想定してコーディングされた箇所の始ま
りと終わりを示す開始構文SW及び終了構文EWをコー
ディングする。構文解析装置1は、ソースプログラムS
P上で宣言された変数の全てについて、記号表にデータ
の格納形態と共に登録する。そして、開始構文SW及び
終了構文EWにより指示された箇所で宣言され、整数を
格納する変数については、構文の指示する格納形態、こ
の場合、ビッグエンディアンを想定してコーディングさ
れた変数であることを示す登録を記号表2に行なう。
ンディアンを想定して記述された箇所を特定するための
構文(領域指示記号)をコーディングする。図4に、本
発明に係る構文のコーディング例を示す。図に示すよう
に、ステップS12の範囲にコーディングされた内容が
、ビッグエンディアンを想定したもので、その前後、即
ちステップS11及びステップS13において、ビッグ
エンディアンを想定してコーディングされた箇所の始ま
りと終わりを示す開始構文SW及び終了構文EWをコー
ディングする。構文解析装置1は、ソースプログラムS
P上で宣言された変数の全てについて、記号表にデータ
の格納形態と共に登録する。そして、開始構文SW及び
終了構文EWにより指示された箇所で宣言され、整数を
格納する変数については、構文の指示する格納形態、こ
の場合、ビッグエンディアンを想定してコーディングさ
れた変数であることを示す登録を記号表2に行なう。
【0013】図5に、記号表2の説明図を示す。先に図
4において説明したステップS12において、整数デー
タを格納する変数として、変数lengthが宣言され
ている。このため、構文解析装置1は、変数lengt
hに対応して変数の格納形式、即ち属性としてビッグ(
ビッグエンディアン)の登録を行なう。なお、開始構文
SW及び終了構文EWにより指示された箇所以外の変数
(例えば変数i)については、計算機の機能に合わせて
、属性としてリトル(リトルエンディアン)の登録が実
施される。
4において説明したステップS12において、整数デー
タを格納する変数として、変数lengthが宣言され
ている。このため、構文解析装置1は、変数lengt
hに対応して変数の格納形式、即ち属性としてビッグ(
ビッグエンディアン)の登録を行なう。なお、開始構文
SW及び終了構文EWにより指示された箇所以外の変数
(例えば変数i)については、計算機の機能に合わせて
、属性としてリトル(リトルエンディアン)の登録が実
施される。
【0014】コンパイラ3は、構文解析装置1による記
号表2の生成が完了すると、ソースプログラムSPのコ
ンパイルを実施することになる。この際、記号表2を参
照して、属性がビッグに設定された記号(変数leng
th)を認識すると、変数lengthに係る処理部分
に、ビッグエンディアンからリトルエンディアンに格納
形式を変換するための記述、即ち、先に図3において説
明したステップS4に対応する内容のオブジェクトコー
ド(機械語)を自動的に付加し、オブジェクトプログラ
ムOPを生成する。このオブジェクトコードは、先に図
3のステップS4に示したコーディングに対応するもの
である。
号表2の生成が完了すると、ソースプログラムSPのコ
ンパイルを実施することになる。この際、記号表2を参
照して、属性がビッグに設定された記号(変数leng
th)を認識すると、変数lengthに係る処理部分
に、ビッグエンディアンからリトルエンディアンに格納
形式を変換するための記述、即ち、先に図3において説
明したステップS4に対応する内容のオブジェクトコー
ド(機械語)を自動的に付加し、オブジェクトプログラ
ムOPを生成する。このオブジェクトコードは、先に図
3のステップS4に示したコーディングに対応するもの
である。
【0015】以上の説明のように、予めソースプログラ
ムSP上に所定の構文をコーディングし、この構文に指
示された箇所の整数データを格納する変数を特定するこ
とにより、コンパイラ3による変数の格納形式の変換を
自動的に行なうことができる。本発明は、以上の実施例
に限定されない。実施例では、C言語のソースプログラ
ムを例に説明を行なったが、プログラムの言語は特に限
定されるものでなく、例えばアセンブラ言語等おいても
本発明を適用することができる。また、ビッグエンディ
アンを想定したソースプログラムを、リトルエンディア
ンの計算機に移植する場合を例に説明したが、リトルエ
ンディアンを想定したソースプログラムを、ビッグエン
ディアンの計算機に移植する場合にも本発明を適用する
ことができる。
ムSP上に所定の構文をコーディングし、この構文に指
示された箇所の整数データを格納する変数を特定するこ
とにより、コンパイラ3による変数の格納形式の変換を
自動的に行なうことができる。本発明は、以上の実施例
に限定されない。実施例では、C言語のソースプログラ
ムを例に説明を行なったが、プログラムの言語は特に限
定されるものでなく、例えばアセンブラ言語等おいても
本発明を適用することができる。また、ビッグエンディ
アンを想定したソースプログラムを、リトルエンディア
ンの計算機に移植する場合を例に説明したが、リトルエ
ンディアンを想定したソースプログラムを、ビッグエン
ディアンの計算機に移植する場合にも本発明を適用する
ことができる。
【0016】
【発明の効果】以上説明したように本発明によると、整
数データを格納する変数がコーディングされた箇所を指
示する構文を記述することにより、その後自動的に格納
形式の変換が実施されるため、整数データを格納する変
数の個々について、格納形式を変換するためのコーディ
ングを実施する必要がない。このため、コーディングに
要する手間の軽減及びコーディングを忘れたためのデバ
ッグ作業を減少させることができる。
数データを格納する変数がコーディングされた箇所を指
示する構文を記述することにより、その後自動的に格納
形式の変換が実施されるため、整数データを格納する変
数の個々について、格納形式を変換するためのコーディ
ングを実施する必要がない。このため、コーディングに
要する手間の軽減及びコーディングを忘れたためのデバ
ッグ作業を減少させることができる。
【図1】本発明に係る処理説明図である。
【図2】一般的な変数の説明図である。
【図3】従来一般の切り分けに係る説明図である。
【図4】本発明に係る構文のコーディング例である。
【図5】本発明に係る記号表の説明図である。
【符号の説明】
1 構文解析装置
2 記号表
3 コンパイラ
SP ソースプログラム
OP オブジェクトプログラム
Claims (1)
- 【請求項1】 特定の計算機上での稼働を想定して生
成され、変数への整数データの格納形式が前記特定の計
算機に固有の形態を採るソースプログラムを、前記変数
への前記整数データの格納形式が異なる他の計算機に移
植する場合、前記ソースプログラム上に、前記変数の記
述された領域を特定する領域指示記号を記述し、前記ソ
ースプログラムをオブジェクトプログラムに変換するた
めに、当該ソースプログラム上の全ての変数について整
数データの格納形式を判断し、前記領域指示記号で指示
された領域に記述された変数について、前記格納形式を
変更するためのオブジェクトコードを付加し、前記オブ
ジェクトプログラムを生成することを特徴とする変数管
理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP16508091A JPH04362738A (ja) | 1991-06-10 | 1991-06-10 | 変数管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP16508091A JPH04362738A (ja) | 1991-06-10 | 1991-06-10 | 変数管理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH04362738A true JPH04362738A (ja) | 1992-12-15 |
Family
ID=15805494
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP16508091A Pending JPH04362738A (ja) | 1991-06-10 | 1991-06-10 | 変数管理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH04362738A (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008523514A (ja) * | 2004-12-13 | 2008-07-03 | インテル コーポレイション | バイエンディアン対応コンパイラを実現する方法及び装置 |
US7587557B2 (en) | 2003-03-19 | 2009-09-08 | Panasonic Corporation | Data sharing apparatus and processor for sharing data between processors of different endianness |
JP2011129102A (ja) * | 2009-12-21 | 2011-06-30 | Intel Corp | エンディアン変換のための方法および装置 |
JP2011129132A (ja) * | 2009-12-21 | 2011-06-30 | Intel Corp | エンディアン変換ツール |
-
1991
- 1991-06-10 JP JP16508091A patent/JPH04362738A/ja active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7587557B2 (en) | 2003-03-19 | 2009-09-08 | Panasonic Corporation | Data sharing apparatus and processor for sharing data between processors of different endianness |
JP2008523514A (ja) * | 2004-12-13 | 2008-07-03 | インテル コーポレイション | バイエンディアン対応コンパイラを実現する方法及び装置 |
US8863103B2 (en) | 2004-12-13 | 2014-10-14 | Intel Corporation | Method and apparatus for implementing a bi-endian capable compiler |
JP2011129102A (ja) * | 2009-12-21 | 2011-06-30 | Intel Corp | エンディアン変換のための方法および装置 |
JP2011129132A (ja) * | 2009-12-21 | 2011-06-30 | Intel Corp | エンディアン変換ツール |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4330822A (en) | Recursive system and method for binding compiled routines | |
US5701487A (en) | Method and apparatus for displaying locations of errors detected inside software macro calls | |
JPH0630066B2 (ja) | テーブル型言語翻訳方法 | |
EP0413486A2 (en) | Message processing system | |
EP0317478A2 (en) | Dynamically adaptive environment for computer programs | |
JPH04362738A (ja) | 変数管理方法 | |
EP0240606A2 (en) | Pipe-line processing system and microprocessor using the system | |
US8464235B2 (en) | Adaptive production of assembler | |
Taylor | Microprocessor‐based, programmable laboratory equipment controller and data acquisition system | |
JP2620545B2 (ja) | テーブル駆動による編集装置 | |
JPH04362739A (ja) | 変数管理方法 | |
EP1183596B1 (en) | Generating optimized computer data field conversion routines | |
JPH04305739A (ja) | 変数認識方法 | |
JPH03154959A (ja) | 画面表示データ管理方式 | |
JPH0792754B2 (ja) | アセンブル装置 | |
JP2909185B2 (ja) | アセンブラ処理方法 | |
CN115037735A (zh) | 一种基于短名称的链接方法和系统 | |
JPS58114247A (ja) | 精度自動拡張方式 | |
JPH04248624A (ja) | プログラム変換処理装置 | |
JPH032933A (ja) | オブジェクトコード生成装置 | |
JPS63627A (ja) | キ−ワ−ド設定処理方式 | |
JPH01316873A (ja) | 翻訳システムの予約語テーブル管理方式 | |
JPS626327A (ja) | ソフトウエア組合わせ時の整合化処理方式 | |
JPH04260134A (ja) | 言語処理システムの名標管理方式 | |
JPS6339037A (ja) | プログラム呼出し処理方式 |