JP7163697B2 - 生成プログラム,情報処理装置及び生成方法 - Google Patents

生成プログラム,情報処理装置及び生成方法 Download PDF

Info

Publication number
JP7163697B2
JP7163697B2 JP2018184429A JP2018184429A JP7163697B2 JP 7163697 B2 JP7163697 B2 JP 7163697B2 JP 2018184429 A JP2018184429 A JP 2018184429A JP 2018184429 A JP2018184429 A JP 2018184429A JP 7163697 B2 JP7163697 B2 JP 7163697B2
Authority
JP
Japan
Prior art keywords
machine language
variable
language instruction
generated
generating
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.)
Active
Application number
JP2018184429A
Other languages
English (en)
Other versions
JP2020052953A (ja
Inventor
雄一 村松
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 JP2018184429A priority Critical patent/JP7163697B2/ja
Priority to US16/580,508 priority patent/US11113052B2/en
Publication of JP2020052953A publication Critical patent/JP2020052953A/ja
Application granted granted Critical
Publication of JP7163697B2 publication Critical patent/JP7163697B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • 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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)

Description

本発明は、生成プログラム,情報処理装置及び生成方法に関する。
プログラムのコンパイラにおいて障害が発生した場合には、保守担当者は、例えば、障害レポートに記述された障害の発生条件に基づき、運用中のシステムに影響がないかを検証する。
特開2004-227129号公報 特開平1-196641号公報 特開昭59-160245号公報
保守担当者は、単純な発生条件を受け取った場合にはキーワード検索によって運用中のシステムに対する影響を検証するが、複雑な発生条件を受け取った場合にはキーワード検索を実施した後にロジックの検証を行なう。
プログラムがCommon Business Oriented Language(COBOL)やFormula Translating System(FORTRAN)等の利用頻度が減少している言語によって記述されている場合には、これらの言語を利用できる技術者が減少しているため、ロジックの検証に時間を要するおそれがある。
1つの側面では、プログラムにおける障害要因箇所を特定する時間を短縮する技術を提供することを目的とする。
生成プログラムは、コンピュータに、コンパイラにより生成されたコードのうち、いずれかのコードの指定を受け付けると、前記いずれかのコードに対応した、少なくとも変数名を含む第1の機械語命令を生成し、生成した前記第1の機械語命令にレジスタの種別の変数名が含まれる場合に、変数値の候補となる複数の変数値情報を変数名に対応付けて記憶する記憶部を参照して、生成した前記第1の機械語命令に含まれる前記レジスタの種別の変数名をそれぞれ当該変数名に対応付けられた複数の変数値情報とした複数の第2の機械語命令を生成する、処理を実行させる。
1つの側面では、プログラムにおける障害要因箇所を特定する時間を短縮する技術を提供することができる。
関連例におけるコンパイラの障害調査の第1の例を説明する図である。 関連例におけるコンパイラの障害調査の第2の例を説明する図である。 図2に示したチェックツールを用いた検索処理を説明する図である。 図3に示した検索処理においてレジスタ値が可変の場合の処理を説明する図である。 関連例におけるプログラム毎の機械語の相違を説明する図である。 実施例における情報処理装置のハードウェア構成を模式的に示すブロック図である。 図6に示した情報処理装置の機能構成を模式的に示すブロック図である。 図6に示した情報処理装置における障害調査処理を説明するブロック図である。 図8に示したカスタムコンパイラにおける処理の詳細を説明するブロック図である。 図8に示したマスク値及び機械語命令ブロックの予測リストの具体例を示す図である。 COBOLソースからのバイナリの生成処理を説明する図である。 図6に示した情報処理装置における障害調査処理を説明するフローチャートである。 マスク値及び機械語命令ブロックの予測リストの読み取り方法を説明する図である。 機械語命令ブロックの比較処理を説明する図である。 関連例における機械語命令ブロックと実施例における機械語命令ブロックとを比較する図である。
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
〔A〕関連例
図1は、関連例におけるコンパイラ61の障害調査の第1の例を説明する図である。
ユーザまたはベンダにおいてコンパイラ61を使ってプログラムを翻訳して実行した結果、コンパイラ61の障害が検出された場合(符号A1参照)、コンパイラ開発者62は、コンパイラ61の障害が発生した条件を示す発生条件を生成する(符号A2参照)。そして、コンパイラ開発者62は、生成した発生条件をコンパイラ61を使って開発する開発環境における保守要員63に連絡する(符号A3参照)。
保守要員63は、受け取った発生条件に基づき、COBOL資産64におけるキーワード検索を実施する(符号A4参照)。COBOL資産64は、運用環境におけるアプリケーション65のプログラムから抽出され、COBOL言語によって記載されている。従来は多数のCOBOL技術者が存在していたため、人海戦術によって、COBOL資産64の検索結果からロジック検証を行ない、コンパイラ61の障害に影響するプログラム資産があるか判断できた(符号A5及びA7参照)。一方、現在ではCOBOL技術者が不足しているため、COBOL資産64の検索結果からのロジック検証は困難である(符号A6及び符号A7参照)。
図2は、関連例におけるコンパイラ61の障害調査の第2の例を説明する図である。
コンパイラ61において障害が検出された場合(符号B1参照)、コンパイラ開発者62は、障害の原因を調査し、障害の発生条件を特定する。そして、コンパイラ開発者62は、障害が発生する際に必ず生成される機械語命令が存在する場合には、コンパイラ61を使って生成したアプリケーション65がコンパイラ61の障害に影響を受けて生成されたかを判断するために、障害に該当する時に必ず生成される機械語命令を検索するためのチェックツール66を運用環境における保守要員63に提供する(符号B2参照)。
保守要員63は、提供されたチェックツール66を用いて、アプリケーション65における機械語命令を検索する。
図3は、図2に示したチェックツール66を用いた検索処理を説明する図である。
図3に示すチェックツール66は、検索条件(1)として、機械語命令「mov dword ptr [rsp+XXXXXXXX],r11d」に対応するバイナリ「44899C24XXXXXXXX」を検索する。また、チェックツール66は、検索条件(2)として、機械語命令「lea rdx,[rsp+YYYYYYYY]」に対応するバイナリ「488D9424YYYYYYYY」を検索する。更に、チェックツール66は、検索条件(3)として、機械語命令「mov rcx,qword ptr [rsp+ZZZZZZZZ]」に対応するバイナリ「488B8C24ZZZZZZZZ」を検索する。なお、「XXXXXXXX」,「YYYYYYYY」及び「ZZZZZZZZ」は、任意のバイナリである。
チェックツール66は、ファイルポインタをアプリケーション65のプログラムの検索位置へ移動させる(ステップS1)。
チェックツール66は、ファイルポインタをアプリケーション65のプログラムにおいて、1バイト(Byte)ずつ移動させる(ステップS2)。
チェックツール66は、アプリケーション65のプログラムにおいて、バイナリが「0x44」であるかを判定する(ステップS3)。
バイナリが「0x44」でない場合には(ステップS3のNoルート参照)、処理はステップS2へ戻る。
一方、バイナリが「0x44」である場合には(ステップS3のYesルート参照)、チェックツール66は、アプリケーション65のプログラムにおいて、バイナリが検索条件(1)の「44899C24」に一致するかを判定する(ステップS4)。図3に示す例では、符号C1に示すように、アプリケーション65のプログラムにおいて、「0x44」のバイナリが存在する。
バイナリが検索条件(1)に一致しない場合には(ステップS4のNoルート参照)、処理はステップS2へ戻る。
一方、バイナリが検索条件(1)に一致する場合には(ステップS4のYesルート参照)、チェックツール66は、ファイルポインタを条件(1)の任意の文字列「XXXXXXXX」の4バイト分スキップさせる(ステップS5)。図3に示す例では、符号C2に示すように、アプリケーション65のプログラムにおいて、条件(1)の「44899C24」のバイナリが存在する。また、符号C3に示すように、アプリケーション65のプログラムにおいて、「AC010000」のバイナリがスキップされる。
チェックツール66は、アプリケーション65のプログラムにおいて、バイナリが検索条件(2)の「488D9424」に一致するかを判定する(ステップS6)。
バイナリが検索条件(2)に一致しない場合には(ステップS6のNoルート参照)、処理はステップS2へ戻る。
一方、バイナリが検索条件(2)に一致する場合には(ステップS6のYesルート参照)、チェックツール66は、ファイルポインタを条件(2)の任意の文字列「YYYYYYYY」の4バイト分スキップさせる(ステップS7)。図3に示す例では、符号C4に示すように、アプリケーション65のプログラムにおいて、条件(2)の「488D9424」のバイナリが存在する。また、符号C5に示すように、アプリケーション65のプログラムにおいて、「98020000」のバイナリがスキップされる。
チェックツール66は、アプリケーション65のプログラムにおいて、バイナリが検索条件(3)の「488B8C24」に一致するかを判定する(ステップS8)。
バイナリが検索条件(3)に一致しない場合には(ステップS8のNoルート参照)、処理はステップS2へ戻る。
一方、バイナリが検索条件(3)に一致する場合には(ステップS8のYesルート参照)、チェックツール66は、検索対象のバイナリを検出する(ステップS9)。
そして、チェックツール66は、ステップS2~S9における処理を、検査範囲の終端まで繰り返し実施する(ステップS10)。
図4は、図3に示した検索処理においてレジスタ値が可変の場合の処理を説明する図である。
図4に示すチェックツール66は、検索条件(1)として、機械語命令「mov dword ptr [r0+XXXXXXXX],r1d」に対応するバイナリ「??89????XXXXXXXX」を検索する。また、チェックツール66は、検索条件(2)として、機械語命令「lea r2,[rsp+YYYYYYYY]」に対応するバイナリ「??8D????YYYYYYYY」を検索する。更に、チェックツール66は、検索条件(3)として、機械語命令「mov r3,qword ptr [r0+ZZZZZZZZ]」に対応するバイナリ「488B8C24ZZZZZZZZ」を検索する。なお、「XXXXXXXX」,「YYYYYYYY」,「ZZZZZZZZ」,「??」及び「????」は任意のバイナリである。また、「r0」,「r1d」,「r2」及び「r3」は、任意の文字列である。
チェックツール66は、ファイルポインタをアプリケーション65のプログラムの検索位置へ移動させる(ステップS11)。
チェックツール66は、ファイルポインタをアプリケーション65のプログラムにおいて、1バイト(Byte)ずつ移動させる(ステップS12)。
チェックツール66は、アプリケーション65のプログラムにおいて、バイナリが「0x89」であるかを判定する(ステップS13)。
バイナリが「0x89」でない場合には(ステップS13のNoルート参照)、処理はステップS12へ戻る。
一方、バイナリが「0x89」である場合には(ステップS13のYesルート参照)、チェックツール66は、アプリケーション65のプログラムにおいて、バイナリが検索条件(1)の「0x89????」に一致するかを判定する(ステップS14)。
バイナリが検索条件(1)に一致しない場合には(ステップS14のNoルート参照)、処理はステップS12へ戻る。
一方、バイナリが検索条件(1)に一致する場合には(ステップS14のYesルート参照)、チェックツール66は、ファイルポインタを条件(1)の任意の文字列「XXXXXXXX」の4バイト分スキップさせる(ステップS15)。
チェックツール66は、アプリケーション65のプログラムにおいて、バイナリが検索条件(2)の「0x8D????」に一致するかを判定する(ステップS16)。
バイナリが検索条件(2)に一致しない場合には(ステップS16のNoルート参照)、処理はステップS12へ戻る。
一方、バイナリが検索条件(2)に一致する場合には(ステップS16のYesルート参照)、チェックツール66は、ファイルポインタを条件(2)の任意の文字列「YYYYYYYY」の4バイト分スキップさせる(ステップS17)。
チェックツール66は、アプリケーション65のプログラムにおいて、バイナリが検索条件(3)の「0x8B????」に一致するかを判定する(ステップS18)。
バイナリが検索条件(3)に一致しない場合には(ステップS18のNoルート参照)、処理はステップS12へ戻る。
一方、バイナリが検索条件(3)に一致する場合には(ステップS18のYesルート参照)、チェックツール66は、検索対象のバイナリを検出する(ステップS19)。
そして、チェックツール66は、ステップS12~S19における処理を、検査範囲の終端である「.text」まで繰り返し実施する(ステップS20)。
図5は、関連例におけるプログラム毎の機械語の相違を説明する図である。
図5に示すように、プログラムA及びBには、いずれも、中間コードα,β及びγが記述されている。しかしながら、中間コードβに示すように、コンパイラ61はプログラム毎に最適なレジスタを割り当てるため、同一の中間コードであっても、異なる機械語が生成される場合がある。
すなわち、図4及び図5に示したように、機械語命令のフォーマットには、レジスタ情報が含まれる。レジスタが決まっていない機械語命令を検索する場合には、機械語命令のうちオペコード(別言すれば、「命令部」)の情報だけではバイナリの一致を判定できない。
〔B〕実施形態の一例
〔B-1〕システム構成例
図6は、実施例における情報処理装置1のハードウェア構成を模式的に示すブロック図である。
情報処理装置1は、Central Processing Unit(CPU)11,メモリ12,表示制御部13,記憶装置14,入力Interface(I/F)15,読み書き処理部16及び通信I/F17を備える。
メモリ12は、記憶部の一例であり、例示的に、Read Only Memory(ROM)及びRandom Access Memory(RAM)を含む記憶装置である。メモリ12のROMには、Basic Input/Output System(BIOS)等のプログラムが書き込まれてよい。メモリ12のソフトウェアプログラムは、CPU11に適宜に読み込まれて実行されてよい。また、メモリ12のRAMは、一次記録メモリあるいはワーキングメモリとして利用されてよい。
表示制御部13は、表示装置130と接続され、表示装置130を制御する。表示装置130は、液晶ディスプレイやOrganic Light-Emitting Diode(OLED)ディスプレイ,Cathode Ray Tube(CRT),電子ペーパーディスプレイ等であり、オペレータ等に対する各種情報を表示する。表示装置130は、入力装置と組み合わされたものでもよく、例えば、タッチパネルでもよい。
記憶装置14は、例示的に、データを読み書き可能に記憶する装置であり、例えば、Hard Disk Drive(HDD)やSolid State Drive(SSD),Storage Class Memory(SCM)が用いられてよい。
入力I/F15は、マウス151やキーボード152等の入力装置と接続され、マウス151やキーボード152等の入力装置を制御する。マウス151やキーボード152は、入力装置の一例であり、これらの入力装置を介して、オペレータが各種の入力操作を行なう。
読み書き処理部16は、記録媒体160が装着可能に構成される。読み書き処理部16は、記録媒体160が装着された状態において、記録媒体160に記録されている情報を読み取り可能に構成される。本例では、記録媒体160は、可搬性を有する。例えば、記録媒体160は、フレキシブルディスク、光ディスク、磁気ディスク、光磁気ディスク、又は、半導体メモリ等である。
通信I/F17は、外部装置との通信を可能にするためのインタフェースである。
CPU11は、種々の制御や演算を行なう処理装置であり、メモリ12に格納されたOperating System(OS)やプログラム(例えば、「生成プログラム」及び「検索プログラム」)を実行することにより、種々の機能を実現する。
CPU11は例示的に情報処理装置1全体の動作を制御するための装置は、CPU11に限定されず、例えば、MPUやDSP,ASIC,PLD,FPGAのいずれか1つであってもよい。また、情報処理装置1全体の動作を制御するための装置は、CPU,MPU,DSP,ASIC,PLD及びFPGAのうちの2種類以上の組み合わせであってもよい。なお、MPUはMicro Processing Unitの略称であり、DSPはDigital Signal Processorの略称であり、ASICはApplication Specific Integrated Circuitの略称である。また、PLDはProgrammable Logic Deviceの略称であり、FPGAはField Programmable Gate Arrayの略称である。
図7は、図6に示した情報処理装置1の機能構成を模式的に示すブロック図である。
情報処理装置1は、処理部10としての機能を備える。図7に示すように、処理部10は、第1生成部111,第2生成部112,第1取得部113,第2取得部114,算出部115,検索部116及び送信部117として機能する。
なお、これらの第1生成部111,第2生成部112,第1取得部113,第2取得部114,算出部115,検索部116及び送信部117として機能を実現するためのプログラムは、例えば前述した記録媒体160に記録された形態で提供される。そして、コンピュータは読み書き処理部16を介してその記録媒体160からプログラムを読み取って内部記憶装置または外部記憶装置に転送し格納して用いる。また、そのプログラムを、例えば磁気ディスク,光ディスク,光磁気ディスク等の記憶装置(記録媒体)に記録しておき、その記憶装置から通信経路を介してコンピュータに提供してもよい。
第1生成部111,第2生成部112,第1取得部113,第2取得部114,算出部115,検索部116及び送信部117としての機能を実現する際には、内部記憶装置に格納されたプログラムがコンピュータのマイクロプロセッサによって実行される。このとき、記録媒体160に記録されたプログラムをコンピュータが読み取って実行してもよい。なお、本実施形態において、内部記憶装置はメモリ12であり、マイクロプロセッサはCPU11である。
第1生成部111は、コンパイラ22により生成された中間コード26のうち、いずれかの中間コード26の指定を受け付けると、いずれかの中間コード26に対応した、少なくとも変数名を含む機械語命令257を生成する。
なお、コンパイラ22及び中間コード26については、図8等を用いて後述する。また、第1生成部111における機能の詳細については、図8及び図9等を用いて後述する。
第2生成部112は、第1生成部111によって生成された機械語命令257に特定の種別の変数名が含まれる場合に、変数値の候補となる複数のバイナリ情報(「変数値情報」と称してもよい。)を変数名に対応付けて記憶するメモリ12を参照する。変数値の候補となる複数のバイナリ情報は、アーキテクチャ(例えばインテル系など)毎に決められる。そして、第2生成部112は、第1生成部111によって生成された機械語命令257に含まれる変数名をそれぞれ変数名に対応付けられた複数のバイナリ情報とした、マスク値272及び機械語命令ブロック273の予測リスト27を生成する。
第2生成部112は、第1生成部111によって生成された機械語命令に特定の種別ではない種別の変数名が含まれる場合に、第1生成部111によって生成された機械語命令に含まれる特定の種別ではない種別の変数を特定のバイナリ情報とした、マスク値272及び機械語命令ブロック273の予測リスト27を生成する。
なお、マスク値272及び機械語命令ブロック273の予測リスト27については、図8及び図10等を用いて後述する。また、第2生成部112における機能の詳細については、図8~図10等を用いて後述する。
第1取得部113は、マスク値272及び機械語命令ブロック273の予測リスト27を取得する。また、第1取得部113は、マスク値272及び機械語命令ブロック273の長さ271を取得してもよい。なお、第1取得部113における機能の詳細については、図8及び図10等を用いて後述する。
第2取得部114は、アプリケーション24における検索対象のバイナリ情報を取得する。また、第2取得部114は、取得した長さと等しい特定の長さのバイナリ情報を、検索対象のバイナリ情報から抽出してもよい。なお、第2取得部114における機能の詳細については、図8等を用いて後述する。
算出部115は、第1取得部113によって取得されたマスク値272と、第2取得部114によって取得された検索対象のバイナリ情報の一部との論理積を算出する。また、算出部115は、抽出した特定の長さのバイナリ情報と、マスク値272との論理積を算出してもよい。なお、算出部115における機能の詳細については、図8及び図10等を用いて後述する。
検索部116は、第1取得部113によって取得された機械語命令257と算出部115によって算出された論理積とを比較することにより、検索対象のバイナリ情報の中から特定のバイナリ情報を検索する。なお、検索部116における機能の詳細については、図8及び図10等を用いて後述する。
送信部117は、第2生成部112によって生成されたマスク値272及び機械語命令ブロック273の予測リスト27を他の情報処理装置(不図示)に送信する。
図8は、図6に示した情報処理装置1における障害調査処理を説明するブロック図である。
開発環境において、コンパイラ22は、COBOLソース21をコンパイルして複数のオブジェクトを生成する。リンカ23は、生成された複数のオブジェクトを結合して、アプリケーション24に対して実行プログラムを提供する。
ベンダ環境において、カスタムコンパイラ25は、中間コード26に基づいたコンパイルを実行する(符号D1参照)。なお、コンパイラ22とカスタムコンパイラ25とは、同一のバージョンを有する。
図9は、図8に示したカスタムコンパイラ25における処理の詳細を説明するブロック図である。
カスタムコンパイラ25は、機械語生成部251,レジスタ割付部252,アドレス解決部253及びオブジェクト生成部254として機能する。
機械語生成部251,レジスタ割付部252及びアドレス解決部253は、図7に示した第1生成部111の一例として機能する。また、オブジェクト生成部254は、図7に示した第2生成部112の一例として機能する。
機械語生成部251は、中間コード26に基づき、機械語命令の原型255(別言すれば、「レジスタ未解決及びアドレス未解決の機械語命令」)を生成する(符号D11参照)。中間コード26には、コンパイラ22が独自に定義した機械語の疑似命令(別言すれば、「マクロ命令」)が含まれる。中間コードは、機械語命令と共に擬似アセンブラとしてファイルされる。すなわち、機械語生成部251は、機械語の疑似命令を機械語に展開する。
レジスタ割付部252は、生成された機械語命令の原型255を取得し(符号D12参照)、仮想レジスタに全レジスタを割り当ててレジスタ割付機械語命令256を生成することにより、レジスタを解決する(符号D13参照)。図9に示す例では、機械語命令の原型255における仮想レジスタ「r0w」に対して、レジスタ「ax」,「dx」,・・・「r15x」が割り当てられている。レジスタ「ax」,「dx」,・・・「r15x」などは、アーキテクチャ(例えばインテル系など)に応じて定まるものであり、このうち、未使用のレジスタが仮想レジスタ「r0w」に割り当てられる。
アドレス解決部253は、生成されたレジスタ割付機械語命令256を取得し(符号D14参照)、ベースレジスタ及びインデックスレジスタに全レジスタを割り当てた場合の機械語命令257を生成して、アドレスを解決する(符号D15参照)。
アドレス解決部253は、オフセット「xx」が1バイトであり、オフセット「yy」が1バイトである場合の機械語命令257を生成する。また、アドレス解決部253は、オフセット「xx」が1バイトであり、オフセット「yy」が4バイトである場合の機械語命令257を生成する。更に、アドレス解決部253は、オフセット「xx」が4バイトであり、オフセット「yy」が1バイトである場合の機械語命令257を生成する。また、アドレス解決部253はオフセット「xx」が4バイトであり、オフセット「yy」が4バイトである場合の機械語命令257を生成する。
図9に示す例では、レジスタ割付機械語命令256におけるレジスタ「[OPD2]」に対して、オフセット「xx」が1バイトであり、オフセット「yy」が1バイトである場合の機械語命令257において「[rax+xx]」,「[rbx+xx]」,・・・,「[r14x+xx]」,「[r15x+xx]」が割り当てられる。また、レジスタ割付機械語命令256におけるレジスタ「[OPD1]」に対して、オフセット「xx」が1バイトであり、オフセット「yy」が1バイトである場合の機械語命令257において「[rax+yy]」,「[rbx+yy]」,・・・,「[r14x+yy]」,「[r15x+yy]」が割り当てられる。
オブジェクト生成部254は、生成された機械語命令257を取得し(符号D16参照)、図8に示すように、マスク値272及び機械語命令ブロック273の予測リスト27を生成する(符号D2参照)。
図10は、図8に示したマスク値272及び機械語命令ブロック273の予測リスト27の具体例を示す図である。
オブジェクト生成部254は、取得した機械語命令257に基づき、バイナリ(別言すれば、「機械語命令ブロック273」)とマスク値272とバイナリの長さ271とをリスト化して、予測リスト27を生成する。
図10に示す例において、機械語命令ブロック273の長さ271には、「08」で示される8バイトや、「0A」で示される10バイトを表す数値が登録されている。また、マスク値272には、8バイトの長さの「FFFFFF00FFFFFF00」や、10バイトの長さの「FFFFFFFF00FFFFFFFF00」が登録されている。更に、械語命令語ブロック273には、「668B430066894300」や「668B500066895000」,「66448BBB00664489BB00」が登録されている。
マスク値272において「0x00」は任意の値が設定されることを示す可変部を示し、「0xFF」は特定の値が設定される可変部以外を示す。
図8に示すように、検索装置28は、生成された予測リスト27を取得し(符号D3参照)、アプリケーション24のプログラムにおいて、対象のオブジェクトを検索する(符号D4参照)。
アプリケーション24のプログラムにおいては、破線枠で示すように、コンパイラは検索開始位置を示す固定のバイナリを埋め込む。検索装置28は、検索開始位置を検索して、検索対象のオブジェクトの先頭を参照する。
図8に示す例において、検索結果として検出される文字列は、アプリケーション24のプログラムにおいて実線枠で示すように「66448BBB03664489BB01」であり、図10の符号D41で示すマスク値272と機械語命令ブロック273との論理積に一致する。実線枠で示した「66448BBB03664489BB01」のうち斜線枠で示す「03」及び「01」は、任意の値であってよい可変部を示す。
図11は、COBOLソース21からのバイナリの生成処理を説明する図である。
図11に示すように、コンパイラ22は、Frontend(FE)部221,Backend(BE)部223として機能する。
FE部221は、COBOLソース21の入力に基づき、字句解析処理や意味解析処理等の種々の処理を行ない、中間コード26を展開する。展開された中間コード26には、2バイト以下の2進転記を示す「MVB2」や4バイト以下の2進加算を示す「ADDB4」等のプログラムが含まれる。
「ADDB4」のプログラム222は、2進データ項目であって、長さが4バイトであるため、「#ADD22 r0d, [OPD1], [OPD2]」が展開される。
BE部223は、領域割付処理部2231,レジスタ割付処理部2232,第1機械語生成処理部2233及び第2機械語生成処理部2234として機能する。
領域割付処理部2231は、データを割り付ける領域を決定する(符号E1参照)。図11に示す例において、領域iはデータ領域やスタック領域である。オフセットは、領域iの先頭からの距離を示す。符号E1に示す状態では、ベースレジスタ(別言すれば、「領域の先頭を示すレジスタ」)は未定である。
レジスタ割付処理部2232は、仮想レジスタとベースレジスタとを割り付ける(符号E2参照)。図11に示す例では、符号E1に示した「[領域i+オフセット]」が、「[RBX+xxxx]」及び「[RBX+yyyy]」に設定される。
第1機械語生成処理部2233は、符号E2に示した「#ADD22」を機械語命令に展開する(符号E3参照)。
第2機械語生成処理部2234は、符号E3に示した機械語命令に基づき、バイナリ情報を生成する(符号E4参照)。
〔B-2〕動作例
図6に示した情報処理装置における障害調査処理を、図13及び図14を参照しながら、図12に示すフローチャート(ステップS21~S28)に従って説明する。図13は、マスク値272及び機械語命令ブロック273の予測リスト27の読み取り方法を説明する図である。また、機械語命令ブロック273の比較処理を説明する図である。
検索装置28は、予測リスト27を一行ずつ読み込む(ステップS21)。
図13の(A)に示すように、予測リスト27の各行においては、始めに、長さ271の先頭にファイルポインタ(fp)が移動される。次に、図13の(B)に示すように、マスク値272の先頭にファイルポインタが移動され、本例における長さ271である8バイトのマスク値272が読み込まれる。そして、図13の(C)に示すように、機械語命令ブロック273の先頭にファイルポインタが移動され、本例における長さ271である8バイトの機械語命令ブロック273が読み込まれる。
検索装置28は、アプリケーション24におけるファイルポインタを検索位置へ移動させる(ステップS22)。
検索装置28は、アプリケーション24におけるファイルポインタを1バイト(byte)ずつ移動させる(ステップS23)。
検索装置28は、予測リスト27の機械語命令ブロック273の長さ271分、アプリケーション24のプログラムが記録されたメモリ12を読み込む(ステップS24)。
検索装置28は、予測リスト27の機械語命令ブロック273と、マスク値272によるマスク後のアプリケーション24のバイナリとが等しいかを判定する(ステップS25)。
図14に示すように、アプリケーション24のバイナリとマスク値272との論理積が算出される(符号F1参照)。そして、マスク後のバイナリと予測リスト27の機械語命令ブロック273とが比較される(符号F2参照)。
マスク後の値が等しくない場合には(ステップS25のNoルート参照)、処理はステップS23へ戻る。
一方、マスク後の値が等しい場合には(ステップS25のYesルート参照)、検索装置28は、アプリケーション24のプログラムから検索対象のバイナリを検出する(ステップS26)。
検索装置28は、アプリケーション24のプログラムにおける検索範囲の終端まで、ステップS23~S26における処理を繰り返す。
検索装置28は、予測リスト27の最終行まで、ステップS21~S27における処理を繰り返す。そして、障害調査処理は終了する。
〔B-3〕効果
上述した実施形態の一例における情報処理装置1によれば、例えば、以下の作用効果を奏することができる。
第1生成部111は、コンパイラ22により生成された中間コード26のうち、いずれかの中間コード26の指定を受け付けると、いずれかの中間コード26に対応した、少なくとも変数名を含む機械語命令257を生成する。第2生成部112は、第1生成部111によって生成された機械語命令257に特定の種別の変数名が含まれる場合に、変数値の候補となる複数のバイナリ情報を変数名に対応付けて記憶する記憶装置14を参照する。そして、第2生成部112は、第1生成部111によって生成された機械語命令257に含まれる変数名をそれぞれ変数名に対応付けられた複数のバイナリ情報とした、マスク値272及び機械語命令ブロック273の予測リスト27を生成する。
これにより、プログラムにおける障害要因を特定するための時間を短縮できる。
第2生成部112は、第1生成部111によって生成された機械語命令257に特定の種別ではない種別の変数名が含まれる場合に、第1生成部111によって生成された機械語命令257に含まれる特定の種別ではない種別の変数を特定のバイナリ情報とした、マスク値272及び機械語命令ブロック273の予測リスト27を生成する。
これにより、レジスタを割り当てる前の処理の障害を検索でき、チェックツールによる検証可能な障害の範囲が広がる。
送信部117は、第2生成部112によって生成されたマスク値272及び機械語命令ブロック273の予測リスト27を他の情報処理装置に送信する。
これにより、検索装置28としての機能が情報処理装置1以外の装置に備えられている場合においても、情報処理装置1以外の装置において、アプリケーション24のプログラムを検索することができる。
第1取得部113は、マスク値272及び機械語命令ブロック273の予測リスト27を取得する。第2取得部114は、アプリケーション24における検索対象のバイナリ情報を取得する。算出部115は、第1取得部113によって取得されたマスク値272と、第2取得部114によって取得された検索対象のバイナリ情報の一部との論理積を算出する。検索部116は、第1取得部113によって取得された機械語命令257と算出部115によって算出された論理積とを比較することにより、検索対象のバイナリ情報の中から特定のバイナリ情報を検索する。
これにより、プログラムにおける障害要因を特定するための時間を短縮できる。
第1取得部113は、マスク値272及び機械語命令ブロック273の長さ271を取得する。第2取得部114は、取得した長さと等しい特定の長さのバイナリ情報を、検索対象のバイナリ情報から抽出する。算出部115は、抽出した特定の長さのバイナリ情報と、マスク値272との論理積を算出する。
これにより、機械語命令257をひと固まりのブロック(別言すれば、「長さ」)で検索するため、検索時間を短縮できる。
図15は、関連例における機械語命令と実施例における機械語命令とを比較する図である。具体的には、図15の(A)は、関連例における機械語命令の一例を示す図である。また、図15の(B)は、実施例においてマルチスレッドオプションが指定された場合の中間コード26から生成される機械語命令の一例を示す図である。更に、図15の(C)は、実施例においてマルチスレッドオプションが指定されなかった場合の中間コード26から生成される機械語命令の一例を示す図である。
ユーザが指定する情報で機械語命令の展開が変わる場合には、オブジェクトに書き込まれた翻訳オプション情報等のユーザ指定情報が逐一参照されるため、ブロックの検索ができない。
例えば、関連例において、図15の(A)に示す機械語命令の展開を検索する場合には、符号G1の機械語命令を検出した後に、コンパイラオプション(MULTOPT)の指定の有無を調べる。そして、MULTOPTが指定されていれば、符号G2の機械語命令とのマッチング判定を行ない、MULTOPTが指定されていなければ、符号G3の機械語命令とのマッチング判定を行なう。
一方、上述した実施例においては、機械語命令257の生成に中間コード26を使用する。中間コード26には、オプション情報や環境変数等、中間コード26がどのように振舞うのかを指定する情報が含まれているため、中間コード26から生成される機械語命令257は固定される。図15の(B)に示すように、MULTOPTが指定されている場合の中間コード26からは、固定の機械語命令257が生成される(符号H1~H3参照)。また、図15の(C)に示すように、MULTOPTが指定されていない場合の中間コード26からも、固定の機械語命令257が生成される(符号I1及びI2参照)。
すなわち、上述した実施形態の一例においては、図15の(B)及び(C)に示す両方の機械語命令257を検索装置28に与えることで、MULTOPTが指定されている場合と指定されている場合の両方の場合において、プログラムの検索ができる。
〔C〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
上述した実施形態の一例においてはCOBOLソース21のアプリケーション24において障害の検索を行なったが、これに限定されるものではない。上述した実施形態の一例においては、種々の機械語で記述されるアプリケーション24における障害の検索を行なうことができる。
〔D〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
コンピュータに、
コンパイラにより生成されたコードのうち、いずれかのコードの指定を受け付けると、前記いずれかのコードに対応した、少なくとも変数名を含む第1の機械語命令を生成し、
生成した前記第1の機械語命令に特定の種別の変数名が含まれる場合に、変数値の候補となる複数の変数値情報を変数名に対応付けて記憶する記憶部を参照して、生成した前記第1の機械語命令に含まれる前記変数名をそれぞれ当該変数名に対応付けられた複数の変数値情報とした複数の第2の機械語命令を生成する、
処理を実行させる、生成プログラム。
(付記2)
生成した前記第1の機械語命令に前記特定の種別ではない種別の変数名が含まれる場合に、生成した前記第1の機械語命令に含まれる前記特定の種別ではない種別の変数を特定の変数値情報とした、前記複数の第2の機械語命令を生成する、
処理を前記コンピュータに実行させる、付記1に記載の生成プログラム。
(付記3)
生成した前記複数の第2の機械語命令を特定の情報処理装置に送信する、
処理を前記コンピュータに実行させる、付記1又は2に記載の生成プログラム。
(付記4)
コンピュータに、
検索対象の変数値情報を取得し、
マスク値及び機械語命令を取得し、
取得した前記マスク値と、取得した前記検索対象の変数値情報の一部との論理積を算出し、
取得した前記機械語命令と算出した前記論理積とを比較することにより、前記検索対象の変数値情報の中から特定の変数値情報を検索する、
処理を実行させる、検索プログラム。
(付記5)
前記マスク値及び前記機械語命令の長さを取得し、
取得した前記長さと等しい特定の長さの変数値情報を、前記検索対象の変数値情報から抽出し、
抽出した前記特定の長さの変数値情報と、前記マスク値とについて、前記論理積を算出する、
処理を前記コンピュータに実行させる、付記4に記載の検索プログラム。
(付記6)
コンパイラにより生成されたコードのうち、いずれかのコードの指定を受け付けると、前記いずれかのコードに対応した、少なくとも変数名を含む第1の機械語命令を生成する第1生成部と、
前記第1生成部によって生成された前記第1の機械語命令に特定の種別の変数名が含まれる場合に、変数値の候補となる複数の変数値情報を変数名に対応付けて記憶する記憶部を参照して、前記第1生成部によって生成された前記第1の機械語命令に含まれる前記変数名をそれぞれ当該変数名に対応付けられた複数の変数値情報とした複数の第2の機械語命令を生成する第2生成部と、
を備える、情報処理装置。
(付記7)
前記第2生成部は、前記第1生成部によって生成された前記第1の機械語命令に前記特定の種別ではない種別の変数名が含まれる場合に、前記第1生成部によって生成された前記第1の機械語命令に含まれる前記特定の種別ではない種別の変数を特定の変数値情報とした、前記複数の第2の機械語命令を生成する、
付記6に記載の情報処理装置。
(付記8)
前記第2生成部によって生成された前記複数の第2の機械語命令を他の情報処理装置に送信する送信部
を更に備える、付記6又は7に記載の情報処理装置。
(付記9)
マスク値及び機械語命令を取得する第1取得部と、
検索対象の変数値情報を取得する第2取得部と、
前記第1取得部によって取得された前記マスク値と、前記第2取得部によって取得された前記検索対象の変数値情報の一部との論理積を算出する算出部と、
前記第1取得部によって取得された前記機械語命令と前記算出部によって算出された前記論理積とを比較することにより、前記検索対象の変数値情報の中から特定の変数値情報を検索する検索部と、
を備える、情報処理装置。
(付記10)
前記第1取得部は、前記マスク値及び前記機械語命令の長さを取得し、
前記第2取得部は、取得した前記長さと等しい特定の長さの変数値情報を、前記検索対象の変数値情報から抽出し、
前記算出部は、抽出した前記特定の長さの変数値情報と、前記マスク値とについて、前記論理積を算出する、
付記9に記載の情報処理装置。
(付記11)
コンパイラにより生成されたコードのうち、いずれかのコードの指定を受け付けると、前記いずれかのコードに対応した、少なくとも変数名を含む第1の機械語命令を生成し、
生成した前記第1の機械語命令に特定の種別の変数名が含まれる場合に、変数値の候補となる複数の変数値情報を変数名に対応付けて記憶する記憶部を参照して、生成した前記第1の機械語命令に含まれる前記変数名をそれぞれ当該変数名に対応付けられた複数の変数値情報とした複数の第2の機械語命令を生成する、
生成方法。
(付記12)
生成した前記第1の機械語命令に前記特定の種別ではない種別の変数名が含まれる場合に、生成した前記第1の機械語命令に含まれる前記特定の種別ではない種別の変数を特定の変数値情報とした、前記複数の第2の機械語命令を生成する、
付記11に記載の生成方法。
(付記13)
生成した前記複数の第2の機械語命令を特定の情報処理装置に送信する、
付記11又は12に記載の生成方法。
(付記14)
検索対象の変数値情報を取得し、
マスク値及び機械語命令を取得し、
取得した前記マスク値と、取得した前記検索対象の変数値情報の一部との論理積を算出し、
取得した前記機械語命令と算出した前記論理積とを比較することにより、前記検索対象の変数値情報の中から特定の変数値情報を検索する、
検索方法。
(付記15)
前記マスク値及び前記機械語命令の長さを取得し、
取得した前記長さと等しい特定の長さの変数値情報を、前記検索対象の変数値情報から抽出し、
抽出した前記特定の長さの変数値情報と、前記マスク値とについて、前記論理積を算出する、
付記14に記載の検索方法。
1 :情報処理装置
11 :CPU
12 :メモリ
13 :表示制御部
130 :表示装置
14 :記憶装置
15 :入力I/F
151 :マウス
152 :キーボード
16 :読み書き処理部
160 :記録媒体
17 :通信I/F
10 :処理部
111 :第1生成部
112 :第2生成部
113 :第1取得部
114 :第2取得部
115 :算出部
116 :検索部
117 :送信部
21 :COBOLソース
22 :コンパイラ
23 :リンカ
24 :アプリケーション
25 :カスタムコンパイラ
26 :中間コード
27 :予測リスト
28 :検索装置
221 :FE部
222 :プログラム
223 :BE部
251 :機械語生成部
252 :レジスタ割付部
253 :アドレス解決部
254 :オブジェクト生成部
255 :機械語命令の原型
256 :レジスタ割付機械語命令
257 :機械語命令
271 :長さ
272 :マスク値
273 :機械語命令ブロック
2231 :領域割付処理部
2232 :レジスタ割付処理部
2233 :第1機械語生成処理部
2234 :第2機械語生成処理部
61 :コンパイラ
62 :コンパイラ開発者
63 :保守要員
64 :COBOL資産
65 :アプリケーション
66 :チェックツール

