Introduction to 64-Bit Transition Guide
This document describes the 64-bit features that are available in 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.
What Is 64-Bit Computing?
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.
OS X v10.8 uses a 64-bit kernel and fully supports 64-bit applications. The 64-bit kernel was originally introduced in OS X v10.6 (on some models of Mac hardware), and 64-bit application support was introduced in v10.5. Command-line 64-bit support was introduced in v10.4.
Who Should Read This Document?
Mac app 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 OS X v10.5 and later.
Developers of device drivers and kernel extensions should also read this document. Beginning with v10.6, device drivers and kernel extensions must be compiled with a 64-bit slice to be loadable into a 64-bit kernel. Beginning with v10.8, all kernel device drivers and other extensions must be compiled with a 64-bit slice.
Organization of This Document
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.
For additional information, see the following documents:
Tools & Languages Starting Point 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.
OS X ABI Mach-O File Format Reference provides 64-bit ABI information that is useful if you are writing assembly language code.
Xcode 4 Help provides information about using Xcode. You should be familiar with Xcode before you port your application or driver to 64-bit.
lipo man pages may also be relevant to you.