Rumah >pembangunan bahagian belakang >C++ >Mengapa Penyusun Moden Tidak Menggunakan Tekan/Pop untuk Bangunan Rangka Tindanan Berperingkat?
Penyusun C/C moden seperti clang, ICC, MSVC dan gcc mengelak daripada menggunakan arahan tekan/pop secara langsung. Sebaliknya, mereka mengoptimumkan kod dengan menggunakan arahan sub/mov atau lea yang lebih cekap. Tekan/pop masih digunakan untuk senario tertentu seperti menyimpan/memulihkan daftar yang disimpan pemanggil dan menghantar hujah tindanan.
Penyusun biasanya tidak menyokong bingkai tindanan bangunan secara beransur-ansur menggunakan arahan tolak/pop. Ini kerana ia bercanggah dengan mekanisme pelepasan untuk pengendalian ralat dan penyahpepijatan, dan boleh mengakibatkan bahagian maklumat santai yang lebih besar. Selain itu, mencampurkan mod pengalamatan tekan dan [rsp] boleh memperkenalkan ketidakcekapan pada CPU Intel disebabkan oleh penyegerakan tindanan.
Walaupun arahan push/pop mungkin kelihatan bermanfaat untuk mencipta pembolehubah tempatan, pengkompil pada masa ini mengutamakan teknik yang lebih cekap dan boleh dipercayai seperti sub/mov atau lea. Terdapat senario tertentu di mana tolak/pop masih digunakan, tetapi ia biasanya tidak digunakan untuk pembinaan bingkai tindanan secara beransur-ansur.
Atas ialah kandungan terperinci Mengapa Penyusun Moden Tidak Menggunakan Tekan/Pop untuk Bangunan Rangka Tindanan Berperingkat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!