Claims (5)

  1. コンピュータに、
    コンパイラにより生成されたコードのうち、いずれかのコードの指定を受け付けると、前記いずれかのコードに対応した、少なくとも変数名を含む第1の機械語命令を生成し、
    生成した前記第1の機械語命令にレジスタの種別の変数名が含まれる場合に、変数値の候補となる複数の変数値情報を変数名に対応付けて記憶する記憶部を参照して、生成した前記第1の機械語命令に含まれる前記レジスタの種別の変数名をそれぞれ当該変数名に対応付けられた複数の変数値情報とした複数の第2の機械語命令を生成する、
    処理を実行させる、生成プログラム。
  2. 生成した前記第1の機械語命令に前記レジスタの種別ではない種別の変数名が含まれる場合に、生成した前記第1の機械語命令に含まれる前記レジスタの種別ではない種別の変数を、前記複数の変数値情報とは異なりレジスタの割り当て前に用いられる特定の変数値情報とした、前記複数の第2の機械語命令を生成する、
    処理を前記コンピュータに実行させる、請求項1に記載の生成プログラム。
  3. 生成した前記複数の第2の機械語命令を特定の情報処理装置に送信する、
    処理を前記コンピュータに実行させる、請求項1又は2に記載の生成プログラム。
  4. コンパイラにより生成されたコードのうち、いずれかのコードの指定を受け付けると、前記いずれかのコードに対応した、少なくとも変数名を含む第1の機械語命令を生成する第1生成部と、
    前記第1生成部によって生成された前記第1の機械語命令にレジスタの種別の変数名が含まれる場合に、変数値の候補となる複数の変数値情報を変数名に対応付けて記憶する記憶部を参照して、前記第1生成部によって生成された前記第1の機械語命令に含まれる前記レジスタの種別の変数名をそれぞれ当該変数名に対応付けられた複数の変数値情報とした複数の第2の機械語命令を生成する第2生成部と、
    を備える、情報処理装置。
  5. コンピュータが、
    コンパイラにより生成されたコードのうち、いずれかのコードの指定を受け付けると、前記いずれかのコードに対応した、少なくとも変数名を含む第1の機械語命令を生成し、
    生成した前記第1の機械語命令にレジスタの種別の変数名が含まれる場合に、変数値の候補となる複数の変数値情報を変数名に対応付けて記憶する記憶部を参照して、生成した前記第1の機械語命令に含まれる前記レジスタの種別の変数名をそれぞれ当該変数名に対応付けられた複数の変数値情報とした複数の第2の機械語命令を生成する、
    処理を実行する、生成方法。
