Je suis novice en matière d'assembleur. Je regarde diff de code compilé avec -g et avec -O3 fiag (optimisationcode désassemblé avec optimisation où les variables locales sont-elles conservées
En cas de code optimisé, le code désassemblé ne montre pas que les variables locales sont stockées sur la pile? appeler une fonction, il garde la trace des variables locales sur la pile et passer à suivante de la pile lors de l'exécution fonction suivante
code est désassemblé ici pour la version optimisée
(gdb) disassemble main
Dump of assembler code for function main:
0x00000000004004d0 <+0>: mov $0x1e,%eax
0x00000000004004d5 <+5>: retq
End of assembler dump.
(gdb) disassemble foo
Dump of assembler code for function foo:
0x00000000004004c0 <+0>: lea (%rsi,%rdi,1),%eax
0x00000000004004c3 <+3>: retq
End of assembler dump.
code Source:..
int
foo(int a, int b) {
int c = 0;
c = a + b;
return (c);
}
int
main()
{
int z = 10;
int y = 20;
int ret = 0;
ret = foo(z, y);
return (ret);
}
Les variables locales peuvent être conservées dans des registres. – Barmar
Si vous voulez une explication utile, vous devez montrer le code source des fonctions, alors quelqu'un peut expliquer comment les variables locales sont stockées. – Barmar
Voici le code source. – bhavin