64-bit
- The definition of a 64-bit system and overview of its evolution
- Architecture of 64-bit systems
- Data model, types' sizes, alignment
- Course on 64-bit application development
- Various articles
- Building the applications
- Miscellaneous
- My invitations
In this article, I've collected a huge amount of links all of which could prove potentially useful to software developers who are getting acquainted with 64-bit world. In general, we will cover C/C++ languages, but I am sure, that developers from other languages will discover a lot of interesting stuff here as well.
The definition of a 64-bit system and overview of its evolution
- 32-bit and 64-bit explained.
- John R. Mashey. The Long Road to 64 Bits.
- Wikipedia. 64-bit computing.
Architecture of 64-bit systems
- Sachin R Sangoi. The 64 bit OS Architecture.
- Andrey Karpov. AMD64 (EM64T) architecture.
- Wikipedia. Itanium (IA-64).
- Wikipedia. x86-64 (x64, AMD64, Intel64).
- Jeremy Gordon. Writing 64-bit programs.
- Eric Palmer. CPUID for x64 Platforms and Microsoft Visual Studio* .NET 2005.
- Stack frame layout on x86-64.
- Mike Becker. Accessing 32-bit DLLs from 64-bit code.
- The history of calling conventions, part 5: amd64.
- Andrey Karpov. The reasons why 64-bit programs require more stack memory.
- Knowledge Base. What advantages do 64-bit processors have over 32-bit ones?
- Knowledge Base. Why do 64-bit applications work faster than 32-bit ones?
Data model, types' sizes, alignment
- Data model.
- 64-Bit Programming Models: Why LP64?
- Why did the Win64 team choose the LLP64 model?
- Kang Su Gatlin. Windows Data Alignment on IPF, x86, and x64.
- Andrey Karpov. About size_t and ptrdiff_t.
- Dan Saks. Why size_t matters.
Course on 64-bit application development
- What 64-bit systems are.
- Support of 32-bit applications.
- Porting code to 64-bit systems. The pros and cons.
- Creating the 64-bit configuration.
- Building a 64-bit application.
- Errors in 64-bit code.
- The issues of detecting 64-bit errors.
- Static analysis for detecting 64-bit errors.
- Pattern 01. Magic numbers.
- Pattern 02. Functions with variable number of arguments.
- Pattern 03. Shift operations.
- Pattern 04. Virtual functions.
- Pattern 05. Address arithmetic.
- Pattern 06. Changing an array's type.
- Pattern 07. Pointer packing.
- Pattern 08. Memsize-types in unions.
- Pattern 09. Mixed arithmetic.
- Pattern 10. Storage of integer values in double.
- Pattern 11. Serialization and data interchange.
- Pattern 12. Exceptions.
- Pattern 13. Data alignment.
- Pattern 14. Overloaded functions.
- Pattern 15. Growth of structures' sizes.
- Phantom errors.
- Working with patterns of 64-bit errors in practice.
- Optimization of 64-bit programs.
- Peculiarities of creating installers for a 64-bit environment.
- Estimating the cost of 64-bit migration of C/C++ applications.
Various articles
- Andrey Karpov. A Collection of Examples of 64-bit Errors in Real Programs.
- 64-bit ODBC.
- Migrating 32-bit Managed Code to 64-bit.
- Checklist for 64-bit Microsoft Windows Drivers.
- Andrey Karpov. A 64-bit horse that can count.
- Andrey Karpov. Problems of testing 64-bit applications.
- Andrey Karpov. 64-bit programs and floating-point calculations.
Building the applications
- Andrey Karpov. Seven Steps of Migrating a Program to a 64-bit System
- Bojan Komazec. 32-bit and 64-bit versions of Windows C++ application.
- Daniel Pistelli. Moving to Windows Vista x64.
- Knowledge Base. The warnings C4311 and C4312 generated by the compiler when using the /Wp64 switch
- Knowledge Base. How to compile a 64-bit application with using Visual C++ Express 2005/2008/2010?
- Knowledge Base. A common error occurring when compiling a 64-bit application: error C2440, OnTimer
- Knowledge Base. Strange errors occurring when compiling the 64-bit version of an application, error C2664
- Knowledge Base. A common error occurring when compiling a 64-bit application: error C4235, Assembler
- Knowledge Base. How can I know if the DWORD_PTR type is defined using ifdef?
- Knowledge Base. Why does not Visual C++ support the inline assembler for Intel 64 and IA-64 anymore?
- Knowledge Base. Warning C4267 in the expression unsigned n = str.find(substr)
- Knowledge Base. How to check if a 64-bit project is being built in Visual Studio using #ifdef
- Knowledge Base. Using _WIN64/WIN64 macros
Miscellaneous
- Andrey Karpov. A nice 64-bit error in C.
- Knowledge Base. How to correctly print a value of the types __int64, size_t, and ptrdiff_t
- Knowledge Base. Is it possible to use more than 2 Gbytes of memory in a 32-bit program launched in the 64-bit Windows?
- Knowledge Base. How to correctly cast a pointer to int in a 64-bit application?
- Knowledge Base. How can a 32-bit program detect that it is launched in a 64-bit Windows?
- Knowledge Base. Functions of the ntohl/htonl class and 64-bit values
- Knowledge Base. Difference between %p and %x
- Knowledge Base. Why is the value of the ProgramFiles environment variable replaced with that of ProgramFiles(x86)?
- Knowledge Base. Is there a way to make the type size_t 32-bit in a 64-bit program?
- Knowledge Base. Is size_t a standard type in C++? And in C?
- Knowledge Base. Why does Windows put 64-bit units into System32?
- Knowledge Base. WOW6432Node and API-functions RegOpenKeyEx / RegEnumKeyEx
- Knowledge Base. Why does WoW64 use register and file system redirection?
- Knowledge Base. Confusion of WPARAM with UINT, and LPARAM with LONG
- Knowledge Base. How much memory can an application access in Win32 and Win64?
- Knowledge Base. What can I use instead of "int 3" instruction in a 64-bit application?
- Knowledge Base. Can I use 32-bit pointers in a 64-bit application?
- Knowledge Base. How can I find out in a 32-bit application what 64-bit processes are launched?
- Knowledge Base. What can I use instead of rundll32.exe to run 64-bit DLL?
- Knowledge Base. Why is it so hard to create a 64-bit version of an application?
- Knowledge Base. How can I find out in Win64 how many processor cores there are in the system?
- Knowledge Base. Why do 64-bit operating systems use only 48-bit addresses for addressing?
- Knowledge Base. What is the POINTER_32 macro?
- Knowledge Base. What does the pointer size depend on in C++ on different platforms?
My invitations
- I invite you to follow our twitter @Code_Analysis or Viva64 subreddit. Subjects: C/C++, 64-bit systems, testing, algorithms and other interesting programming stuff.
- I offer you to download the trial of PVS-Studio static code analyzer to ensure the reliability of your 64-bit applications.
0