Concerning "What should I keep in mind? What will be the challenges?" These are most common issues that I've encountered when porting code from 32-bit to 64-bit:
- Assuming that a pointer is 4-bytes
- Assuming that sizeof(int) == sizeof(pointer)
- Assuming that sizeof(int) == sizeof(size_t)
- Inline / hard coded x86 assembly
Make sure you use the most strict warning level when compiling (/W4
on microsoft's compiler or -Wall -Wextra -pedantic-errors
on gcc) to help catch conversions from a larger type to a smaller type.
Here is Microsoft's guide for porting, but is appropriate for other compilers as well.