256 bayt sınırını geçmeyen bir dizi oluşturmak mümkün mü? Tek tek dizi öğelerinin adresleri yalnızca alt baytta farklıdır. Bu, diziyi 256 bayta hizalamaktan daha zayıf bir gereksinimdir. Düşünebildiğim tek çözüm, next_power_of_two(sizeof(array))
ile hizalandı, ancak bu şekilde görünecek boşluklardan emin değilim.Dizin 256 bayt sınırını geçmiyor
AVR mikrodenetleyicileri için bir kitaplıktır ve bu bana bir kesme işleyicisinde birkaç değerli yönerge kaydeder. Bu özelliğe sahip olması gereken dizi, kullanılan toplam statik bellek tarafından kullanılan yaklaşık 80 baytlık toplam statik bellekten 54 bayttır. kütüphane. Bellek gereksinimlerini arttırmayan bir yol arıyorum.
Avr-as gnu assembler ve avr-ld linker kullanıyorum.
Örnek: Dizi 0x00f0 adresinde başlarsa, diziyi çaprazlarken üst sözcük 0x00'den 0x01'e değişir.
Sınırı geçmediği sürece 0x0100 veya 0x0101 adresinde başlatılmasının gerçekten umrumda değil.
Dizinin adresini hizalı tutmanız mı gerekiyor? Bu, dizinin zaten <= 256 elementi olduğunu bildiğiniz için talimat sayınızı nasıl azaltır? – MSN
Onu hizalamam gerekmez. Eklediğim örneğe bakın. – cube
Ancak, diziyi bir ** 64 ** bayt sınırıyla aynı hizaya getirmeniz, gereksinimlerinizi karşılayacaktır. Bağlayıcınız * bu ayırmaları sıralayabilmek için bu belleği ayırmalıdır. –