Condividi tramite


Valori restituiti (C++)

Viene restituito un valore scalare adattabile in 64 bit con RAX, che include i tipi __m64.I tipi non scalari, inclusi i tipi float, double e vector come __m128, __m128i e __m128d, vengono restituiti in XMM0.Lo stato dei bit non usati nel valore restituito in RAX o XMM0 non è definito.

I tipi definiti dall'utente possono essere restituiti per valore dalle funzioni globali e dalle funzioni membro statiche.Per essere restituiti per valore in RAX, i tipi definiti dall'utente devono essere lunghi 1, 2, 4, 8, 16, 32 o 64 bit. Non sono consentiti: costruttori, distruttori o operatori di assegnazione di copia definiti dall'utente, membri di dati non statici privati o protetti, membri di dati non statici di tipo riferimento, classi base, funzioni virtuali e membri di dati che non soddisfano questi requisiti.(Si tratta in sostanza della definizione di un tipo POD C++03.La definizione è stata modificata nello standard C++11, pertanto non si consiglia di usare std::is_pod per questo test). In caso contrario, il chiamante si assume la responsabilità di allocare la memoria e di passare un puntatore per il valore restituito come primo argomento.Gli argomenti successivi vengono quindi spostati verso destra di un argomento.È necessario che lo stesso puntatore sia restituito dal computer chiamato in RAX.

Questi esempi mostrano in che modo vengono passati i parametri e i valori restituiti per le funzioni con le dichiarazioni specificate:

Esempio di valore restituito 1 – risultato a 64 bit

  

Esempio di valore restituito 2 – risultato a 128 bit

  

Esempio di valore restituito 3 – risultato del tipo di utente per puntatore

     

Esempio di valore restituito 4 – risultato del tipo di utente per valore

     

Vedere anche

Riferimenti

Convenzione di chiamata