JPS63163930A - アライメント補正方式 - Google Patents

アライメント補正方式

Info

Publication number
JPS63163930A
JPS63163930A JP61315330A JP31533086A JPS63163930A JP S63163930 A JPS63163930 A JP S63163930A JP 61315330 A JP61315330 A JP 61315330A JP 31533086 A JP31533086 A JP 31533086A JP S63163930 A JPS63163930 A JP S63163930A
Authority
JP
Japan
Prior art keywords
data element
alignment information
alignment
byte
correction
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
JP61315330A
Other languages
English (en)
Inventor
Yutaka Hirasawa
平沢 裕
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP61315330A priority Critical patent/JPS63163930A/ja
Priority to US07/137,674 priority patent/US4992931A/en
Publication of JPS63163930A publication Critical patent/JPS63163930A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • G06F8/434Pointers; Aliasing

Abstract

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

Description

【発明の詳細な説明】 [発明の目的] (産業上の利用分野) この発明は、アライメントによる構造体の不一致を補正
するアライメント補正方式に関する。
(従来の技術) 一般に、C言3Bの構造体(StrtJCtU4造体)
等をコンパイラで処理するとき、メモリアクセスに関す
る計算機アーキテクチャの制限から、半語境界、全語境
界へ語の先頭を割付ける処理、即ちアライメント処理が
行なわれる。この処理結果は、各計舜機(のアーキテク
チャ)毎に異なる。
例えば、第4図に示す5truct構造体を2台の計O
tlでコンパイルした場合、その結果が、一方の計算機
では第5図のようになり、他方の計算機では第6図のよ
うになることが起り得る。このため、C言語のプログラ
ムを成る計算機から別の計tinへ移したとき、そのプ
ログラムがファイルへその構造体の形で書込んだり、通
信プロトコルのヘッダを構造体として記述した場合には
、元の計算機と構造体の形が異なるため、ファイルが共
有できなかったり、通信が行なえないという種々の不具
合が生じる。
そこで従来は、第5および第6図に示すようなアライメ
ントによる構造体の不一致を、その構造体毎に用意され
る専用のサブルーチンを用いたソフトウェア処理により
補正していた。しかし、ソフトウェアによるアライメン
ト補正では、その補正に多大な時間を要するため問題で
あった。また構造体毎にサブルーチンを作成する必要が
ある点も問題であった。
(発明が解決しようとする問題点) 上記したように従来は、アライメントによる構造体の不
一致の補正をソフトウェアにより行なっていたため多大
な時間を要し、しかも構造体毎に異なるソフトウェアを
用意しなければならない問題があった。
この発明は上記事情に鑑みてなされたものでその目的は
、アライメントによる構造体の不一致が共通の処理ルー
チンにより高速に補正できるアライメント補正方式を提
供することにある。
[発明の構成] (問題点を解決するための手段と作用)この発明では、
所定長のデータ要素の集合でなり補正対重となるアライ
メントされた第1構造体を記憶する第1記憶手段と、第
1構造体を補正して得られる第2構造体を記憶する第2
記憶手段と、第1構造体の各データ要素が補正後も残す
べき有意データ要素であるか否かをデータ要素毎に示す
アライメント情報要素の群から成るアライメント情報を
記憶する第3記憶手段と、この第3記憶手段からアライ
メント情報要素を所定順序で取出すアライメント情報要
素取出し手段と、この取出し手段によって第3記憶手段
から取出されたアライメント情報要素をもとに第1構造
体に対するアライメント補正制御を行なう制御手段とが
設けられる。このill 60手段は、取出し手段によ
って第3記憶手段からアライメント情報要素が取出され
る毎にこの情報要素が有意データ要素指定状態にあるか
否かを調べ、有意データ要素指定状態にある場合には第
1ポインタ手段の示す第1記憶手段内データ要素記憶位
置のデータ要素を第2ポインタ手段の示す第2記憶手段
内データ要素記憶位置に棗込んで第1および第2ポイン
タ手段の示すデータ要素記憶位置を更新する。これに対
して、第3記憶手段から取出されたアライメント情報要
素が有意データ要素指定状態にない場合には第2記憶手
段への上記の書込みを行なわずに第1ポインタ手段の示
すデータ要素記憶位置だけを更新する。
上記の構成によれば、アライメント情報を用意するだけ
で、共通の処理ルーチンでアライメント補正が行なえる
(実施例) 第1図はこの発明の一実施例を示すブロック構成図であ
る。同図において、11は補正対象となるアライメント
された構造体(補正後構造体)を記憶する補正対象構造
体記憶部、12は補正対象構造体を補正して得られる構
造体(補正後構造体)を記憶する補正後ti造体記憶部
、13は補正対象構造体と補正後構造体とのデータ構造
の対応関係(アライメントに関する対応関係)を示すア
ライメント情報を記憶するアライメント情報記憶部であ
る。このアライメント情報は、補正対象構造体の各バイ
ト(バイトエリア)が補正後も残すべき有意バイトであ
るか否かくアライメントのために挿入されたバイトエリ
アか)をバイト毎に示すビットの群から成る。したがっ
て、補正対象構造体のサイズが例えば第5図に示すよう
に16バイトの場合には、アライメント情報は16ビツ
トで構成される。この実施例では、アライメント情報の
各ビットは、論理“°1″で対応バイトが有意バイト、
即ち補正後も残すべきバイトであることを示し、論理+
101+でアライメントのために挿入されたデータ、即
ち補正時に除去すべきデータであることを示す。したが
って、補正対象構造体が第5図に示す構造体であり、補
正後構造体が第6図に示す構造体の場合のアライメント
情報は、第2図に示すようになる。第2図において、ビ
ットOは補正対象構造体の先頭バイト(第0バイト)に
対応し、ビット1は補正対象構造体の2番目のバイト(
第1バイト)に対応する。以下、同様に、ビット15は
補正対象構造体の最終バイト(第15バイト)に対応す
る。
再び第1図を参照すると、14は補正対象構造体のサイ
ズ値(バイト長ンを記憶するレジスタ部、15は補正対
象構造体記憶部11内のアクセス対象バイト位置を示す
カウンタである。また、16は補正後構造体記憶部12
内のアクセス対繁バイト位置を示すカウンタ、17はア
ライメント情報記憶部13内のアクセス対象ビット位置
を示すカウンタ、18はアライメント補正命令等の各種
命令を実行するCPUである。なお、この実施例では、
補正対象構造体記憶部11、補正後構造体記憶部12、
アライメント情報記憶部13、レジスタ部14、および
カウンタ15〜17は、主メモリに置かれる。
次に、第1図の構成の動作を第3図のフローチャートを
参照して説明する。今、アライメント補正命令を発行す
るプログラムの指定により、補正対象構造体記憶部11
には第5図に示す構造体が補正対象構造体として記憶さ
れ、レジスタ部14にはこの構造体のサイズ(バイト長
)が設定され、アライメント情報記憶部13には第2図
に示すアライメント情報が記憶されているものとする。
この状態でアライメント補正命令が発行されると、まず
CP Ll 18はカウンタ15〜17をrOJクリア
する(ステップS1)。次にCP U 18は、カウン
タ17の指定するアライメント情報記憶部13内ビツト
を取出す(ステップ82)。モしてCP U 18は、
アライメント情報記憶部13から取出したビットデータ
(ビットO)が論理“1パであるか否かを調べる(ステ
ップS3)。
もし取出したビットが論理°゛1”であれば、CP U
 18はカウンタ15の指定する補正対象構造体記憶部
11内バイトを取出し、同バイトをカウンタ16の指定
する補正後構造体記憶部12内バイト位置に書込む(ス
テップS4)。この結果、補正対象構造体記憶部11か
ら取出されたバイトは補正後も残されることになる。C
P tJ 18はステップS4を終了すると、カウンタ
15.16.17をいずれも+1して(ステップS5)
、その値をそれぞれ次の読出し対象バイト位置1次の書
込み対象バイト位置。
次の読出し対象ビット位置に進める。これに対して上記
取出したビットが論理“O″であれば、CP U 18
はステップS4で示されるような補正後構造体記憶部1
2への自込みを行なわず、カウンタ15、17だけを+
1する(ステップ86)。この結果、カウンタ15の指
定していた補正対象H4構造記憶部11内バイトは、補
正後においては捨てられることになる。
CP LJ 18は、ステップ$5またはステップS6
を実行すると、カウンタ15の値とレジスタ部14の設
定内容(補正対象構造体のサイズ値)を取込み、カウン
タ15の値がレジスタ部14に設定されているサイズ値
を越えたか否かを調べる (ステップ87)。もしカウ
ンタ15の埴がレジスタ部14に設定されているサイズ
値を越えていなければ、CP U 18は補正対象構造
体記憶部11内の補正対象構造体の全バイトについての
アライメント補正はまだ終了していないものと判断して
ステップS2に戻る。以下、前記した処理が繰返し行な
われることにより、補正後構造体記憶部12には、第6
図に示す構造体がその先頭バイトよりバイト単位で順次
生成される。やがて、カウンタ15の値がレジスタ部1
4に設定されているサイズ値を越えると、CP IJ 
18はアライメント処理を終了する。
なお、アライメント情報は、コンパイラ(例えばCコン
パイラ〉等により自動的に生成することも可能であり、
またコーディングにより直接指定することも可能である
以上は、アライメントされた構造体を補正する場合につ
いて説明したが、補正後のデータ(構造体)をアライメ
ントされた構造体に戻すことも、上記の逆の操作により
実現できることは明らかである。
また、この発明は、32ビツト系と16ビツト系の計算
機におけるintのビット数のI違を吸収する場合にも
応用することができる。但し、負の故を2バイトから4
バイトに拡張する際には、パディングデータを0OOO
H(添字のHは16進表現を示す)ではなくてF F 
F FHとするなどの配備が必要となる。
[発明の効果] 以上詳述したようにこの発明によれば、成る計算機で作
成したプログラムを別の計算機へ移す場合などにおいて
必要となる構造体のアライメント補正が、アライメント
情報を用意するだけで、共通の処理ルーチンにより構造
体の形式に無関係に高速に行なえる。
【図面の簡単な説明】 第1図はこの発明の一実施例を示すブロック構成図、第
2図は第1図に示すアライメント情報記憶部13に記憶
されるアライメント情報の一例を示す図、第3図は動作
を説明するためのフローチャート、第4図はC言語の構
造体を示す図、第5および第6図は第7図に示すC言語
構造体をそれぞれ異なる計vi機でコンパイルして得ら
れる構造体の一例を示す図である。 11・・・補正対象構造体記憶部、12・・・補正後構
造体記憶部、13・・・アライメント情報記憶部、15
〜17・・・カウンタ、18・・・cpu。 出願人代理人 弁理士 鈴江武彦 第1図 第2図 第3図

Claims (1)

    【特許請求の範囲】
  1. 所定長のデータ要素の集合でなり補正対象となるアライ
    メントされた第1構造体を記憶する第1記憶手段と、こ
    の第1記憶手段内のデータ要素記憶位置を指定する第1
    ポインタ手段と、上記第1構造体を補正して得られる第
    2構造体を記憶する第2記憶手段と、この第2記憶手段
    内のデータ要素記憶位置を指定する第2ポインタ手段と
    、上記第1および第2構造体のデータ構造の対応関係を
    示すアライメント情報であって上記第1構造体の各デー
    タ要素が補正後も残すべき有意データ要素であるか否か
    をデータ要素毎に示すアライメント情報要素の群から成
    るアライメント情報を記憶する第3記憶手段と、この第
    3記憶手段から上記アライメント情報要素を所定順序で
    取出すアライメント情報要素取出し手段と、この取出し
    手段によって上記アライメント情報要素が取出される毎
    にこの情報要素が有意データ要素指定状態にあるか否か
    を調べ、有意データ要素指定状態にある場合には上記第
    1ポインタ手段の示す上記第1記憶手段内データ要素記
    憶位置のデータ要素を上記第2ポインタ手段の示す上記
    第2記憶手段内データ要素記憶位置に書込んで上記第1
    および第2ポインタ手段の示すデータ要素記憶位置を更
    新し、有意データ要素指定状態にない場合には上記第2
    記憶手段への書込みを行なわずに上記第1ポインタ手段
    の示すデータ要素記憶位置だけを更新する制御手段とを
    具備し、上記アライメント情報を用いてアライメント補
    正を行なうようにしたことを特徴とするアライメント補
    正方式。
JP61315330A 1986-12-26 1986-12-26 アライメント補正方式 Pending JPS63163930A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP61315330A JPS63163930A (ja) 1986-12-26 1986-12-26 アライメント補正方式
US07/137,674 US4992931A (en) 1986-12-26 1987-12-24 Data alignment correction apparatus for properly formatting data structures for different computer architectures

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP61315330A JPS63163930A (ja) 1986-12-26 1986-12-26 アライメント補正方式

Publications (1)

Publication Number Publication Date
JPS63163930A true JPS63163930A (ja) 1988-07-07

Family

ID=18064110

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61315330A Pending JPS63163930A (ja) 1986-12-26 1986-12-26 アライメント補正方式

Country Status (2)

Country Link
US (1) US4992931A (ja)
JP (1) JPS63163930A (ja)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2804115B2 (ja) * 1988-09-19 1998-09-24 株式会社日立製作所 ディスクファイルシステム
JPH02226419A (ja) * 1989-02-28 1990-09-10 Sharp Corp データ配列変換制御方式
US5319769A (en) * 1989-09-11 1994-06-07 Sharp Kabushiki Kaisha Memory access circuit for handling data pockets including data having misaligned addresses and different widths
AU624274B2 (en) * 1989-11-20 1992-06-04 Digital Equipment Corporation Data format for packets of information
US5442769A (en) * 1990-03-13 1995-08-15 At&T Corp. Processor having general registers with subdivisions addressable in instructions by register number and subdivision type
US5276881A (en) * 1990-06-25 1994-01-04 Hewlett-Packard Company ANDF producer using the HPcode-Plus compiler intermediate language
US5280613A (en) * 1990-06-25 1994-01-18 Hewlett-Packard Company ANDF installer using the HPcode-Plus compiler intermediate language
US5339419A (en) * 1990-06-25 1994-08-16 Hewlett-Packard Company ANDF compiler using the HPcode-plus compiler intermediate language
US5335332A (en) * 1991-12-24 1994-08-02 International Business Machines Corporation Method and system for stack memory alignment utilizing recursion
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
US5392406A (en) * 1992-09-18 1995-02-21 3Com Corporation DMA data path aligner and network adaptor utilizing same
US5517627A (en) * 1992-09-18 1996-05-14 3Com Corporation Read and write data aligner and method
KR100248903B1 (ko) 1992-09-29 2000-03-15 야스카와 히데아키 수퍼스칼라마이크로프로세서에서의 적재 및 저장연산처리방법 및 시스템
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
JP3314438B2 (ja) 1993-02-22 2002-08-12 株式会社日立製作所 データ通信装置
US5550972A (en) * 1993-06-30 1996-08-27 Microsoft Corporation Method and apparatus for efficient transfer of data to memory
US6148302A (en) * 1998-02-26 2000-11-14 Sun Microsystems, Inc. Method, apparatus, system and computer program product for initializing a data structure at its first active use
US7574346B2 (en) * 2000-10-30 2009-08-11 Microsoft Corporation Kernel emulator for non-native program modules
US6622232B2 (en) * 2001-05-18 2003-09-16 Intel Corporation Apparatus and method for performing non-aligned memory accesses
US7107584B2 (en) * 2001-10-23 2006-09-12 Microsoft Corporation Data alignment between native and non-native shared data structures
US7545553B2 (en) * 2006-08-30 2009-06-09 Silicon Quest Kabushiki-Kaisha Display control system for spatial light modulators
US9032154B2 (en) * 2007-12-13 2015-05-12 Sandisk Technologies Inc. Integration of secure data transfer applications for generic IO devices

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3916388A (en) * 1974-05-30 1975-10-28 Ibm Shifting apparatus for automatic data alignment
US3967101A (en) * 1975-03-17 1976-06-29 Honeywell Information Systems, Inc. Data alignment circuit
US4800520A (en) * 1985-10-29 1989-01-24 Kabushiki Kaisha Toshiba Portable electronic device with garbage collection function
US4797810A (en) * 1986-06-26 1989-01-10 Texas Instruments Incorporated Incremental, multi-area, generational, copying garbage collector for use in a virtual address space
US4841435A (en) * 1986-10-29 1989-06-20 Saxpy Computer Corporation Data alignment system for random and block transfers of embedded subarrays of an array onto a system bus

Also Published As

Publication number Publication date
US4992931A (en) 1991-02-12

Similar Documents

Publication Publication Date Title
JPS63163930A (ja) アライメント補正方式
JPH0425582B2 (ja)
JPS5855528B2 (ja) アドレス発生装置
WO1999001817A1 (en) Defragmentation of stored data without pointer indirection
EP1119805A1 (en) Endian transformation
JP3404730B2 (ja) プログラミング装置のプログラム更新検出方法
JPH02173846A (ja) 循環バツフア制御装置及び制御方法
JP3265026B2 (ja) 入出力データ交換方式
JPS5953579B2 (ja) 文字圧縮装置
JP3341061B2 (ja) プログラマブルコントローラ
JP2728151B2 (ja) プログラマブルコントローラ
JP2845694B2 (ja) データ処理装置
JP2004341841A (ja) 復元方法及びそのシステム
JPS6111864A (ja) デ−タ処理方式
JP2906787B2 (ja) ファイル圧縮方法およびファイル復旧方法
JPH0377533B2 (ja)
JPH01119839A (ja) ファイル構成制御方式
JP2002006908A (ja) プログラマブルコントローラとの間のデータ授受方式
JP2001034517A (ja) ファイルレプリケーションシステム
JPS5932818B2 (ja) デ−タ処理方式
JPH1027153A (ja) バス転送装置
JPH03278225A (ja) 編集命令実行方式
JPH03224078A (ja) インターフェース装置
JPS60196861A (ja) デ−タ処理方式
JPH0441382B2 (ja)