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