Intel Compiler Patcher

!         .   
     ,   
  .    LICENSE.TXT 
 .


!         
,   .       
    "     
 ". ,  ,      
    ,    
  .


1. 
2.  
3.  
4.   ICP
5.   
5.1    - 
5.2    -  ()
5.3    - 
6. 
7. 

1. 
   Intel Compiler Patcher ( ICP)   
 ,    Intel C++ Compiler, 
   " "  
. ICP       ,
  Intel.

2.  
          
,          
, , SSE2, SSE3,  ..     , 
 ,          
 .     .  
 Intel     ,  
,     . 
    GenuineIntel,    
  .      Intel,    
       ,   
     .

3.  
        Intel    
 :

       [..skip..]
       mov eax,   [ebp][-0008]
       cmp eax,   0756E6547     ;"uneG" ;   "Genu"
       jne not_intel            ;   ,   not_intel
       mov eax,   [ebp][-0010]
       cmp eax,   049656E69     ;"Ieni" ;   "ineI"
       jne not_intel            ;   - not_intel
       mov eax,   [ebp][-0014]
       cmp eax,   06C65746E     ;"letn" ;   "ntel"
       jne not_intel            ;   - not_intel
       mov edx,   000000001     ;    
       jmps next
not_intel: 
       xor edx,   edx           ;   0,   - 
next:
       [..skip..]

 ,       "Genu", "ineI",
"ntel"       ,  EDX 
 "1" () -    Intel.    - "0" 
() -     .   , 
   ,     ,  
 ,     EDX   "1" ()  
  .

4.   ICP
  ICP       M. D Mackey (C) 2004 
 Perl:         
,  81 fa 47 65 6e 75  (cmp edx, 0756E6547),   
    testl edx, 000000000 (f7 c2 00 00 00 00). 
testl edx, 00000000   ,    EDX   
"1" (),       CPUID .  
    ,      
 Intel.
         ,     
. ICP      : EAX, EBX,
ECX, EDX, EBP, ESI, EDI  [EBP][offset].

5.   
       ,    
 ,      -   
 .        : 1)
  ()   2)   
    ().

5.1    - 
   ""      
  :

" " -    .  
 500 .      , 
       Windows   .

" " -    .  
 100 Mb.        
,   ICP       .

"     " -    
. ,       Intel
      "Genu","ineI","ntel"  
,      EAX    EDX  . , 
        
 , : 
cmp eax, "Genu"; cmp ebx, "ineI"; cmp edx, "ntel".   
         
   Intel Compiler'.   ,  
       Intel
(    - ),  -    
    ,  . 
   .    ,  
 ,   .

"     " -   
  Intel     .  , 
       cmp eax,"Genu" 
      Intel Compiler',   
     . ,  
  ,  ,     
    Intel (cmp eax, "Genu"; cmp eax, "ineI";
cmp eax, "ntel"),  -    -   cmp ebx,"Genu".
    .    ,  
 ,   .

" " -       
().      ,    ,
  .orig     .

" " - ,      . 
  ICP        ".EXE", ".DLL",
".ACM", ".AX", ".CPL", ".OCX".      ,
   ";" (  ).

"" -   .

"  -" -   
     .   .

" -" -     .
    "icc_patch.log"    ,   
 ICP.

5.2    -  ()
   !      
-  .   ICP    
(       ),   ,
-        
    ,      
. ICP       ,   
    ,    .

  ,  Intel Compiler'   "".
    ,   .
      .  
    .      
           .
     "".

5.3    - 
          
  "".

6. 
       "Will Intel be 
forced to remove the "cripple AMD" function from their compiler?"  
.
Based on Perl version (C) Copyright M. D Mackey 2004. e-mail: mark@swallowtail.org
Third party library:
TaskEx v1.4 (C) Alexander Alexeev
AsyncCalls (C) 2006-2009 Andreas Hausladen
RXLib port (C) Oleg Fedorov

7. 
Written by Tronix (C) 2010. e-mail: tronix286@rambler.ru
