<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic 28. Inline assembler ( in Software Tuning, Performance Optimization &amp; Platform Monitoring</title>
    <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803246#M772</link>
    <description>&lt;STRONG&gt;28.&lt;/STRONG&gt; Inline assembler ( keywords _asm or __asm ) is Not supported in C/C++ source files on 64-bit Windows platforms. This is an example of a compilation error of Microsoft C++ compiler:
...
SomeHeader.h(98) : &lt;STRONG&gt;error C4235&lt;/STRONG&gt;: nonstandard extension used : '__asm' keyword not supported on this architecture
...

&lt;STRONG&gt;[ A quote from MSDN ]&lt;/STRONG&gt;
...
Inline assembler is not supported on the Itanium and x64 processors.
...
Programs with inline assembler code are not fully portable to other hardware platforms. If you are designing for portability, avoid using inline assembler.
...</description>
    <pubDate>Sat, 09 Mar 2013 01:47:46 GMT</pubDate>
    <dc:creator>SergeyKostrov</dc:creator>
    <dc:date>2013-03-09T01:47:46Z</dc:date>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803201#M727</link>
      <description>&lt;P&gt;I'd like to share some experience on porting a C/C++ project to a 64-bit platform. It was started last week and I already&lt;BR /&gt;have lots of different problems.&lt;BR /&gt;&lt;BR /&gt;Here is a list of Tips, Detected Problems and Issues:&lt;/P&gt;&lt;P&gt; &lt;STRONG&gt;1&lt;/STRONG&gt;. I recommend to take a look at the following topics on MSDN if you're about to start a 64-bit programming:&lt;/P&gt;&lt;P&gt; "Platform SDK: 64-bit Windows Programming"&lt;BR /&gt; "Migration Tips"&lt;BR /&gt; "64-Bit Programming with Visual C++"&lt;BR /&gt; "How to: Configure Projects to Target Platforms"&lt;/P&gt;&lt;P&gt; &lt;STRONG&gt;2&lt;/STRONG&gt;. Turn on a /Wp64 compiler option for Microsoft compatible C++ compilers. It detects 64-bit&lt;BR /&gt; portability problems on types that are marked with the __w64 keyword;&lt;/P&gt;&lt;P&gt; &lt;STRONG&gt;3&lt;/STRONG&gt;. Issue - LONGLONG data type:&lt;BR /&gt; ...&lt;BR /&gt; #if !defined( _M_IX86 )&lt;BR /&gt; typedef __int64 LONGLONG;&lt;BR /&gt; #else&lt;BR /&gt; typedef double LONGLONG;&lt;BR /&gt; #endif&lt;BR /&gt; ...&lt;/P&gt;&lt;P&gt; &lt;STRONG&gt;4&lt;/STRONG&gt;. Issue - Date &amp;amp; Time CRT-functions and data types&lt;/P&gt;&lt;P&gt; &lt;STRONG&gt;5&lt;/STRONG&gt;. Issue - A 'size_t' type is used in 'new' C++ operators to pass a size of a memory to allocate and&lt;BR /&gt;  it is 8-bytes long on a 64-bit platform&lt;/P&gt;&lt;P&gt; &lt;STRONG&gt;6&lt;/STRONG&gt;. Microsoft C++ compiler ( a test case ):&lt;BR /&gt; ...&lt;BR /&gt; int iInt32 = 0xffffeeeeddddcccc; // -&amp;gt; iInt32 = 0xddddcccc - This is simplya verification of truncation&lt;BR /&gt; ...&lt;/P&gt;&lt;P&gt; &lt;STRONG&gt;7&lt;/STRONG&gt;. Problem - MinGW C++ compiler ( a test case ):&lt;BR /&gt; ...&lt;BR /&gt; int iInt32 = 0xffffeeeeddddcccc; // -&amp;gt; Error: integer constant is too large for "long" type&lt;BR /&gt; ...&lt;/P&gt;&lt;P&gt; &lt;STRONG&gt;8&lt;/STRONG&gt;. Use explicit 'ifdef's for different platforms ( pseudo codes ):&lt;BR /&gt; ...&lt;BR /&gt; #ifdef _16BIT_PLATFORM_&lt;BR /&gt; //...&lt;BR /&gt; #endif&lt;BR /&gt; #ifdef _32BIT_PLATFORM_&lt;BR /&gt; //...&lt;BR /&gt; #endif&lt;BR /&gt; #ifdef _64BIT_PLATFORM_&lt;BR /&gt; //...&lt;BR /&gt; #endif&lt;BR /&gt; ...&lt;/P&gt;&lt;P&gt; &lt;STRONG&gt;9&lt;/STRONG&gt;. Default ( turn on ) the following warnigs for Microsoft compatible C++ compilers:&lt;/P&gt;&lt;P&gt; #pragma warning ( default : 4239 )// Nonstandard extension used : 'type cast' : conversion from 'type1' to 'type2'&lt;BR /&gt; #pragma warning ( default : 4242 )// Conversion from 'type1' to 'type2', possible loss of data&lt;BR /&gt; #pragma warning ( default : 4244 )// Conversion from 'type1' to 'type2', possible loss of data&lt;BR /&gt; #pragma warning ( default : 4305 )// 'Initializing' : truncation from 'type1' to 'type2'&lt;BR /&gt; #pragma warning ( default : 4309 )// 'Initializing' : truncation of constant value&lt;BR /&gt; #pragma warning ( default : 4311 )// 'Type cast' : pointer truncation from 'type1' to 'type2'&lt;/P&gt;&lt;P&gt; &lt;STRONG&gt;10&lt;/STRONG&gt;. Verify how the __w64 keyword works for Microsoft compatible C++ compilers:&lt;/P&gt;&lt;P&gt; // Test Case - Verification of __w64 keyword - based on MSDN example&lt;BR /&gt; // 'V64C' stands for 'Verify 64-bit Compatibility'&lt;/P&gt;&lt;P&gt; ...&lt;BR /&gt; #if ( defined ( _WIN32_MSC ) || defined ( _WIN32_ICC ) )&lt;BR /&gt; #define _RTV64C__w64&lt;BR /&gt; #endif&lt;BR /&gt; #if ( defined ( _WIN32CE_MSC ) || defined ( _WIN32_BCC ) || defined ( _WIN32_MGW ) ||\\&lt;BR /&gt;  defined ( _COS16_TCC ) )&lt;BR /&gt; #define _RTV64C&lt;BR /&gt; #endif&lt;BR /&gt; ...&lt;/P&gt;&lt;P&gt; #pragma warning ( default : 4244 )// Conversion from 'type1' to 'type2', possible loss of data&lt;/P&gt;&lt;P&gt; #define _WIN64&lt;BR /&gt; //#undef _WIN64&lt;/P&gt;&lt;P&gt; typedef int Int_32;&lt;/P&gt;&lt;P&gt; #ifdef _WIN64&lt;BR /&gt; typedef __int64 Int_Native;&lt;BR /&gt; #else&lt;BR /&gt; typedef int _RTV64C Int_Native;&lt;BR /&gt; #endif&lt;/P&gt;&lt;P&gt; Int_32 iInt_32 = 0xffeeddcc;&lt;BR /&gt; Int_Native iInt_Native = 0xffffeeeeddddcccc;&lt;BR /&gt; iInt_32 = iInt_Native; // MSDN - Warning C4244: 64-bit int assigned to 32-bit int&lt;BR /&gt; // Compiler - Warning C4244: '=' : conversion from 'Int_Native' to 'Int_32', possible loss of data&lt;BR /&gt; #undef _WIN64&lt;/P&gt;&lt;P&gt; #pragma warning ( disable : 4244 )&lt;BR /&gt; ...&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;11&lt;/STRONG&gt;. If a project has Test Cases ALL of them must be verified on a 64-bit platform&lt;/P&gt;</description>
      <pubDate>Sun, 17 Jun 2012 19:17:06 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803201#M727</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-06-17T19:17:06Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803202#M728</link>
      <description>Here are a couple of screenshots that demonstrate the truncation of a 64-bit value when&lt;BR /&gt;assigned to a 32-bit variable:&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="text-decoration: underline;"&gt;State 1&lt;/SPAN&gt; - Values are uninitialized&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper"&gt;&lt;img src="https://community.intel.com/skins/images/7B13F55A7CE623EF42E69096FA81A3A1/2021_redesign/images/image_not_found.png" /&gt;&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="text-decoration: underline;"&gt;State 2&lt;/SPAN&gt; - Values initialized&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper"&gt;&lt;img src="https://community.intel.com/skins/images/7B13F55A7CE623EF42E69096FA81A3A1/2021_redesign/images/image_not_found.png" /&gt;&lt;/span&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN style="text-decoration: underline;"&gt;State 3&lt;/SPAN&gt; - A 64-bit value was assigned to a 32-bit variable&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper"&gt;&lt;img src="https://community.intel.com/skins/images/7B13F55A7CE623EF42E69096FA81A3A1/2021_redesign/images/image_not_found.png" /&gt;&lt;/span&gt;</description>
      <pubDate>Sun, 17 Jun 2012 19:24:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803202#M728</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-06-17T19:24:00Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803203#M729</link>
      <description>&lt;DIV id="tiny_quote"&gt;&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1339961443093="58" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=353541" href="https://community.intel.com/en-us/profile/353541/" class="basic"&gt;Sergey Kostrov&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color: #e5e5e5; margin-left: 2px; margin-right: 2px; border: 1px inset; padding: 5px;"&gt;&lt;I&gt;I'd like to share some experience on porting a C/C++ project to a 64-bit platform. It was started last week and I already&lt;BR /&gt;have lots of different problems...&lt;BR /&gt;&lt;BR /&gt; ...&lt;BR /&gt; &lt;STRONG&gt;4&lt;/STRONG&gt;. Issue - Date &amp;amp; Time CRT-functions and data types&lt;BR /&gt; ...&lt;/I&gt;&lt;/DIV&gt;&lt;BR /&gt;Please take a look at a thread:&lt;BR /&gt;&lt;BR /&gt; &lt;STRONG&gt;Is a "Y2K38 disaster" looming? Issues with a 'time_t' type&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt; &lt;A href="http://software.intel.com/en-us/forums/showthread.php?t=105868&amp;amp;o=a&amp;amp;s=lr"&gt;http://software.intel.com/en-us/forums/showthread.php?t=105868&amp;amp;o=a&amp;amp;s=lr&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;for more technical details.&lt;/DIV&gt;</description>
      <pubDate>Sun, 17 Jun 2012 19:29:55 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803203#M729</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-06-17T19:29:55Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803204#M730</link>
      <description>&lt;STRONG&gt;Everybody is welcomed to sharea 64-bit programming experience!&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;Best regards,&lt;BR /&gt;Sergey&lt;BR /&gt;</description>
      <pubDate>Sun, 17 Jun 2012 19:33:29 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803204#M730</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-06-17T19:33:29Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803205#M731</link>
      <description>&lt;STRONG&gt;12&lt;/STRONG&gt;.Issues with a'&lt;STRONG&gt;fseek&lt;/STRONG&gt;' CRT-function detected:&lt;BR /&gt;&lt;P&gt;&lt;BR /&gt;For a &lt;STRONG&gt;32-bit&lt;/STRONG&gt; platform it is declared as follows:&lt;BR /&gt;  int &lt;STRONG&gt;fseek&lt;/STRONG&gt;( FILE *stream, long offset, int origin );&lt;BR /&gt;&lt;BR /&gt;For a &lt;STRONG&gt;64-bit&lt;/STRONG&gt; platform it is declared as follows:&lt;BR /&gt;  int &lt;STRONG&gt;_fseeki64&lt;/STRONG&gt;( FILE *stream, __int64 offset, int origin );&lt;BR /&gt;&lt;BR /&gt;A macro-wrapper is needed to make codes more portable.&lt;/P&gt;</description>
      <pubDate>Tue, 19 Jun 2012 01:38:51 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803205#M731</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-06-19T01:38:51Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803206#M732</link>
      <description>&lt;P&gt;&lt;STRONG&gt;13&lt;/STRONG&gt;. Issues with some intrinsic functions detected:&lt;BR /&gt;&lt;BR /&gt; &lt;SPAN style="text-decoration: underline;"&gt;Header&lt;/SPAN&gt;: '&lt;STRONG&gt;nmmintrin.h&lt;/STRONG&gt;'&lt;BR /&gt;  ...&lt;BR /&gt;  // Calculate a number of bits set to 1&lt;BR /&gt; ...&lt;BR /&gt;  #if defined( _M_X64 )&lt;BR /&gt;  extern __int64 &lt;STRONG&gt;_mm_popcnt_u64&lt;/STRONG&gt;( unsigned __int64 v );&lt;BR /&gt;  #endif&lt;BR /&gt;  ...&lt;BR /&gt;&lt;BR /&gt; &lt;SPAN style="text-decoration: underline;"&gt;Header&lt;/SPAN&gt;: '&lt;STRONG&gt;smmintrin.h&lt;/STRONG&gt;'&lt;BR /&gt;  ...&lt;BR /&gt;  // Insert integer into packed integer array element&lt;BR /&gt;  // selected by index&lt;BR /&gt;  ...&lt;BR /&gt;  #if defined( _M_X64 )&lt;BR /&gt;  extern __m128i &lt;STRONG&gt;_mm_insert_epi64&lt;/STRONG&gt;( __m128i dst, __int64 s, const int ndx );&lt;BR /&gt;  #endif&lt;/P&gt;&lt;P&gt;  // Extract integer from packed integer array element&lt;BR /&gt;  // selected by index&lt;BR /&gt;  ...&lt;BR /&gt;  #if defined( _M_X64 )&lt;BR /&gt;  extern __int64 &lt;STRONG&gt;_mm_extract_epi64&lt;/STRONG&gt;( __m128i src, const int ndx );&lt;BR /&gt;  #endif&lt;BR /&gt;  ...&lt;BR /&gt;&lt;BR /&gt;Even if &lt;STRONG&gt;__int64&lt;/STRONG&gt; and &lt;STRONG&gt;__m128i&lt;/STRONG&gt; data types could be used on a &lt;STRONG&gt;32-bit&lt;/STRONG&gt; platform these intrinsic functions are not available.&lt;/P&gt;</description>
      <pubDate>Tue, 19 Jun 2012 01:45:22 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803206#M732</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-06-19T01:45:22Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803207#M733</link>
      <description>&lt;P&gt;&lt;STRONG&gt;14&lt;/STRONG&gt;. Forced truncations of Single- or Double-precision values to integer type:&lt;BR /&gt;&lt;BR /&gt; In the following example:&lt;BR /&gt; ...&lt;BR /&gt; &lt;STRONG&gt;float&lt;/STRONG&gt; fPI = 3.141592653589793f;&lt;BR /&gt;&lt;BR /&gt; &lt;STRONG&gt;float&lt;/STRONG&gt; fPIint = ( &lt;STRONG&gt;int&lt;/STRONG&gt; )fPI;&lt;BR /&gt; ...&lt;BR /&gt;&lt;BR /&gt; there is nothing wrong, but ifMicrosoftor Intel C++ compilers are useda warning:&lt;BR /&gt;&lt;BR /&gt; &lt;STRONG&gt;C4244&lt;/STRONG&gt;: '=' : conversion from 'float' to 'int', possible loss of data&lt;BR /&gt;&lt;BR /&gt; will be displayed.&lt;/P&gt;</description>
      <pubDate>Tue, 19 Jun 2012 01:49:46 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803207#M733</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-06-19T01:49:46Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803208#M734</link>
      <description>&lt;DIV id="tiny_quote"&gt;&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1340473782937="58" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=353541" href="https://community.intel.com/en-us/profile/353541/" class="basic"&gt;Sergey Kostrov&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color: #e5e5e5; margin-left: 2px; margin-right: 2px; border: 1px inset; padding: 5px;"&gt;&lt;I&gt; &lt;STRONG&gt;9&lt;/STRONG&gt;. Default ( turn on ) the following warnigs for Microsoft compatible C++ compilers:&lt;P&gt; #pragma warning ( default : 4239 )// Nonstandard extension used : 'type cast' : conversion from 'type1' to 'type2'&lt;BR /&gt; #pragma warning ( default : 4242 )// Conversion from 'type1' to 'type2', possible loss of data&lt;BR /&gt; #pragma warning ( default : 4244 )// Conversion from 'type1' to 'type2', possible loss of data&lt;BR /&gt; #pragma warning ( default : 4305 )// 'Initializing' : truncation from 'type1' to 'type2'&lt;BR /&gt; #pragma warning ( default : 4309 )// 'Initializing' : truncation of constant value&lt;BR /&gt; #pragma warning ( default : 4311 )// 'Type cast' : pointer truncation from 'type1' to 'type2'&lt;/P&gt;&lt;/I&gt;&lt;/DIV&gt;&lt;BR /&gt;In case of Intel C++ compiler default ( turn on )a warning 2259:&lt;BR /&gt;&lt;BR /&gt; #pragma warning (default : 2259 ) // Non-pointer conversion from "type1" to "type2" may lose significant bits&lt;/DIV&gt;</description>
      <pubDate>Sat, 23 Jun 2012 17:48:58 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803208#M734</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-06-23T17:48:58Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803209#M735</link>
      <description>Thank you for the information! :-)</description>
      <pubDate>Sun, 24 Jun 2012 17:19:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803209#M735</guid>
      <dc:creator>Maycon_Oliveira</dc:creator>
      <dc:date>2012-06-24T17:19:26Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803210#M736</link>
      <description>&lt;STRONG&gt;15&lt;/STRONG&gt;. A version &lt;STRONG&gt;3&lt;/STRONG&gt; of the '&lt;STRONG&gt;MemTestApp&lt;/STRONG&gt;' that could be used to test allocation of large blocks of memory is attached.&lt;BR /&gt;&lt;BR /&gt;Please take a look at a post:&lt;BR /&gt;&lt;BR /&gt; &lt;A href="http://software.intel.com/en-us/forums/showpost.php?p=189214"&gt;http://software.intel.com/en-us/forums/showpost.php?p=189214&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;for more technical details.&lt;BR /&gt;</description>
      <pubDate>Fri, 06 Jul 2012 00:20:35 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803210#M736</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-07-06T00:20:35Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803211#M737</link>
      <description>&lt;B&gt;16. Integer literal constant:&lt;/B&gt;&lt;DIV&gt;&lt;B&gt;&lt;BR /&gt;&lt;/B&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;B&gt;&lt;BR /&gt;&lt;/B&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV style="padding-left: 20pt;" id="_mcePaste"&gt;	__int64 test = 1&amp;lt;&amp;lt;48;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;The result is 0! To have correct result it should look like following&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV style="padding-left: 20pt;"&gt;__int64 test = &lt;B&gt;1LL&lt;/B&gt;&amp;lt;&amp;lt;48;
