Ho scritto questo programma giocatolo, per approfondire il passaggio di parametri a una subroutine, tramite lo stack nel mio calcolatore.
codice:void function(int a, int b){} void main() { function(1,2); }I parametri della funzione, vengono semplicemente caricati in dei registri (esi,edi). Qualcuno sa spiegarmi quale subdolo meccanismo, fa si che i dati siano effettivamente messi nello stack senza il push???codice:(gdb) disassemble main Dump of assembler code for function main: 0x00000000004004c0 <+0>: push %rbp 0x00000000004004c1 <+1>: mov %rsp,%rbp 0x00000000004004c4 <+4>: mov $0x2,%esi 0x00000000004004c9 <+9>: mov $0x1,%edi 0x00000000004004ce <+14>: callq 0x4004b4 <function> 0x00000000004004d3 <+19>: pop %rbp 0x00000000004004d4 <+20>: retq End of assembler dump.

Rispondi quotando