Why does gcc push %rbx at the beginning of main?

前端 未结 2 410
萌比男神i
萌比男神i 2021-02-03 14:20

The latest version of gcc is producing assembly that doesn\'t make sense to me. I compiled the code using no optimization; but, some parts of this code don\'t make sense, even

2条回答
  •  伪装坚强ぢ
    2021-02-03 14:54

    By default gcc compiles with optimization disabled, which is the case here, apparently.

    You need to enable it with one of the optimization switches (e.g. -O2 or -O3).

    Then you will not see redundant and seemingly meaningless things.

    As for rbx, it has to be preserved because that's what the calling conventions require. Your function modifies it (movl -32(%rbp), %ebx), so it has to be saved and restored explicitly.

提交回复
热议问题