JP2008523514A - バイエンディアン対応コンパイラを実現する方法及び装置 - Google Patents
バイエンディアン対応コンパイラを実現する方法及び装置 Download PDFInfo
- Publication number
- JP2008523514A JP2008523514A JP2007545690A JP2007545690A JP2008523514A JP 2008523514 A JP2008523514 A JP 2008523514A JP 2007545690 A JP2007545690 A JP 2007545690A JP 2007545690 A JP2007545690 A JP 2007545690A JP 2008523514 A JP2008523514 A JP 2008523514A
- Authority
- JP
- Japan
- Prior art keywords
- endian
- data
- type
- code
- compiler
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
Description
本発明の実施例は、コンパイラに関する。より詳細には、本発明の実施例は、バイエンディアン対応コンパイラを実現する方法及び装置に関する。
バイトエンディアンは、データ格納及びデータ抽出が複数のアクセスサイズをサポートする場合におけるデータ格納及び抽出の属性である。より細かい粒度のアクセスは、プログラマがより大きなアクセスがバイトをメモリに格納する順序を確認することを可能にする。ビッグエンディアンデータは、リトルエンディアンデータと反対のバイト順序によりメモリに格納される。リトルエンディアンデータは、それの最下位バイトと共に最下位のメモリバイトアドレスに格納される(左から右に格納される)。ビッグエンディアンデータは、それの最上位バイトと共に最下位のメモリバイトアドレスに格納される(右から左に格納される)。同一の値を有するビッグ及びリトルエンディアン変数は、CPUレジスタでは同一であるが、メモリでは異なる順序を有している。
以下の記載では、説明のため、具体的な用語が本発明の実施例の完全な理解を提供するため与えられる。しかしながら、本記載の具体的詳細は本発明の実施例を実現するのに必要ではないかもしれないということは、当業者に明らかである。他の例では、本発明の実施例を不必要に不明りょうにすることを回避するため、周知のコンポーネント、プログラム及び手続はブロック図により示される。
Claims (28)
- コードをコンパイルする方法であって、
エンディアンタイプをデータに割り当てるステップと、
前記データのエンディアンタイプとターゲットシステムとに基づき、エンディアンフリップ処理を実行するステップと、
を有する方法。 - 前記コードのデータの宣言から前記データのエンディアンタイプを決定するステップをさらに有する、請求項1記載の方法。
- 非明示的宣言基準に基づき、前記データのエンディアンタイプを決定するステップをさらに有する、請求項1記載の方法。
- 前記非明示的宣言基準は、前記コードの位置を有する、請求項3記載の方法。
- 前記非明示的宣言基準は、前記コードを有するディレクトリ内のファイルの特性を有する、請求項3記載の方法。
- 前記エンディアンフリップ処理は、前記データに対応するバイトを交換することを有する、請求項1記載の方法。
- 前記データに対応するバイトの交換は、メモリへのデータの書き込み前であって、前記メモリからのデータの読み出し後に実行される、請求項6記載の方法。
- 前記バイトの交換は、マシーンコードに1以上のマシーン命令を挿入することを有する、請求項6記載の方法。
- 前記1以上のマシーン命令は、BSWAP命令を有する、請求項8記載の方法。
- 共通部分表現が存在すると判断すると、エンディアンフリップ処理を削除するステップをさらに有する、請求項1記載の方法。
- 前記エンディアンフリップ処理を命令ストリームの先の部分に移動するステップをさらに有する、請求項1記載の方法。
- 命令を含む命令シーケンスを有するマシーンアクセス可能媒体を有する製造物であって、
当該命令は、実行時に、
エンディアンタイプをデータに割り当てるステップと、
前記データのエンディアンタイプとターゲットシステムとに基づき、エンディアンフリップ処理を実行するステップと、
前記マシーンに実行させる物。 - 実行時に、コードの前記データの宣言から前記データのエンディアンタイプを決定するステップを前記マシーンにさらに実行させる命令を有する、請求項12記載の物。
- 実行時に、非明示的宣言基準に基づき、前記データのエンディアンタイプを決定するステップを前記マシーンにさらに実行させる命令を有する、請求項12記載の物。
- 前記エンディアンフリップ処理の実行は、前記データに対応するバイトを交換することを有する、請求項12記載の物。
- 前記データに対応するバイトの交換は、メモリへの前記データの書き込み前であって、前記メモリからのデータの読み出し後に実行される、請求項15記載の物。
- 前記バイトの交換は、1以上のマシーン命令をマシーンコードに挿入することを有する、請求項15記載の方法。
- 前記1以上のマシーン命令は、BSWAP命令を含む、請求項17記載の方法。
- エンディアンタイプをデータに割り当てるフロントエンドユニットと、
前記データのエンディアンタイプとターゲットシステムのエンディアンタイプとに基づき、エンディアンフリップ処理を実行すべきときを決定する中間言語ユニットと、
を有するコンパイラ。 - 前記フロントエンドユニットは、コードの前記データの宣言から前記データのエンディアンタイプを決定する、請求項19記載のコンパイラ。
- 前記フロントエンドユニットは、非明示的宣言基準に基づき、前記データのエンディアンタイプを決定する、請求項19記載のコンパイラ。
- 共通部分表現が存在すると判断すると、エンディアンフリップ処理を除去する最適化ユニットをさらに有する、請求項19記載のコンパイラ。
- エンディアンフリップ処理を命令ストリームの先の部分に移動する最適化ユニットをさらに有する、請求項19記載のコンパイラ。
- 前記エンディアンフリップ処理を可能にするため、1以上のマシーン命令を挿入するコード生成ユニットをさらに有する、請求項19記載のコンパイラ。
- メモリと、
エンディアンタイプをデータに割り当てるフロントエンドユニットと、前記データのエンディアンタイプとターゲットシステムのエンディアンタイプとに基づき、エンディアンフリップ処理を実行すべきときを決定する中間言語ユニットとを有するコンパイラを実現するプロセッサと、
を有するコンピュータシステム。 - 前記フロントエンドユニットは、コードの前記データの宣言から前記データのエンディアンタイプを決定する、請求項25記載のコンピュータシステム。
- 前記フロントエンドユニットは、非明示的宣言基準に基づき、前記データのエンディアンタイプを決定する、請求項25記載のコンピュータシステム。
- 前記コンパイラはさらに、前記エンディアンフリップ処理を可能にするため、1以上のマシーン命令を挿入するコード生成ユニットをさらに有する、請求項25記載のコンピュータシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/010,490 US7552427B2 (en) | 2004-12-13 | 2004-12-13 | Method and apparatus for implementing a bi-endian capable compiler |
PCT/US2005/044772 WO2006065689A1 (en) | 2004-12-13 | 2005-12-09 | Method and apparatus for implementing a bi-endian capable compiler |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008523514A true JP2008523514A (ja) | 2008-07-03 |
Family
ID=36111788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007545690A Pending JP2008523514A (ja) | 2004-12-13 | 2005-12-09 | バイエンディアン対応コンパイラを実現する方法及び装置 |
Country Status (6)
Country | Link |
---|---|
US (2) | US7552427B2 (ja) |
EP (1) | EP1846819A1 (ja) |
JP (1) | JP2008523514A (ja) |
KR (2) | KR100962746B1 (ja) |
CN (1) | CN101160564B (ja) |
WO (1) | WO2006065689A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011129132A (ja) * | 2009-12-21 | 2011-06-30 | Intel Corp | エンディアン変換ツール |
US8266596B2 (en) | 2009-08-26 | 2012-09-11 | Kabushiki Kaisha Toshiba | Source code analyzing system and source code analyzing method |
JP2012529698A (ja) * | 2009-06-25 | 2012-11-22 | インテル・コーポレーション | バイ・エンディアンコンパイラを用いたコードの最適化 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7552427B2 (en) * | 2004-12-13 | 2009-06-23 | Intel Corporation | Method and apparatus for implementing a bi-endian capable compiler |
EP2177987A1 (en) * | 2008-10-17 | 2010-04-21 | Alcatel Lucent | A method for handling different types of data, corresponding device, storage means, and software program therefore |
IL196635A0 (en) * | 2009-01-21 | 2009-11-18 | Solomon Edlin | High current capacity inner leads for semiconductor device |
US8661421B2 (en) * | 2009-12-21 | 2014-02-25 | Intel Corporation | Methods and apparatuses for endian conversion |
CN101916235B (zh) * | 2010-08-02 | 2013-09-11 | 凌阳科技股份有限公司 | 一种中央处理单元及其存取数据的方法 |
US20140100841A1 (en) * | 2012-10-09 | 2014-04-10 | Apple Inc. | Testing a Hardware Emulation Model of a Circuit with Software Checker Routines Designed for an RTL Model of the Circuit |
US9898386B2 (en) | 2013-10-15 | 2018-02-20 | Nxp Usa, Inc. | Detecting byte ordering type errors in software code |
US9507595B2 (en) | 2014-02-28 | 2016-11-29 | International Business Machines Corporation | Execution of multi-byte memory access instruction specifying endian mode that overrides current global endian mode |
US20150248345A1 (en) * | 2014-03-02 | 2015-09-03 | Ralink Technology Corp. | Swap method and Electronic System thereof |
CN104049949B (zh) * | 2014-05-30 | 2016-10-05 | 南阳理工学院 | 一种面向bswap指令的窥孔优化方法 |
US9619214B2 (en) | 2014-08-13 | 2017-04-11 | International Business Machines Corporation | Compiler optimizations for vector instructions |
US10169014B2 (en) | 2014-12-19 | 2019-01-01 | International Business Machines Corporation | Compiler method for generating instructions for vector operations in a multi-endian instruction set |
US9588746B2 (en) | 2014-12-19 | 2017-03-07 | International Business Machines Corporation | Compiler method for generating instructions for vector operations on a multi-endian processor |
US9569190B1 (en) * | 2015-08-04 | 2017-02-14 | International Business Machines Corporation | Compiling source code to reduce run-time execution of vector element reverse operations |
US9880821B2 (en) | 2015-08-17 | 2018-01-30 | International Business Machines Corporation | Compiler optimizations for vector operations that are reformatting-resistant |
US9594668B1 (en) | 2015-09-04 | 2017-03-14 | International Business Machines Corporation | Debugger display of vector register contents after compiler optimizations for vector instructions |
CN112835842B (zh) * | 2021-03-05 | 2024-04-30 | 深圳市汇顶科技股份有限公司 | 端序处理方法、电路、芯片以及电子终端 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04362738A (ja) * | 1991-06-10 | 1992-12-15 | Oki Electric Ind Co Ltd | 変数管理方法 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0776917B2 (ja) * | 1984-12-29 | 1995-08-16 | ソニー株式会社 | マイクロコンピユ−タ |
GB2229832B (en) * | 1989-03-30 | 1993-04-07 | Intel Corp | Byte swap instruction for memory format conversion within a microprocessor |
EP0605882B1 (en) * | 1993-01-08 | 1996-12-11 | Nec Corporation | Method and apparatus for wet treatment of solid surfaces |
US5524256A (en) * | 1993-05-07 | 1996-06-04 | Apple Computer, Inc. | Method and system for reordering bytes in a data stream |
US5687337A (en) * | 1995-02-24 | 1997-11-11 | International Business Machines Corporation | Mixed-endian computer system |
US5928349A (en) * | 1995-02-24 | 1999-07-27 | International Business Machines Corporation | Mixed-endian computing environment for a conventional bi-endian computer system |
US5781763A (en) * | 1995-04-07 | 1998-07-14 | International Business Machines Corporation | Independent control of DMA and I/O resources for mixed-endian computing systems |
US5778406A (en) * | 1995-06-30 | 1998-07-07 | Thomson Consumer Electronics, Inc. | Apparatus for delivering CPU independent data for little and big endian machines |
US5907865A (en) * | 1995-08-28 | 1999-05-25 | Motorola, Inc. | Method and data processing system for dynamically accessing both big-endian and little-endian storage schemes |
DE19535306A1 (de) * | 1995-09-22 | 1997-03-27 | Siemens Ag | Verfahren zum Konvertieren sich unterscheidender Datenformate |
US5828884A (en) * | 1996-05-23 | 1998-10-27 | Advanced Micro Devices, Inc. | Method for compiling a software program and executing on a system which converts data between different endian formats |
WO1997044739A1 (en) * | 1996-05-23 | 1997-11-27 | Advanced Micro Devices, Inc. | Apparatus for converting data between different endian formats and system and method employing same |
US6021275A (en) * | 1996-08-05 | 2000-02-01 | General Magic, Inc. | Object code structure and method for translation of architecture independent program implementations |
US6411395B1 (en) * | 1997-07-23 | 2002-06-25 | International Business Machines Corporation | Apparatus and method for conversion of data between different formats |
US6578193B1 (en) | 1998-03-24 | 2003-06-10 | Novell, Inc. | Endian-neutral loader for interpretive environment |
EP1119805B8 (en) * | 1998-10-10 | 2006-05-03 | Transitive Limited | Endian transformation |
US6351750B1 (en) * | 1998-10-16 | 2002-02-26 | Softbook Press, Inc. | Dynamic conversion of byte ordering for use on different processor platforms |
US6691307B2 (en) | 1999-08-03 | 2004-02-10 | Sun Microsystems, Inc. | Interpreter optimization for native endianness |
US6687262B1 (en) * | 2000-02-21 | 2004-02-03 | Hewlett-Packard Development Company, L.P. | Distributed MUX scheme for bi-endian rotator circuit |
EP1182558A1 (en) * | 2000-08-21 | 2002-02-27 | Texas Instruments Incorporated | MME descriptor having big/little endian bit to control the transfer data between devices |
GB0026363D0 (en) * | 2000-10-27 | 2000-12-13 | Sgs Thomson Microelectronics | Bi-endian libraries |
US7278137B1 (en) * | 2001-12-26 | 2007-10-02 | Arc International | Methods and apparatus for compiling instructions for a data processor |
US7389315B1 (en) * | 2002-02-28 | 2008-06-17 | Network Appliance, Inc. | System and method for byte swapping file access data structures |
US7047383B2 (en) * | 2002-07-11 | 2006-05-16 | Intel Corporation | Byte swap operation for a 64 bit operand |
US6895489B2 (en) * | 2002-08-07 | 2005-05-17 | Hewlett-Packard Development Company, L.P. | System and method for operating in endian independent mode |
US20040045007A1 (en) * | 2002-08-30 | 2004-03-04 | Bae Systems Information Electronic Systems Integration, Inc. | Object oriented component and framework architecture for signal processing |
US20040221274A1 (en) | 2003-05-02 | 2004-11-04 | Bross Kevin W. | Source-transparent endian translation |
US20050066146A1 (en) * | 2003-09-19 | 2005-03-24 | Intel Corporation | Endian conversion |
US20050097127A1 (en) * | 2003-10-30 | 2005-05-05 | Microsoft Corporation | Reordering data between a first predefined order and a second predefined order with secondary hardware |
US7552427B2 (en) | 2004-12-13 | 2009-06-23 | Intel Corporation | Method and apparatus for implementing a bi-endian capable compiler |
KR20060078433A (ko) * | 2004-12-31 | 2006-07-05 | 엘지전자 주식회사 | 컴파일러의 메모리 접근코드 생성 방법 |
US7721077B2 (en) * | 2006-12-11 | 2010-05-18 | Intel Corporation | Performing endian conversion |
-
2004
- 2004-12-13 US US11/010,490 patent/US7552427B2/en not_active Expired - Fee Related
-
2005
- 2005-12-09 WO PCT/US2005/044772 patent/WO2006065689A1/en active Application Filing
- 2005-12-09 KR KR1020097025678A patent/KR100962746B1/ko not_active IP Right Cessation
- 2005-12-09 EP EP05853640A patent/EP1846819A1/en not_active Ceased
- 2005-12-09 KR KR1020077013380A patent/KR100947137B1/ko not_active IP Right Cessation
- 2005-12-09 CN CN200580042563.6A patent/CN101160564B/zh not_active Expired - Fee Related
- 2005-12-09 JP JP2007545690A patent/JP2008523514A/ja active Pending
-
2009
- 2009-05-11 US US12/454,005 patent/US8863103B2/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04362738A (ja) * | 1991-06-10 | 1992-12-15 | Oki Electric Ind Co Ltd | 変数管理方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012529698A (ja) * | 2009-06-25 | 2012-11-22 | インテル・コーポレーション | バイ・エンディアンコンパイラを用いたコードの最適化 |
US8910114B2 (en) | 2009-06-25 | 2014-12-09 | Intel Corporation | Optimizing code using a bi-endian compiler |
US8266596B2 (en) | 2009-08-26 | 2012-09-11 | Kabushiki Kaisha Toshiba | Source code analyzing system and source code analyzing method |
JP2011129132A (ja) * | 2009-12-21 | 2011-06-30 | Intel Corp | エンディアン変換ツール |
Also Published As
Publication number | Publication date |
---|---|
US7552427B2 (en) | 2009-06-23 |
KR20100007978A (ko) | 2010-01-22 |
KR20070086161A (ko) | 2007-08-27 |
US20090222800A1 (en) | 2009-09-03 |
US8863103B2 (en) | 2014-10-14 |
EP1846819A1 (en) | 2007-10-24 |
US20060125663A1 (en) | 2006-06-15 |
WO2006065689A1 (en) | 2006-06-22 |
CN101160564A (zh) | 2008-04-09 |
CN101160564B (zh) | 2013-01-02 |
KR100947137B1 (ko) | 2010-03-12 |
KR100962746B1 (ko) | 2010-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2008523514A (ja) | バイエンディアン対応コンパイラを実現する方法及び装置 | |
US8037461B2 (en) | Program code conversion | |
KR101150003B1 (ko) | 소프트웨어 개발 툴 생성 방법 | |
US8868848B2 (en) | Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform | |
TWI317504B (en) | Method, apparatus and computer-readable storage medium having computer-readable code executable for performing lazy byteswapping optimizations during program code conversion | |
US7568189B2 (en) | Code translation and pipeline optimization | |
US7536682B2 (en) | Method and apparatus for performing interpreter optimizations during program code conversion | |
JP4833206B2 (ja) | 最適化されたプログラムのためのアンワインド情報の生成 | |
US20080052693A1 (en) | Method of simd-ization through data reshaping, padding, and alignment | |
US20120198427A1 (en) | Ensuring Register Availability for Dynamic Binary Optimization | |
JPH0782441B2 (ja) | シミユレーシヨン方法 | |
US7240334B1 (en) | Methods, systems, and computer program products for deferred computer program tracing | |
JP2008020449A (ja) | ナビゲーションデータベースのためのフォーマット記述 | |
CN112631657A (zh) | 用于字符串处理的字节比较方法以及指令处理装置 | |
US6467037B1 (en) | Utilizing a program counter with one or more data counters for executing instructions | |
EP2336881A2 (en) | Methods and apparatuses for endian conversion | |
US7165245B2 (en) | Pruning local graphs in an inter-procedural analysis solver | |
US20030217356A1 (en) | Register allocation for program execution analysis | |
Friedman | Decompilation and the transfer of mini-computer operating systems. | |
CN116841657A (zh) | 接口函数调用方法和装置 | |
Chung | HSA Runtime | |
Mong | Retargetable Binary Tools for Embedded Software |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100803 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20101015 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20101022 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110203 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20110301 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110630 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20110630 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20110630 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20110722 |
|
A912 | Re-examination (zenchi) completed and case transferred to appeal board |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20110819 |