Proxy Compiler for Cross-Architecture Execution
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Compilers require knowledge of both the native and non-native architectures for cross-compilation, making it difficult to support new programming languages on legacy architectures without writing new compilers, and limiting the flexible use of modern languages on unsupported platforms.
Innovation Solution
A proxy compiler is used within a native execution environment to create a native executable that is tied to a non-native image, allowing non-native instructions to be executed as if they are native, without direct compilation or translation, by determining a native source file based on the non-native image creator and incorporating identification information for a trusted relationship.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If cross-compilation is used to execute non-native instructions on a native architecture, then execution capability is improved, but compiler complexity increases because the compiler must know both architectures
Solution Approach 1:
The system segments the compilation and execution functions into separate components: a proxy compiler that generates native executables and a non-native image creator that produces non-native images. This separation allows each component to specialize in one architecture, reducing the complexity burden on any single compiler while maintaining cross-architecture execution capability.
Solution Approach 2:
The patent introduces a proxy compiler as an intermediary component that bridges the native and non-native architectures. The proxy compiler generates native executables that can invoke non-native images, effectively mediating between the two architectures without requiring the native compiler to directly understand or support the non-native architecture.
2Adaptability or versatility
If a new compiler is written for each programming language on legacy architecture, then language support is improved, but development time and maintenance burden increase
Solution Approach 1:
The proxy compiler serves multiple functions: it can work with any non-native image creator that produces compatible non-native images, supporting multiple programming languages without requiring separate native compilers for each language. The universal interface allows the same proxy compiler to support diverse languages by leveraging existing non-native image creators.
Solution Approach 2:
Instead of creating new native compilers for each language, the system copies and reuses existing non-native image creators. The proxy compiler invokes these existing creators to generate non-native images, which are then executed within the native environment. This copying approach avoids the time-consuming process of writing new compilers while maintaining language support.
3Device complexity
If direct compilation is used where source code, compiler, and executable reside on the same architecture, then simplicity is improved, but flexibility to use modern languages on legacy systems deteriorates
Solution Approach 1:
The proxy compiler acts as an intermediary that enables modern programming languages to be used on legacy systems without requiring direct compilation. It translates modern language source code into native executables that can invoke non-native images, bridging the gap between simple direct compilation and flexible cross-architecture execution.
Solution Approach 2:
The system performs preliminary compilation actions by using the proxy compiler to generate native executables before execution. This preliminary step prepares the execution environment in advance, allowing the native executable to seamlessly invoke non-native images during runtime without requiring complex runtime compilation or translation mechanisms.
Data Source
AI summary
A proxy compiler may be used within a native execution environment to enable execution of non-native instructions from a non-native execution environment as if being performed within the native execution environment. In particular, the proxy compiler coordinates creation of a native executable that is uniquely tied to a particular non-native image at the time of creation of the non-native image. This allows a trusted relationship between the native executable and the non-native image, while avoiding a requirement of compilation/translation of the non-native instructions for execution directly within the native execution environment.


