Tips for Porting software to a 64-bit platform

publicaciones de 62 / 0 nuevos
Último envío
Para obtener más información sobre las optimizaciones del compilador, consulte el aviso sobre la optimización.

>>>>Programs with inline assembler code are not fully portable to other hardware platforms. If you are designing for portability,
>>>>avoid using inline assembler.
>>>>...
>>
>>Intel C++ compiler supports (!) inline assembler in C/C++ codes targeted for 64-bit Windows platforms!

A test project for Visual Studio 2008 is attached ( Intel C++ compiler is set as a default compiler ). Here is a screenshot:

Adjuntos: 

Imagen de iliyapolak

I<<<ntel C++ compiler supports (!) inline assembler in C/C++ codes targeted for 64-bit Windows platforms>>>

Imagen de iliyapolak

@Sergey

Thank you for verifying this.

All these tips are results of some real port of the software from a 32-bit to 64-bit Windows platform. It wasn't just a matter of verification if some feature of a C++ compiler supported or not.

Imagen de iliyapolak

Cita:

Sergey Kostrov escribió:

All these tips are results of some real port of the software from a 32-bit to 64-bit Windows platform. It wasn't just a matter of verification if some feature of a C++ compiler supported or not.

Yes it is obvious:)

30. Adding a new 64-bit platform to some already existing Visual Studio project(s) ( with Win32, Windows CE or Windows Mobile platforms ) is a very easy procedure:

[ In Visual Studio ] -> Build -> Configuration Manager -> Active solution platform ( select New ) -> Add x64 platform ( Copy settings from Win32 platform & check 'Create new project platform' )

31. There is a report about issues with Microsoft's CRT-function exp when porting some codes to a 64-bit Windows platform:

Forum Topic: MKL vs Microsoft exp() function
Web-link: software.intel.com/en-us/forums/topic/392924

Even if a user claims that there is inconsistency in results a solid test case and results are Not provided. I've spent some time on investigation and my results are very consistent.

Imagen de Andrey Karpov

Lessons on development of 64-bit C/C++ applications

The course is devoted to creation of 64-bit applications in C/C++ language and is intended for the Windows developers who use Visual Studio 2005/2008/2010 environment. Developers working with other 64-bit operating systems will learn much interesting as well. The course will consider all the steps of creating a new safe 64-bit application or migrating the existing 32-bit code to a 64-bit system.

The course is composed of 28 lessons devoted to introduction to 64-bit systems, issues of building 64-bit applications, methods of searching errors specific to 64-bit code and code optimization. Such questions are also considered as estimate of the cost of moving to 64-bit systems and rationality of this move.

The contents of the course

  • Lesson 01. What 64-bit systems are.
  • Lesson 02. Support of 32-bit applications.
  • Lesson 03. Porting code to 64-bit systems. The pros and cons.
  • Lesson 04. Creating the 64-bit configuration.
  • Lesson 05. Building a 64-bit application.
  • Lesson 06. Errors in 64-bit code.
  • Lesson 07. The issues of detecting 64-bit errors.
  • Lesson 08. Static analysis for detecting 64-bit errors.
  • Lesson 09. Pattern 01. Magic numbers.
  • Lesson 10. Pattern 02. Functions with variable number of arguments.
  • Lesson 11. Pattern 03. Shift operations.
  • Lesson 12. Pattern 04. Virtual functions.
  • Lesson 13. Pattern 05. Address arithmetic.
  • Lesson 14. Pattern 06. Changing an array's type.
  • Lesson 15. Pattern 07. Pointer packing.
  • Lesson 16. Pattern 08. Memsize-types in unions.
  • Lesson 17. Pattern 09. Mixed arithmetic.
  • Lesson 18. Pattern 10. Storage of integer values in double.
  • Lesson 19. Pattern 11. Serialization and data interchange.
  • Lesson 20. Pattern 12. Exceptions.
  • Lesson 21. Pattern 13. Data alignment.
  • Lesson 22. Pattern 14. Overloaded functions.
  • Lesson 23. Pattern 15. Growth of structures' sizes.
  • Lesson 24. Phantom errors.
  • Lesson 25. Working with patterns of 64-bit errors in practice.
  • Lesson 26. Optimization of 64-bit programs.
  • Lesson 27. Peculiarities of creating installers for a 64-bit environment.
  • Lesson 28. Estimating the cost of 64-bit migration of C/C++ applications.

The course's duration:the course implies that you study each of the 28 lessons on your own in 20-40 minutes. The total time of studying the material is about 18 hours.

You may open all the lessons in one file (the print version as well). This single file may be printed with the help of a common printer or converted into a pdf-file with the help of a pdf-printer.

Imagen de iliyapolak

Great resources.

Thanks for sharing.

This is related to 64-bit programming and take a look...

I recently had a very interesting question about size of a union, like:
...
typedef union tagSomeUnion
{
char A;
char B;
char C;
size_t D;
} SomeUnion;
...
Even if it looks too easy to answer there is No a single answer to that question and this is why:

8-bit platform: sizeof( SomeUnion ) = 1 byte
16-bit platform: sizeof( SomeUnion ) = 2 bytes
32-bit platform: sizeof( SomeUnion ) = 4 bytes
64-bit platform: sizeof( SomeUnion ) = 8 bytes

and so on.

32. I've recently detected an issue with size_t type in a highly portable C/C++ codes ( for 16-bit, 32-bit and 64-bit platforms ) and I'll provide some additional technical details later.

Páginas

Inicie sesión para dejar un comentario.