2016-03-22 14 views
-2

Basit bir kol örneğinin sökülmesini beklediğimi hatırlıyorum ve yerliler'dan ziyade registers'da depolanmış gibi görünüyor. Bu kol için her zaman doğru mu?Arm Cortex mimarisinde yerel değişkenler kayıtlarda veya yığında depolanıyor mu?

+2

Yüzlerce yerliye ne dersin? Muhtemelen görünüyor .... –

+1

Bir aklı derleyici ve ABI göz önüne alındığında, genel amaçlı sicilleri olan hemen hemen her şey için geçerlidir. Bu onların bir önemi var ... – Notlikethat

+1

Değişkenin bir adresini almanız gerekiyorsa? –

cevap

4

Biri veya diğeri veya ikisi birden. Tür, değer, sayı, boyut, mimari, kayıt sayısı, kayıt ücreti, ayın fazı, Jon Skeet'in bu sabah yataktan kaçta kaldığına bağlı.

+0

Sorumlu olduğumdan emin değilim (doğru olmamak) veya downvote (yardımcı olmamak için). – Olaf

+0

'Calling convention' :( –

+1

Bir çok şeyi unutmuşsunuzdur, örneğin OP Jüpiter altında doğmuşsa, Gallifrey'de bir kez yaşarsa (umarım hayır - suç olmasın), vb. – Olaf

3

Yerel değişkenlerin depolanması, özellikle işlemci mimarisi yerine derleyici için bir sorundur. Ayrıca, derleyici optimizasyonu etkinleştirildiğinde kayıt deposunu kullanma olasılığı daha yüksektir.

Herhangi bir derleyicinin bunu herhangi bir mimaride yapması olasıdır, ancak x86 ile karşılaştırıldığında, ARM daha büyük ve daha ortogonal bir yazmaç kümesine sahiptir, bu nedenle ARM kodunda kayıt deposunu gözlemleme olasılığınız yüksektir.

Elbette, yığın çok sayıda değişken olduğunda ve daha büyük birleştirme türleri için kullanılmaya devam edecektir. İyileştirici, kod akışını analiz edecek ve optimum performans için hangi değişkenlerin yazmaçlarda en iyi şekilde saklanacağını seçecektir.

İlgili konular