&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 06 Jul 2012 09:49:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803211#M737</guid>
      <dc:creator>Arthur_Moroz</dc:creator>
      <dc:date>2012-07-06T09:49:10Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803212#M738</link>
      <description>&lt;DIV id="tiny_quote"&gt;&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1341577183468="60" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=425639" href="https://community.intel.com/en-us/profile/425639/" class="basic"&gt;Arthur Moroz&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color: #e5e5e5; margin-left: 2px; margin-right: 2px; border: 1px inset; padding: 5px;"&gt;&lt;I&gt;&lt;B&gt;16. Integer literal constant:&lt;/B&gt; &lt;DIV&gt;&lt;B&gt;&lt;BR /&gt;&lt;/B&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV id="_mcePaste" style="padding-left: 20pt;"&gt;__int64 test = 1&amp;lt;&amp;lt;48;&lt;BR /&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;The result is 0! To have correct result it should look like following&lt;BR /&gt;&lt;BR /&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV style="padding-left: 20pt;"&gt;__int64 test = &lt;B&gt;1LL&lt;/B&gt;&amp;lt;&amp;lt;48; &lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/I&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;Thank you and it is a really good note. I also had a similarissue and'&lt;STRONG&gt;LL&lt;/STRONG&gt;' or '&lt;STRONG&gt;ULL&lt;/STRONG&gt;' resolved it.&lt;/P&gt;</description>
      <pubDate>Fri, 06 Jul 2012 12:17:53 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803212#M738</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-07-06T12:17:53Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803213#M739</link>
      <description>&lt;DIV id="tiny_quote"&gt;&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1341616588000="61" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=353541" href="https://community.intel.com/en-us/profile/353541/" class="basic"&gt;Sergey Kostrov&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color: #e5e5e5; margin-left: 2px; margin-right: 2px; border: 1px inset; padding: 5px;"&gt;&lt;I&gt;&lt;DIV id="tiny_quote"&gt;&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1341616588000="62" jquery1340473782937="58" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=353541" href="https://community.intel.com/en-us/profile/353541/" class="basic"&gt;Sergey Kostrov&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color: #e5e5e5; margin-left: 2px; margin-right: 2px; border: 1px inset; padding: 5px;"&gt;&lt;I&gt; &lt;STRONG&gt;9&lt;/STRONG&gt;. Default ( turn on ) the following warnigs for Microsoft compatible C++ compilers: &lt;P&gt; #pragma warning ( default : 4239 )// Nonstandard extension used : 'type cast' : conversion from 'type1' to 'type2'&lt;BR /&gt; #pragma warning ( default : 4242 )// Conversion from 'type1' to 'type2', possible loss of data&lt;BR /&gt; #pragma warning ( default : 4244 )// Conversion from 'type1' to 'type2', possible loss of data&lt;BR /&gt; #pragma warning ( default : 4305 )// 'Initializing' : truncation from 'type1' to 'type2'&lt;BR /&gt; #pragma warning ( default : 4309 )// 'Initializing' : truncation of constant value&lt;BR /&gt; #pragma warning ( default : 4311 )// 'Type cast' : pointer truncation from 'type1' to 'type2'&lt;/P&gt;&lt;/I&gt;&lt;/DIV&gt;&lt;BR /&gt;In case of Intel C++ compiler default ( turn on )a warning 2259:&lt;BR /&gt;&lt;BR /&gt; #pragma warning (default : 2259 ) // Non-pointer conversion from "type1" to "type2" may lose significant bits&lt;/DIV&gt;&lt;/I&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;A couple of notes regarding warnings. Take into account that as soon as these warnings are 'default'ed&lt;BR /&gt;( turned on ) you could be overwhelmed by a number of warnings during compilation of source codes.&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;&lt;SPAN style="text-decoration: underline;"&gt;Here is example&lt;/SPAN&gt;&lt;/STRONG&gt;:&lt;BR /&gt;&lt;BR /&gt;- A software development environment has one Visual Studio solution and a number of different&lt;BR /&gt; C/C++ projects is &lt;STRONG&gt;36&lt;/STRONG&gt;. Since every project is configured for different platforms a total number of&lt;BR /&gt; projects to be compiled is &lt;STRONG&gt;130&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;- All warnings related to 64-bit conversions are 'default'ed&lt;BR /&gt;&lt;BR /&gt;- In case of rebuilding all projects &lt;STRONG&gt;a total number of warning messages is&lt;/STRONG&gt; &lt;STRONG&gt;1484&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;- A summary from a Visual Studio Output Window is as follows:&lt;/P&gt;[cpp]  ----- Build started: Project: &lt;SOMEPROJECT01&gt;, Configuration: Release &lt;SOMEPLATFORM&gt; ------
  ...
  &lt;SOMEPROJECT01&gt; - 0 error(s),   2 warning(s)
  &lt;SOMEPROJECT02&gt; - 0 error(s), 160 warning(s)
  &lt;SOMEPROJECT03&gt; - 0 error(s),   1 warning(s)
  &lt;SOMEPROJECT04&gt; - 0 error(s),   2 warning(s)
  &lt;SOMEPROJECT05&gt; - 0 error(s),   1 warning(s)
  &lt;SOMEPROJECT06&gt; - 0 error(s),   2 warning(s)
  &lt;SOMEPROJECT07&gt; - 0 error(s),  83 warning(s)
  &lt;SOMEPROJECT08&gt; - 0 error(s), 380 warning(s)
  &lt;SOMEPROJECT09&gt; - 0 error(s),  97 warning(s)
  &lt;SOMEPROJECT10&gt; - 0 error(s), 160 warning(s)
  &lt;SOMEPROJECT11&gt; - 0 error(s),  99 warning(s)
  &lt;SOMEPROJECT12&gt; - 0 error(s),  61 warning(s)
  &lt;SOMEPROJECT13&gt; - 0 error(s),   2 warning(s)
  &lt;SOMEPROJECT14&gt; - 0 error(s), 260 warning(s)
  &lt;SOMEPROJECT15&gt; - 0 error(s),   4 warning(s)
  &lt;SOMEPROJECT16&gt; - 0 error(s),   3 warning(s)
  &lt;SOMEPROJECT17&gt; - 0 error(s), 167 warning(s)
  ...
  ===== Build: 130 succeeded, 0 failed, 2 up-to-date, 0 skipped ==========
