Partilhar via


Pilha de alocação

Prólogo da função é responsável por alocação de espaço de pilha por variáveis locais, salvo registradores, parâmetros de pilha e registrar parâmetros.

A área de parâmetro é sempre na parte inferior da pilha (mesmo se alloca é usada), de modo que ele sempre estará adjacente ao endereço de retorno durante qualquer telefonar de função.Ele contém pelo menos quatro entradas, mas sempre tenha espaço suficiente para conter todos os parâmetros necessário qualquer função que pode ser chamada.Observe que o espaço é alocado sempre para os parâmetros de registro, mesmo se os parâmetros propriamente ditas são nunca adaptadores de rede para a pilha; um computador chamado é garantido que tenha sido alocado espaço para todos os seus parâmetros.residência endereços são necessários para os argumentos de registro para que uma área contígua disponível caso a função chamada precise obter o endereço da lista de argumentos (va_list) ou argumento individual.Essa área também fornece um local conveniente para salvar o registro argumentos durante a execução de conversão e sistema autônomo uma opção de depuração (por exemplo, ele facilita sistema autônomo argumentos encontrar durante a depuração se eles estiverem armazenados em seus residência endereços no código de prólogo).Mesmo que a função chamada tiver menos de quatro parâmetros, esses locais de 4 pilha efetivamente pertencem a função chamada e podem ser usados pela função chamada para outros fins além de salvar valores de registro de parâmetro.Assim, o chamador talvez não salvar informações nesta região da pilha através de uma telefonar de função.

Se espaço é alocado dinamicamente (alloca) em uma função, um registro não-volátil deve ser usado sistema autônomo um ponteiro de quadro para marcar a base da parte de pilha fixa e deve ser salvo e inicializado no prólogo registrador.Observe que quando alloca é usado, chamadas para o computador chamado mesmo do mesmo chamador podem ter diferentes residência endereços para os parâmetros de registro.

A pilha será sempre mantida 16 byte alinhado, exceto no prólogo (por exemplo, após o endereço do remetente está empurrado) e exceto onde indicado no Tipos de função para uma determinada classe das funções do quadro.

A seguir é um exemplo de layout pilha onde chamadas de função A uma não-folha funcionam B.Função do prólogo já alocou espaço para todos os parâmetros de registro e pilha exigidos pelo B na parte inferior da pilha.A telefonar envia o endereço do remetente e prólogo do B aloca espaço para suas variáveis locais, não-volátil registradores e o espaço necessário para que ele chamar funções.Se B usa alloca, o espaço é alocado entre o registro de variável/não-volátil local área de salvar e a área de pilha de parâmetro.

Quando a função B chama outra função, o endereço do remetente é enviado logo abaixo do endereço residencial para RCX.

Consulte também

Referência

Uso de pilha