JP2018184429A 2018-09-28 2018-09-28 生成プログラム,情報処理装置及び生成方法 Active JP7163697B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018184429A JP7163697B2 (ja) 2018-09-28 2018-09-28 生成プログラム,情報処理装置及び生成方法
US16/580,508 US11113052B2 (en) 2018-09-28 2019-09-24 Generation apparatus, method for first machine language instruction, and computer readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018184429A JP7163697B2 (ja) 2018-09-28 2018-09-28 生成プログラム,情報処理装置及び生成方法

Publications (2)

Publication Number Publication Date
JP2020052953A JP2020052953A (ja) 2020-04-02
JP7163697B2 true JP7163697B2 (ja) 2022-11-01

Family

ID=69945293

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018184429A Active JP7163697B2 (ja) 2018-09-28 2018-09-28 生成プログラム,情報処理装置及び生成方法

Country Status (2)

Country Link
US (1) US11113052B2 (ja)
JP (1) JP7163697B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11635947B2 (en) * 2020-05-22 2023-04-25 Fujitsu Limited Instruction translation support method and information processing apparatus

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020042909A1 (en) 2000-10-05 2002-04-11 Koninklijke Philips Electronics N.V. Retargetable compiling system and method
US20080307177A1 (en) 2007-06-11 2008-12-11 Daimon Masatsugu Program conversion device
JP2017211695A (ja) 2016-05-23 2017-11-30 富士通株式会社 情報処理装置、変換プログラム、及び変換方法

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59160245A (ja) 1983-03-02 1984-09-10 Mitsubishi Electric Corp プログラム保守装置
JPH01196641A (ja) 1988-01-30 1989-08-08 Nec Corp ロードモジュールの仮想アドレス割り当て方式
IL100990A (en) * 1991-02-27 1995-10-31 Digital Equipment Corp Multilingual optimization compiler that uses Gladi in the production of a multi-pass cipher
CA2081475C (en) * 1991-02-27 1998-05-05 Robert Neil Faiman Jr. Multilanguage optimizing compiler using templates in multiple pass code generation
JP3318051B2 (ja) * 1993-06-17 2002-08-26 富士通株式会社 翻訳処理方法
JP3327674B2 (ja) * 1994-04-01 2002-09-24 松下電器産業株式会社 プログラム翻訳装置及び方法
US5579520A (en) * 1994-05-13 1996-11-26 Borland International, Inc. System and methods for optimizing compiled code according to code object participation in program activities
US5774726A (en) * 1995-04-24 1998-06-30 Sun Microsystems, Inc. System for controlled generation of assembly language instructions using assembly language data types including instruction types in a computer language as input to compiler
US5893145A (en) * 1996-12-02 1999-04-06 Compaq Computer Corp. System and method for routing operands within partitions of a source register to partitions within a destination register
US6009505A (en) * 1996-12-02 1999-12-28 Compaq Computer Corp. System and method for routing one operand to arithmetic logic units from fixed register slots and another operand from any register slot
US6305009B1 (en) * 1997-12-05 2001-10-16 Robert M. Goor Compiler design using object technology with cross platform capability
JP3264901B2 (ja) * 1998-04-01 2002-03-11 松下電器産業株式会社 コンパイル装置及びコンパイル方法
US6219457B1 (en) * 1998-05-26 2001-04-17 Silicon Graphics, Inc. Method and system for decoding data encoded in a variable length code word
EP0992916A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Digital signal processor
US6463582B1 (en) * 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US6490673B1 (en) * 1998-11-27 2002-12-03 Matsushita Electric Industrial Co., Ltd Processor, compiling apparatus, and compile program recorded on a recording medium
JP2001005675A (ja) * 1999-06-21 2001-01-12 Matsushita Electric Ind Co Ltd プログラム変換装置及びプロセッサ
US6363523B1 (en) * 1999-11-12 2002-03-26 Sun Microsystems, Inc. Optimization of N-base typed arithmetic expressions
US7681013B1 (en) * 2001-12-31 2010-03-16 Apple Inc. Method for variable length decoding using multiple configurable look-up tables
US7114058B1 (en) * 2001-12-31 2006-09-26 Apple Computer, Inc. Method and apparatus for forming and dispatching instruction groups based on priority comparisons
US6573846B1 (en) * 2001-12-31 2003-06-03 Apple Computer, Inc. Method and apparatus for variable length decoding and encoding of video streams
JP4426764B2 (ja) 2003-01-21 2010-03-03 株式会社日立製作所 コンパイラテストプログラムの自動生成方法
US7299170B2 (en) * 2003-06-28 2007-11-20 Transitive Limited Method and apparatus for the emulation of high precision floating point instructions
US7493481B1 (en) * 2004-05-17 2009-02-17 Netxen, Inc. Direct hardware processing of internal data structure fields
US7373489B1 (en) * 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US8156481B1 (en) * 2007-10-05 2012-04-10 The Mathworks, Inc. Profiler-based optimization of automatically generated code
US8621448B2 (en) * 2010-09-23 2013-12-31 Apple Inc. Systems and methods for compiler-based vectorization of non-leaf code
US8959477B2 (en) * 2011-10-21 2015-02-17 Sap Se Scripting language for business applications
JP6241352B2 (ja) * 2014-03-31 2017-12-06 富士通株式会社 コンパイラ、コンパイル方法、およびコンパイル装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020042909A1 (en) 2000-10-05 2002-04-11 Koninklijke Philips Electronics N.V. Retargetable compiling system and method
JP2004511043A (ja) 2000-10-05 2004-04-08 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ リターゲッタブルコンパイルシステム及び方法
US20080307177A1 (en) 2007-06-11 2008-12-11 Daimon Masatsugu Program conversion device
JP2008305337A (ja) 2007-06-11 2008-12-18 Panasonic Corp プログラム変換装置、プログラム変換方法、プログラム、記憶媒体、デバッグ装置、デバッグ方法及びプログラム開発システム
JP2017211695A (ja) 2016-05-23 2017-11-30 富士通株式会社 情報処理装置、変換プログラム、及び変換方法