[/cpp]&lt;/SOMEPROJECT17&gt;&lt;/SOMEPROJECT16&gt;&lt;/SOMEPROJECT15&gt;&lt;/SOMEPROJECT14&gt;&lt;/SOMEPROJECT13&gt;&lt;/SOMEPROJECT12&gt;&lt;/SOMEPROJECT11&gt;&lt;/SOMEPROJECT10&gt;&lt;/SOMEPROJECT09&gt;&lt;/SOMEPROJECT08&gt;&lt;/SOMEPROJECT07&gt;&lt;/SOMEPROJECT06&gt;&lt;/SOMEPROJECT05&gt;&lt;/SOMEPROJECT04&gt;&lt;/SOMEPROJECT03&gt;&lt;/SOMEPROJECT02&gt;&lt;/SOMEPROJECT01&gt;&lt;/SOMEPLATFORM&gt;&lt;/SOMEPROJECT01&gt;</description>
      <pubDate>Fri, 06 Jul 2012 23:25:22 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803213#M739</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-07-06T23:25:22Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803214#M740</link>
      <description>&lt;DIV id="tiny_quote"&gt;&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1341698645765="60" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=353541" href="https://community.intel.com/en-us/profile/353541/" class="basic"&gt;Sergey Kostrov&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color: #e5e5e5; margin-left: 2px; margin-right: 2px; border: 1px inset; padding: 5px;"&gt;&lt;I&gt; &lt;STRONG&gt;7&lt;/STRONG&gt;. Problem - MinGW C++ compiler ( a test case ):&lt;BR /&gt; ...&lt;BR /&gt; int iInt32 = 0xffffeeeeddddcccc; // -&amp;gt; Error: integer constant is too large for "long" type&lt;BR /&gt; ...&lt;BR /&gt;&lt;/I&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;There isa workaround and avalue &lt;STRONG&gt;18446725308424768716&lt;/STRONG&gt;( with LL or ULL )has to be used instead of &lt;STRONG&gt;0xffffeeeeddddcccc&lt;/STRONG&gt;.&lt;/P&gt;</description>
      <pubDate>Sat, 07 Jul 2012 22:12:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803214#M740</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-07-07T22:12:33Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803215#M741</link>
      <description>&lt;DIV id="tiny_quote"&gt;&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1342983196609="60" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=353541" href="https://community.intel.com/en-us/profile/353541/" class="basic"&gt;Sergey Kostrov&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color: #e5e5e5; margin-left: 2px; margin-right: 2px; border: 1px inset; padding: 5px;"&gt;&lt;I&gt;&lt;STRONG&gt;15&lt;/STRONG&gt;. A version &lt;STRONG&gt;3&lt;/STRONG&gt; of the '&lt;STRONG&gt;MemTestApp&lt;/STRONG&gt;' that could be used to test allocation of large blocks of memory is attached.&lt;BR /&gt;&lt;BR /&gt;Please take a look at a post:&lt;BR /&gt;&lt;BR /&gt; &lt;A href="http://software.intel.com/en-us/forums/showpost.php?p=189214"&gt;http://software.intel.com/en-us/forums/showpost.php?p=189214&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;for more technical details.&lt;BR /&gt;&lt;/I&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;&lt;STRONG&gt;Test Results&lt;/STRONG&gt;:&lt;BR /&gt;&lt;BR /&gt; OS : Windows 7 64-bit Home Premium&lt;BR /&gt; CPU: AMD ( 4 cores )&lt;BR /&gt; RAM: 6GB&lt;BR /&gt; VM: 96GB initial size \ 128GB maximum size&lt;BR /&gt; APP: MemTestApp64.exe \ Release configuration&lt;/P&gt;&lt;P&gt; Attempts to allocate memory:&lt;/P&gt;&lt;P&gt; 0.25GB - Allocated&lt;BR /&gt; 0.50GB - Allocated&lt;BR /&gt; 1.GB - Allocated&lt;BR /&gt; 2.GB - Allocated&lt;BR /&gt; 4.GB - Allocated&lt;BR /&gt; 8.GB - Allocated&lt;BR /&gt; 14.GB - Allocated ( Target for a 61000x61000 Single-Precision matrix )&lt;BR /&gt; 16.GB - Allocated&lt;BR /&gt; 28.GB - Allocated ( Target for a 61000x61000 Double-Precision matrix )&lt;BR /&gt; 32.GB - Allocated&lt;BR /&gt; 64.GB - Allocated&lt;/P&gt;</description>
      <pubDate>Sun, 22 Jul 2012 19:26:02 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803215#M741</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-07-22T19:26:02Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803216#M742</link>
      <description>&lt;DIV id="tiny_quote"&gt;&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1343017122656="60" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=353541" href="https://community.intel.com/en-us/profile/353541/" class="basic"&gt;Sergey Kostrov&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color: #e5e5e5; margin-left: 2px; margin-right: 2px; border: 1px inset; padding: 5px;"&gt;&lt;I&gt; ...&lt;BR /&gt; &lt;STRONG&gt;2&lt;/STRONG&gt;. Turn on a /&lt;STRONG&gt;Wp64&lt;/STRONG&gt; compiler option for Microsoft compatible C++ compilers. It detects 64-bit&lt;BR /&gt; portability problems on types that are marked with the __w64 keyword;&lt;BR /&gt; ...&lt;/I&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;BR /&gt;This is simply to note that '&lt;STRONG&gt;Wp64&lt;/STRONG&gt;' compiler option is deprecatedand Visual Studio 2008 ( Professional &amp;amp; Express Editions)displays&lt;BR /&gt;awarning message:&lt;BR /&gt; ...&lt;BR /&gt; cl : Command line warning D9035 : option 'Wp64' &lt;SPAN style="text-decoration: underline;"&gt;has been deprecated&lt;/SPAN&gt; and &lt;SPAN style="text-decoration: underline;"&gt;will be removed&lt;/SPAN&gt; in a future release&lt;BR /&gt; ...&lt;/P&gt;</description>
      <pubDate>Mon, 23 Jul 2012 04:20:15 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803216#M742</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-07-23T04:20:15Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803217#M743</link>
      <description>&lt;P&gt;&lt;STRONG&gt;18&lt;/STRONG&gt;. Intel 64-bit Mode Coding Guidelines&lt;/P&gt;&lt;P&gt;  &lt;STRONG&gt;Intel 64 and IA-32 Architectures Optimization Reference Manual&lt;/STRONG&gt;&lt;BR /&gt;  November 2007&lt;/P&gt;&lt;P&gt;  &lt;STRONG&gt;Chapter 9. 64-bit Mode Coding Guidelines&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;  &lt;SPAN style="text-decoration: underline;"&gt;Note&lt;/SPAN&gt;: 5 pages only&lt;/P&gt;</description>
      <pubDate>Wed, 22 Aug 2012 01:13:35 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803217#M743</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-08-22T01:13:35Z</dc:date>
    </item>
    <item>
      <title>Tips for Porting software to a 64-bit platform</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803218#M744</link>
      <description>&lt;STRONG&gt;17&lt;/STRONG&gt;. Issues - When porting a 32-bit project with IDL ( Interface Definition Language ) files for MIDL compiler.&lt;BR /&gt;&lt;BR /&gt; MIDL - Microsoft Interface Definition Language&lt;BR /&gt;</description>
      <pubDate>Thu, 04 Oct 2012 15:04:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803218#M744</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-10-04T15:04:08Z</dc:date>
    </item>
    <item>
      <title>19. Regarding</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803219#M745</link>
      <description>&lt;STRONG&gt;19.&lt;/STRONG&gt; Regarding /LARGEADDRESSAWARE linker option:
.
This is what MSDN says:
...
The /LARGEADDRESSAWARE option tells the linker that an application supports addresses larger than 2 gigabytes.
...
However, it doesn't mean that a 32-bit application that was built with enabled /LARGEADDRESSAWARE linker option could allocate greater than 2GB of memory. It is simply not possible on a 32-bit Windows platform without AWE and on 64-bit Windows platforms.
.
AWE - Address Windowing Extensions</description>
      <pubDate>Thu, 04 Oct 2012 15:10:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803219#M745</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-10-04T15:10:00Z</dc:date>
    </item>
    <item>
      <title>Ability to allocate beyond</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803220#M746</link>
      <description>Ability to allocate beyond the 2GB barrier in 32-bit Windows was introduced with the XP /3GB boot switch.  The space is fragmented.  After the 2GB is used up, additional non-contiguous allocations within the additional 1GB space are supported, with the additional linker switch.  
If it were not for mobile devices, one would think 32-bit Windows obsolete.</description>
      <pubDate>Thu, 04 Oct 2012 16:20:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Tips-for-Porting-software-to-a-64-bit-platform/m-p/803220#M746</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2012-10-04T16:20:00Z</dc:date>
    </item>
  </channel>
</rss>

