bit kaydırma

Başlatan volkii, 30 Mayıs 2011, 21:27:17

volkii

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.

Klein

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.

volkii

evet onu bende gördüm ama biraz yabancı geldi bunun assemblerı, nasıl eklicem nasıl yazıcam bilmiyorum :)

volkii

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.

volkii

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.