最近我重新編寫了一些libc函數在彙編中,並且對於其中一些(不需要任何調用或系統調用指令,如strlen),我放棄了序言和後記,因爲我的測試沒有沒有它就失敗了(也許我沒有足夠複雜的測試)。 在同行評審期間,有人告訴我放棄它是一種不好的做法,但無法解釋爲什麼。編寫彙編函數時,序言和結語是強制性的嗎?
那麼,當我調用沒有序言/尾聲組合的asm函數時,是否會遇到問題?
即使在堆棧上不需要額外的空間時添加它也是一種很好的做法嗎?
如果由於某些原因是強制性的,爲什麼編譯器(我使用nasm)不關心它?
感謝您閱讀
在優化的生產代碼中,如果不需要,跳過序言/尾聲。然而,對於調試或分析,有一個乾淨的棧幀可能是有用的,許多調試器依賴於此。 – Ctx