herkese merhaba,
stm32f103 işlemcisi ile bir uygulama yapmaya çalışıyorum. derleyicim keil. bit kaydırmak istiyorum ama kaydırdığım en son bit kaydırma yönüne göre değişkenin ya en sonuna yada en başına gelsin istiyorum.
örnek olarak:
a = 0xc0; // a = 1100 0000
a = a<<1; // a = 1000 0000
ancak ben a değişkeninin içeriği 1000 0001 olmasını istiyorum.
bazı aritmetik işlmelerle yapabilirim ancak performans açısından en hızlı şekilde bunu işlemciye nasıl yaptırabilirim. bir ihtimal işlemcide bunu sağlayan bir register olabilir mi?
saygılarımla.
STM nin komut setini bilmiyorum. ASM kullanıyorsanız veya c kodlarının arasına ASM girebiliyorsanız , bazı işlemcilerin rotate komutları var. Bazılarının ise sadece shift komutu. Ama C de bildiğim kadarıyla doğrudan rotate yapan bir operand yok. Ancak fonksiyon veya makrolala yapılıyor. Eğer işlemci shift ederken carry kaydedicisine taşma bilgisi atıyorsa ki büyük ihtimalle atıyordur. carry bitini kontrol ederek yapabilirsiniz. Renesas ta carry'li shift ve carry'siz shift şeklinde iki ayrı komut var. Eğer shift komutları bu şekilde ayrılmamışsa muhtemelen carry'li shift yapıyordur.
evet onu bende gördüm ama biraz yabancı geldi bunun assemblerı, nasıl eklicem nasıl yazıcam bilmiyorum :)
hocam kodu biraz açarmısınız rica etsem? orda tanımlanan pointer parametresinde asm kodunda neye karşılık geliyor r0'a mı? mesela kaydırma sayısınıda parametre olarak asm kod parçasına nasıl göndermeliyim? sizden ricam kod satırını kısaca anlatır mısınız?. çok teşekkür ederim yardımcı olan herkese.
teşekkür ederim gerbay hocam zahmet verdim size gece gece ama benim için çok faydalı oldu. bu kod parçasıyla ufaktan asm'ye giriş yapmaya başlayabilirim. tekrar teşekkürler.