This document describes the 64-bit features that are available in Mac OS X v10.4 and v10.5. You should read it to help you determine which of these features to use and how to use them.
For the purposes of this document, 64-bit computing is defined as support for a 64-bit address space—that is, support for concurrent use of more than 4 GB of memory by a single executable program—no more, no less.
Beginning with version 10.4, Mac OS X supports command-line 64-bit executables on G5-based Macintosh computers and 64-bit-capable Intel Macintosh computers.
Beginning with version 10.5, Mac OS X supports full-featured 64-bit applications on G5-based and 64-bit-capable Intel Macintosh computers.
Beginning with Snow Leopard, Mac OS X uses a 64-bit kernel on some Intel computers.
Mac OS X application developers should, at a minimum, read the chapter “Should You Recompile Your Software as a 64-Bit Executable?.” That chapter will help you determine whether it makes sense for your application to take advantage of 64-bit application support in Mac OS X v10.5 and later.
If you are not planning to update your application to include a 64-bit executable, the 64-bit changes in Mac OS X v10.5 and later will probably have no impact on you. The advantages and disadvantages of compiling your code as a 64-bit executable are discussed in more detail in the chapter “Should You Recompile Your Software as a 64-Bit Executable?.”
Developers of device drivers and kernel extensions should also read this document. Beginning with Snow Leopard, device drivers and kernel extensions must be compiled with a 64-bit slice to be loadable into a 64-bit kernel.
This document is organized into the following chapters:
“Should You Recompile Your Software as a 64-Bit Executable?”—provides helpful guidance about whether you should recompile your application as a 64-bit executable.
“Major 64-Bit Changes”—describes the high-level architectural changes between a 32-bit and 64-bit environment.
“Making Code 64-Bit Clean”—explains the general changes needed to make an application 64-bit clean.
“Compiling 64-Bit Code”—explains how to compile your application as a 64-bit executable.
“High-Level 64-Bit API Support”—summarizes changes to higher level APIs such as Carbon, Cocoa, and QuickTime and includes pointers to more detailed documentation on these changes.
“Cross-Architecture Plug-in Support”—describes ways to support legacy plug-ins across architecture boundaries using helper hosts.
“Performance Optimization”—gives tips for spotting common performance regressions caused by transitioning your code to 64-bit.
“Kernel Extensions and Drivers”—tells how to transition your drivers and other kernel extensions to 64-bit executables.
“Simulating a 64-Bit Address Space with mmap and munmap ”—describes a technique for emulating a 64-bit address space in a 32-bit application.
For additional information, see the following documents:
Getting Started with Tools & Languages includes pointers to documentation that may help you solve 64-bit-related tools issues.
64-Bit Transition Guide for Cocoa and 64-Bit Guide for Carbon Developers provide information about Apple’s 64-bit application APIs.
Universal Binary Programming Guidelines, Second Edition provides information about the Intel transition. You should read this document and add native Intel support to your application first, since many of the Intel changes also apply to a 64-bit port.
Mac OS X ABI Mach-O File Format Reference provides 64-bit ABI information that is useful if you are writing assembly language code.
Xcode Quick Start provides information about using Xcode. You should be familiar with Xcode before you port your application or driver to 64-bit.
The gcc
, ld
, and lipo
man pages may also be relevant to you.
Last updated: 2010-01-15