gaz: çok fazla hafıza referansı
movl 4(%ebp), 8(%ebp)
komutunu derlerken
'çok fazla bellek referansı' aldım, bunun nesi var?
gaz: çok fazla hafıza referansı
movl 4(%ebp), 8(%ebp)
komutunu derlerken
'çok fazla bellek referansı' aldım, bunun nesi var?
Parantezin önündeki sayı bir bayt ofseti (bu, bir bellek başvurusunun oluşmasına neden olur) ve bunlardan iki tanesine sahip olamazsınız movl
. Önce değeri geçici olarak bir sicile taşımanız gerekir.
movl 4(%ebp), %ecx
movl %ecx, 8(%ebp)
Bu bir yasal yönerge değildir. Belleğe referans veren çoğu talimat için, onu bir kayıttan/kayıttan geçirmelisiniz.
movl
bellek hafızasına geçmez, bir kayıt yoluyla gitmeniz gerekir (böylece iki movl
talimatları ile).
Teşekkürler, ama neden bu? Bu ya da başka bir şeyi sınırlayan cpu archtecture nedir? – freenight
Evet, CPU'da bir sınırlama var. MOVS hafızadan belleğe tek komutla ilgilidir. –
Evet, bellekten belleğe sadece etkin bir şekilde uygulanamaz (x86 dışı CPU'ların tüm kayıtlar sadece kayıt olmak için kayıt olmalarını sağlar; –