Argumento passando e convenções de nomenclatura
Específicos do Microsoft
Todos os argumentos são ampliados para 32 bits quando eles são passados.Valores de retorno também são ampliados para 32 bits e retornados no registrador EAX, exceto para estruturas de 8 bytes, que são retornados no par de registro de EDX:EAX.Estruturas maiores são retornadas no registrador EAX como ponteiros para ocultas retornar estruturas.Parâmetros são colocados na pilha da direita para esquerda.Estruturas que não são os PODs não serão retornadas em registros.
O compilador gera prólogo e código de epilog para salvar e restaurar o ESI, EDI, EBX e EBP registra, se forem usados na função.
Observação |
---|
Quando uma struct, união ou classe é retornado de uma função por valor, todas as definições do tipo precisam ser o mesmo, caso contrário o programa pode falhar em tempo de execução. |
Para obter informações sobre como definir seu próprio código de prólogo e epilog de função, consulte Nua chamadas de função.
As seguintes convenções de chamada são suportadas pelo compilador Visual C/C++.
Keyword |
Limpeza de pilha |
Passagem por parâmetro |
---|---|---|
Chamador |
Empurra parâmetros na pilha, na ordem inversa (direita para esquerda) |
|
n/d |
Carregar parâmetros na pilha de expressão do CLR em ordem (da esquerda para a direita). |
|
Receptor |
Empurra parâmetros na pilha, na ordem inversa (direita para esquerda) |
|
Receptor |
Armazenados em registros, então enviados na pilha |
|
Receptor |
Empurrada na pilha; Isso ponteiro armazenado em ECX |
Para obter informações relacionadas, consulte Obsoletos convenções de chamada.
Finalizar específico