On Jan 11, 2006, at 10:53 AM, Roland Torres wrote: On Jan 11, 2006, at 10:08 AM, Chris Espinosa wrote: On Jan 11, 2006, at 9:59 AM, Robin Lake wrote: Let's say I have a Universal Binary application. Does this application become fixed to one hardware or the other (A) at the time it is installed or (B) at the time it is launched?
The situation will be a PowerPC Mac networked to an IntelMac. The PowerPC Mac desktop can show the IntelMac file system and I wonder if I can launch a .app on the Intel?
Applications are not "fixed to one hardware." A Universal Binary has both PPC and Intel code in its Mach-O executable. If two users are sharing a networked copy of that application, PPC users will map in the PPC code, and Intel users will map in the Intel code.
This is technology that was deployed by NeXT back in the NeXTStep days, where the dominant paradigm was server-based app images being shared by users on a variety of platforms, and it works well.
Just thinking out loud here...
So, the next step (no pun) will be for the next generation of Universal Binary to include: - 32-bit PPC - 32-bit Intel - 64-bit Intel
How will the proper binary be chosen at runtime then? Will the default be to run the 32-bit binary if the user is on a 32-bit Intel or PPC system, and the 64-bit binary on 64-bit Intel systems?
The runtime on the system you're using picks the corresponding binary. This works correctly today, for example, with the real-life case you omit: 64-bit PPC. And there are APIs to override this: for example, the Get Info box on 10.4.4 allows you to check a box to launch the PPC side of a Universal Binary under Rosetta on an Intel machine, rather than launching the Intel side; this is useful for testing and debugging.
We write all this stuff down, you know. You can read
to get a comprehensive overview ho how Mach-O binaries are loaded.
Chris |