Я изучаю сборку x86 и у меня возникли проблемы с пониманием некоторых инструкций.Что означает sub $0x10,%rsp
, и почему GCC скопировал эту строку mov $0x0,%eax
два раза?
0x0000000000001135 <+0>: push %rbp
0x0000000000001136 <+1>: mov %rsp,%rbp
0x0000000000001139 <+4>: sub $0x10,%rsp
0x000000000000113d <+8>: movl $0xa,-0x4(%rbp)
0x0000000000001144 <+15>: mov -0x4(%rbp),%eax
0x0000000000001147 <+18>: mov %eax,%esi
0x0000000000001149 <+20>: lea 0xeb4(%rip),%rdi # 0x2004
0x0000000000001150 <+27>: mov $0x0,%eax
0x0000000000001155 <+32>: callq 0x1030 <printf@plt>
0x000000000000115a <+37>: mov $0x0,%eax
0x000000000000115f <+42>: leaveq
0x0000000000001160 <+43>: retq