Proxy Compiler for Cross-Architecture Execution

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering 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

Engineering Contradiction:
Improveexecution capabilityVSAvoidcompiler complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

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.

Inventive Principle:
Principle #1Segmentation

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

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

Engineering Contradiction:
Improvelanguage supportVSAvoiddevelopment time
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

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.

Inventive Principle:
Principle #6Universality (Multi-functionality)

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.

Inventive Principle:
Principle #26Copying

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

Engineering Contradiction:
Improvesystem simplicityVSAvoidlanguage flexibility
Core Design Contradiction:
Device complexityVSAdaptability or versatility

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

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.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11494170B2Proxy compilation for execution in a foreign architecture controlled by execution within a native architecture
Publication Date: 2022.11.08 UNISYS CORP
  • US11494170B2 patent drawing
  • US11494170B2 patent drawing
  • US11494170B2 patent drawing

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.