'da tailcall optimizasyonlarını nasıl devre dışı bırakırım? Kimsenin tailcall optimizasyonlarını devre dışı bırakmak için gcc için bayrağı bilmesi durumunda merak ediyorum. Temel olarak, bir tailcall optimizasyonunda, gcc çağrılan bir fonksiyondan dönüş değeri (dönüş yoluyla) geçtiğinde veya fonksiyonda başka bir şey gerçekleşmediğinde bir yığın çerçeveyi değiştirecektir. gcc
void main() {
foo();
}
void foo() {
bar();
}
void bar() {
/* at this point in code, the foo() stack frame no longer exists! */
}
foo bar çağırır
olan, gcc yerine yeni bir yığın çerçeve eklemekten daha, Besin yığın çerçevesi yerine kod yayar.
Şirketimde, koddaki herhangi bir noktadan yığın izini yazdırabilen bir yığın engelleyici yok. tailcall optimizasyonu, yığın izlerini biraz karıştırabilen yığın çerçevelerinin kaybolmasını sağlar.
gcc4.3 kullanarak x86-64 için derliyorum.
Şimdiden teşekkürler! P
salih. Teşekkürler! – pgod