ordre de poussé sur la pile est déterminé au moment de la compilation.
La principale chose qui doit être placée sur la pile avant un appel de fonction, ce sont les paramètres de la fonction, et les paramètres sont tous fixes (les paramètres variables ne sont que des décalages déterminés par les macros). Le code pour appeler les fonctions est placé dans le segment de code, et le transfert sur la pile se fait sous forme d'instructions, donc l'ordre est déterminé au moment de la compilation.
@lianera l'a bien dit, l'ordre de poussée sur la pile est déterminé au moment de la compilation.
Laissez-moi vous montrer un exemple : J'ai un morceau de code comme celui-ci
#include <stdio.h>
int test_fun(int a, int b)
{
return a + b;
}
int main(int argc, char *argv[])
{
int A, B, ret;
A = 3;
B = 4;
ret = test_fun(A, B);
return 1;
}
Après compilation, son code assembleur ressemble à ceci
Peu importe si vous ne comprenez pas l'assemblage. Pendant le processus de compilation, l'ordre dans lequel les paramètres sont passés et l'endroit où sur la pile (position relative) les paramètres, les variables locales, etc. doivent être placés sont. tous déterminés. Lorsque le programme s'exécute sur le programme correspondant, la pile sera exploitée dans l'ordre compilé.
Le transfert sur la pile n'est-il pas un processus qui ne se produit que pendant l'exécution ? La compilation n'est qu'un processus de traduction en bytecode. Pourquoi y a-t-il une poussée sur la pile ?
L'
ordre de poussé sur la pile est déterminé au moment de la compilation.
La principale chose qui doit être placée sur la pile avant un appel de fonction, ce sont les paramètres de la fonction, et les paramètres sont tous fixes (les paramètres variables ne sont que des décalages déterminés par les macros).
Le code pour appeler les fonctions est placé dans le segment de code, et le transfert sur la pile se fait sous forme d'instructions, donc l'ordre est déterminé au moment de la compilation.
@lianera l'a bien dit, l'ordre de poussée sur la pile est déterminé au moment de la compilation.
Laissez-moi vous montrer un exemple :
J'ai un morceau de code comme celui-ci
Après compilation, son code assembleur ressemble à ceci
Peu importe si vous ne comprenez pas l'assemblage. Pendant le processus de compilation, l'ordre dans lequel les paramètres sont passés et l'endroit où sur la pile (position relative) les paramètres, les variables locales, etc. doivent être placés sont. tous déterminés. Lorsque le programme s'exécute sur le programme correspondant, la pile sera exploitée dans l'ordre compilé.
Le transfert sur la pile n'est-il pas un processus qui ne se produit que pendant l'exécution ? La compilation n'est qu'un processus de traduction en bytecode. Pourquoi y a-t-il une poussée sur la pile ?