Also Published As

Publication number Publication date
US20200104130A1 (en) 2020-04-02
JP2020052953A (ja) 2020-04-02
US11113052B2 (en) 2021-09-07

Similar Documents

Publication Publication Date Title
US11366677B2 (en) Methods, blockchain nodes, and node devices for executing smart contract
JP5951022B2 (ja) デコード時間命令最適化を用いた、強化されたアプリケーション・バイナリ・インターフェース(abi)のためのコードのリンク
Wang et al. Uroboros: Instrumenting stripped binaries with static reassembling
EP2829970B1 (en) A method and apparatus for porting source code
EP3427148B1 (en) Load module compiler
JP2014531680A (ja) デコード時間命令最適化を用いた、強化されたアプリケーション・バイナリ・インターフェース(abi)のためのコードのコンパイル
JP4041248B2 (ja) コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法
US10705814B2 (en) Systems and/or methods for generating reassemblable disassemblies of binaries using declarative logic
US20220107827A1 (en) Applying security mitigation measures for stack corruption exploitation in intermediate code files
US20240231864A9 (en) Hybrid just in time load module compiler with performance optimizations
JP7163697B2 (ja) 生成プログラム,情報処理装置及び生成方法
Espindola et al. Source matching and rewriting for MLIR using string-based automata
JP6651974B2 (ja) 情報処理装置、コンパイル方法及びコンパイラプログラム
Kirchner et al. bin2llvm: analysis of binary programs using LLVM intermediate representation
WO2012032807A1 (ja) 実行モジュール最適化装置、実行モジュール最適化方法、およびプログラム
JP5887811B2 (ja) コンパイル装置、コンパイル方法、コンパイルプログラム、記録媒体
CN114816435A (zh) 一种基于逆向技术的软件开发方法
JP7410269B2 (ja) テスト・ベクタを使用した高水準コンストラクトの最適化の自動検証
US20050144605A1 (en) Information processing system and code generation method
JP5891976B2 (ja) コンパイル実行・管理方法、装置、及びプログラム
Drescher et al. Fast Template-Based Code Generation for MLIR
Jordan et al. The Development of Lexer and Parser as parts of compiler for GAMA32 processor’s instruction-set using Python
Robson A JIT compiler for OCaml bytecode
KARAPATEAS RETARGETING AN ASSEMBLY OPTIMIZER FOR THE MIPS/SCALE ASSEMBLY
de Jong Optimizing RISC-V Binaries using LLVM-based Same-Architecture Binary Translation

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190607

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210610

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220525

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220801

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: 20220920

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221003

R150 Certificate of patent or registration of utility model

Ref document number: 7163697

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150