Porting to a 64-bit Intel® architecture
With the strategic importance of the 64-bit Intel® Itanium architecture and Intel Extended Memory 64 Technology (Intel EM64T) to Intel's growth, the company has put numerous resources in place to assist developers in porting software.

by Andrew Binstock, principal analyst, Pacific Data Works LLC. Intel Corp.

Due to the strategic importance of the 64-bit Intel® Itanium architecture and Intel Extended Memory 64 Technology (Intel EM64T) to Intel's growth, the company has put numerous resources in place to assist developers in porting software. As discussed elsewhere on this site, 64-bit computing places different demands upon the developer than 32-bit computing.

Porting Application Source Code
The most significant issues that software developers should face in porting source code to the 64-bit world concern the changes in pointer size and fundamental integer types. As such, these differences should appear most prominently in C and C++ programs. Code written in Fortran, COBOL, Visual Basic, and most other languages (except assembly language, which must be completely rewritten), will need no modification. A simple recompilation is often all that is needed. Java code should not even need recompilation; Java classes should execute the same on a 64-bit JVM as on any 32-bit virtual machine.

C (from here on, C++ is included in all discussions of C) code, however, by allowing casting across types and direct access to machine-specific integral types will need some attention.

The first aspect is the size of pointers; 64-bit operating systems use 64-bit pointers. This means that the following will equal eight (and no longer four):

sizeof (ptrdiff_t)

As a result, structures that contain pointers will have different sizes as well. As such, if data laid out for these structures is stored on disk, reading it in or writing it out will cause errors. Likewise, unions with pointer fields will have different sizes and can cause unpredictable results.

The greatest effect, though, is felt wherever pointers are cast to integral types. This practice, which has been condemned for years as inimical to portability, will come back to haunt programmers who did not abandon it. The problems caused by it are traceable to the different widths used by pointers, integers and longs on the various platforms. Let's examine these.

Read the read of this article: click link below.

© 2004 Intel Corp.


Subscribers who liked this article also read:
Detecting Hyper-Threading Technology and Counting Processors in Multi-Core Systems
See the complete article Learn how to detect HT Technology in a mul...

If you're interested in this topic, these articles may be helpful:

Intel® Fortran Compiler 8.1 for Linux
Deliver outstanding performance on single and multiprocessor computers...
Intel Itanium Processor Family reference guide: IA-32 Execution Layer
The Intel Itanium processor family has been architected to provide ind...
Boosting Cryptography Performance with Intel® Libraries
by Muneesh Nagpal, server applications engineer, Core Software Divisio...
Threading Games for High Performance on Intel® Processors
The evolution of the multi-threaded processor design is the trend for ...
Intel Itanium microarchitecture support for .NET and Java
by Matt Gillespie, technical author and editor. Intel Corp. The Int...

Related Jobs:

Sr. Software Engineer - Parallel Programming, MPI - MA - Waltham - Interactive Supercomputing, Inc.
Interactive Supercomputing, Inc. develops Star-P, a software platform ...
Systems Engineer #149178 - WA - Redmond - Microsoft Corporation
MSN Core Platform Engineering team is looking for a standout performer...
System Administrator 4-IT #IRC272726 - CA - Redwood Shores - Oracle
Responsible for creating and implementing system enhancements that wil...
Software Developer #7070 - AR - Conway - Acxiom Corporation
Software Developers create a vision for customer software deliverables...
Applications Developer 3 #IRC296973 - MN - Minneapolis - Oracle
This Software Engineering group designs, codes and tests new developme...
QA Manager-ProdDev #IRC292547 - CA - Redwood Shores - Oracle
Oracle Application Server is an integrated product that enables enterp...
Applications Developer 4 #IRC280822 - MA - Cambridge - Oracle
We are looking for Java developers to work on our J2EE-based enterpris...
Principal Computational Engineer - MA - Waltham - Interactive Supercomputing, Inc.
The ideal candidate will have a combination broad knowledge of computa...
Solutions Specialist #Corp-BK - NJ - Voorhees - SunGard
Reference No.: Corp-BK Opening Date: May 23, 2007 Job Title: Solut...
C++ / Linux Software Engineer, TelePresence #R814253 - CA - San Jose - Cisco Systems, Inc.
Job Description: We have a current opening for a C++ / Linux Software...