在C++中調用函數時,推送rdi和pop rdi的目的是什麼? VS2010,64位,調試,沒有優化彙編程序在函數調用時推送rdi,pop rdi
C++
int calc()
{
return 8 + 7;
}
拆卸:
int calc()
{
000000013F0B1020 push rdi
return 8 + 7;
000000013F0B1022 mov eax,0Fh
}
000000013F0B1027 pop rdi
000000013F0B1028 ret
難道是某種形式的「後衛」的事?我認爲我讀過的地方是MSVC *總是在每個函數的頂部留下一些空間...... –
@KerrekSB,如果它是在函數代碼的開始處留下一些「空間」的問題,那麼NOOPs會是一個很大的比無用的推動和彈出更明智的選擇。 –