Condividi tramite


Funzioni intrinseche del compilatore

La maggior parte delle funzioni sono contenute nelle librerie, ma alcune funzioni incorporate nei (vale a dire intrinseco) al compilatore.Questi vengono definiti come funzioni intrinseche o funzioni intrinseche.

Note

Se una funzione intrinseca, il codice per tale funzione è in genere inseriti inline, evitando il sovraccarico di una chiamata di funzione e consentendo di istruzioni macchina molto efficiente essere emessi per tale funzione.Un intrinseco è spesso più rapido rispetto all'assembly inline equivalenti perché query optimizer ha una conoscenza incorporata di un comportamento quanti oggetti intrinseci, in modo che alcune ottimizzazioni possono essere disponibili che non sono disponibili quando viene utilizzato il codice assembly inline.Inoltre, l'utilità di ottimizzazione può espandere in modo diverso l'intrinseca, allineare in modo diverso i buffer o apportare altre modifiche in base al contesto e gli argomenti della chiamata.

L'utilizzo di funzioni intrinseche riguarda la portabilità del codice, poiché gli oggetti intrinseci sono disponibili in Visual C++ potrebbero non essere disponibili se il codice viene compilato con altri compilatori e alcune funzioni intrinseche che potrebbero essere disponibili per alcune architetture di destinazione non sono disponibili per tutte le architetture.Tuttavia, gli oggetti intrinseci sono in genere più portabili di assembly inline.Le funzioni intrinseche sono necessari su architetture a 64 bit in cui il codice assembly inline non è supportata.

Alcune funzioni intrinseche, quali __assume e __ReadWriteBarrier, forniscono informazioni per il compilatore, che influisce sul comportamento di query optimizer.

Alcune funzioni intrinseche sono disponibili solo come funzioni intrinseche e alcuni sono disponibili sia in funzione e implementazioni intrinseche.È possibile indicare al compilatore di utilizzare l'implementazione intrinseco in uno dei due modi, a seconda se si desidera attivare solo le funzioni specifiche o si desidera attivare tutti gli oggetti intrinseci.The first way is to use #pragma intrinsic(intrinsic-function-name-list).Il pragma consente di specificare un unico intrinseco o più intrinseci separati da virgole.Il secondo consiste nell'utilizzare il /Oi (Genera funzioni intrinseche) opzione del compilatore, che rende disponibili tutti gli oggetti intrinseci di una determinata piattaforma.In /Oi, utilizzare #pragma function(intrinsic-function-name-list) per imporre una chiamata di funzione per essere utilizzato invece di un intrinseco.Se la documentazione relativa a uno specifico intrinseca notes che la routine è disponibile solo come un intrinseco, quindi viene utilizzata l'implementazione intrinseca indipendentemente dal fatto che /Oi o #pragma intrinsic è stato specificato.In tutti i casi, /Oi o #pragma intrinsic consente, ma non impone, query optimizer per utilizzare l'intrinseco.Query optimizer ancora possibile chiamare la funzione.

Alcune funzioni della libreria standard C/C++ sono disponibili nelle implementazioni intrinseche in alcune architetture.Quando si chiama una funzione CRT, l'implementazione intrinseco viene utilizzato se /Oi specificato sulla riga di comando.

È disponibile un file di intestazione, INTRIN. h, che consente di dichiarare i prototipi per le funzioni intrinseche.Inoltre, alcune intestazioni Windows dichiarare le funzioni che eseguono il mapping su un'intrinseca del compilatore.

Nelle sezioni seguenti vengono elencate tutte le funzioni intrinseche disponibili su architetture diverse.Per ulteriori informazioni sul funzionano gli oggetti intrinseci del processore di destinazione particolare, fare riferimento alla documentazione di riferimento del produttore.

Vedere anche

Riferimenti

Parole chiave C++

Altre risorse

Riferimento dell'assembly del monitoraggio ARM

Riferimento a Microsoft Macro Assembler

Riferimento della libreria di runtime C