gcc ' de bug mı var ?

Başlatan magnetron, 25 Eylül 2023, 13:14:43

magnetron

merhaba forum,

CubeIDE ' de aşağıdaki kodu çalıştırıyorum
işlemci F4

ACCU1 = ACCU1 >> 1;

ACCU1 de satıra girerken 0x8000 var
çıkarken 0xc000 oluyor yani soldan 1 bit giriyor
oysa Kaan Aslan'ın kitabına bakıyorum soldan 0 girer diyor

test edebilir misiniz

teşekkür


quarko

Denedim hocam, bahsettiğiniz gibi olmuyor.

Değişken tanımlamasını aşağıdaki şekilde yaptım. Bir sağa kaydırınca, 0x4000 oluyor.

uint16_t ACCU1 = 0x8000;
"Aslanlar kendi hikayelerini yazmadıkça, avcıların kahramanlık hikayelerini dinlemek zorundayız."

magnetron

teşekkür @quarko hocam, Cubeide yi 2 senedir güncellemedim ondan mı acaba

MCansız

merhaba bu işlem nerede yapılıyor ?
kod optimizasyonu açık mı ?

volatile uint16_t ACCU1 = 0x8000;

olarak tanımlayıp denemenizi öneririm.


quarko

Alıntı yapılan: magnetron - 25 Eylül 2023, 14:37:13teşekkür @quarko hocam, Cubeide yi 2 senedir güncellemedim ondan mı acaba

Rica ederim hocam. Güncel olmadığından kaynaklandığını düşünmüyorum esasen. Ama CubeIDE sık güncelleme yayınlıyor. Mevcut olanı kaldırıp, temiz bir kurulum yapmanızı tavsiye ederim. Workspace'inizi ne olur ne olmaz yedeklemeyi unutmayın. Belli olmaz.
"Aslanlar kendi hikayelerini yazmadıkça, avcıların kahramanlık hikayelerini dinlemek zorundayız."

hasankara

Değişken tipi short olabilir mi?

magnetron

değişkenim int16_t

denemedim ama bu yüzden bu şekilde çalışıyor herhalde

başka bir şekilde çözdüm , cevaplara teşekkür ederim