← Back to Patent Explorer
US5432937A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for architecture independent executable files

Assignee: Next Software Inc
•
Filing: 1993-08-20
•
Granted: 1995-07-11
•
Expires: 2013-08-20
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract The present invention is a method that enables single release of applications for multiple architectures and operating systems and to provide ease of use of applications in multiple architecture environments. The present invention provides a single file that contains separate object code each of multiple architectures. A special header on the file identifies each section of object code and includes pointers to its starting location. When the file is to be executed on a particular architecture, the resident operating system identifies that block of object code most suited for that particular architecture and environment. That section of code is then loaded into memory for execution. Each architecture in the file is specified by CPU-type and CPU sub-type. For each CPU type or CPU sub-type, file offset, file size and alignment is also provided. Padded bytes are provided to place each member on its specific alignment. These padded bytes are undefined and can be left as "holes" if the file system cannot support them. The appropriate architecture can be picked at compile time and compilers that can run on any architecture are provided to perform the translation.

Inventors

  • 👤 Avadis Tevanian
  • 👤 Michael DeMoney
  • 👤 Kevin Enderby
  • 👤 Douglas Wiebe
  • 👤 Garth Snyder

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-04 23:42
CPC Classifications
G; G06; G06F; G06F8/00; G06F8/40; G06F8/41; G06F8/47; G06F9/00; G06F9/06; G06F9/44; G06F9/445; G06F9/44536; G06F9/44542; G06F9/44547

Claims Analysis

Total Claims: 12
Claim 1
Independent Claim 262 words
A method of opening an architecture independent executable file containing a plurality of blocks of executable code for each of a plurality of Central Processing Unit (CPU) types for use with a desired CPU type of a computer system comprising the steps of: searching a file for an identifier header; attempting to load from said computer system's storage and execute in said computer system said file's contents when said identifier header is not found in said file; reading said identifier header when said identifier header is found in said file; determining said plurality of CPU types identified in said identifier header; comparing each of said plurality of CPU types to a desired CPU type; terminating the opening process when none of said plurality of CPU types are identified in said identifier header that correspond to said desired CPU type; determining CPU sub-types identified in said identifier header when one of said plurality of CPU types identified in said identifier header corresponds to said desired CPU type; comparing said CPU sub-types identified in said identifier header to a desired CPU sub-type; loading from said computer system's storage and executing in said computer system a block of object code corresponding to said desired CPU sub-type when one of said CPU sub-types identified in said identifier header corresponds to said desired CPU sub-type; loading from said computer system's storage and executing in said computer system said block of object code corresponding to said desired CPU type when one of said CPU sub-types identified in said identifier header does not correspond to said desired CPU sub-type.
Claim 2
Independent Claim 262 words
A method of opening an architecture independent executable file containing a plurality of blocks of executable code for each of a plurality of Central Processing Unit (CPU) types for use with a desired CPU type of a computer system comprising the steps of: searching a file for an identifier header; attempting to load from said computer system's storage and execute in said computer system said file's contents when said identifier header is not found in said file; reading said identifier header when said identifier header is found in said file; determining said plurality of CPU types identified in said identifier header; comparing each of said plurality of CPU types to a desired CPU type; terminating the opening process when none of said plurality of CPU types are identified in said identifier header that correspond to said desired CPU type; determining CPU sub-types identified in said identifier header when one of said plurality of CPU types identified in said identifier header corresponds to said desired CPU type; comparing said CPU sub-types identified in said identifier header to a desired CPU sub-type; loading from said computer system's storage and executing in said computer system a block of object code corresponding to said desired CPU sub-type when one of said CPU sub-types identified in said identifier header corresponds to said desired CPU sub-type; loading from said computer system's storage and executing in said computer system said block of object code corresponding to said desired CPU type when one of said CPU sub-types identified in said identifier header does not correspond to said desired CPU sub-type.
Claim 3
Dependent Claim 49 words
The method of claim 1 wherein said file comprises an identifier header identifying each of said plurality of blocks of code contained in said file; a first block of object code compiled for a first architecture type; a second block of object code compiled for a second architecture type.
Claim 4
Dependent Claim 51 words
The method of claim 2 wherein said identifier header includes: a first identifier identifying said file as an architecture independent file; a second identifier identifying the number of object code blocks contained in said file; a plurality of architecture identifiers each associated with one of said plurality of object code blocks.
Claim 5
Dependent Claim 13 words
The method of claim 3 wherein said first identifier comprises a hexadecimal word.
Claim 6
Dependent Claim 36 words
The method of claim 4 wherein each architecture identifier includes: a CPU type identifier; a CPU sub-type identifier; an offset to an associated object code block; an object code block size identifier; and, an alignment identifier.
Claim 7
Dependent Claim 15 words
The method of claim 5 wherein said first architecture type comprises a 68K architecture type.
Claim 8
Dependent Claim 15 words
The method of claim 6 wherein said second architecture type comprises an i86 architecture type.
Claim 9
Dependent Claim 22 words
The method of claim 2 wherein said file further includes a third block of object code compiled for a third architecture type.
Claim 10
Dependent Claim 15 words
The method of claim 8 wherein said third architecture type comprises a RISC architecture type.
Claim 11
Dependent Claim 29 words
The method of claim 2 wherein said file further includes a third block of object code compiled for a sub-type of one of said first and second architecture types.
Claim 12
Dependent Claim 17 words
The method of claim 10 wherein said third block of object code comprises an i86 architecture sub-type.

References Cited (Backward Citations)

US4814975A Cited
US4691278A Cited
US4667290A Cited
US5053945A Cited
US5119465A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1998-07-10 1999-01-09 1999-07-11 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2002-07-10 2003-01-09 2003-07-11 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2006-07-10 2007-01-09 2007-07-11 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag