Merhaba arkadaşlar,asm kodda NOP komutu ile elde edilen bir makina çevrim süresini C kodu ile elde edebilir miyim?
C51 de _nop_();
ARM da __asm{nop}
sadece _nop_(); yazmak yeterli değil sanırım,derlerken hata veriyor.Tanımlanması gereken kütüphane veya başka birşey mi eklenmesi gerekiyor?Teşekkür ederim.
siz kod kümenizin önce hiç uyarı ve hata vermeyen yazım halini verin sonra
nop(): ilaveli hata veya uyarı veren halini ilave edip verin bu şekilde
zannediyorum sorunu daha kolay çözeriz
nop(); türü komutlar genelde işlemcinizin header dosyasında tanımlıdır hata alıyor olmanız büyük ihtimal hatalı yazımınızdan kaynaklıdır.
ide niz keil derleyiciniz ve çalıştığınız işlemcinin adı nedir?
burdan bu konularda iyi yardım almanız için çok daha açık olmalısınız takıldığınız nokta çok alt seviye bir yer
ben ne o ide kullanıyorum nede ismini vereceğiniz derleyiciyi ama sorunu çözebileceğime güveniyorum.
size derleyicinizin eğitim-yardım dosyasına bakmanızı tavsiye ederim eminimki daha ilk 50 saydada nop(); yazımı açıkça verilmiştir.
Öncelikle ilginiz için teşekkür ederim.89c51rc2 işlemcisini kullanıyorum.Kızılötesi iletişimle ilgili bir proje üzerinde çalışıyorum.Bir makina çevrim süresi çalıştırmam gereken yerler olduğu için bu komutu kullanmayı düşünüyorum.Neden illa ki bu komut diye soracak olursanız daha önce yaptığımız asm diliyle yazılmış bir çalışmada süre ayarlarını NOP komutu ile yapmıştık.Asm kodları C diline çevirmeye çalışıyorum.Keil yardım kısmında nop komutunun aşağıdaki şekilde kullanılabileceğinden bahsediyor.Aşağıdaki şekilde kullanınca ise derleme esnasında bazen problem çıkarıyor.O yüzden C ile belki kullanılabilir diye forumdan yardım istedim.
#pragma asm
NOP; [Cdeki karşılığı olarak sadece nop(); yazıyorum.Bir yanlışlık yok gibi..]
#pragma endasm
Keilde nop(); şeklinde yazınca hatasız derliyor.Fakat asm ile yazdığım sonuçları alamıyorum.asm kodlarla yazınca pulse üretiyor.(Yani yukarıdaki gibi)Ama C ile(nop();) yazınca üretmiyor.Sizce farklılık neden kaynaklanıyor olabilir?
sizin sorun nop(); yazıp derleyince arasıra tanıyor ve hata vermiyormu?
yoksa nop(); hiçmi tanınmıyor.hep hata mı alınıyor.
yada nop(); hep tanınıyor ama asm deki NOP gibi sonuç mu üretmiyor
bunu anlamak için habire yazılarınızı okuyup duruyorum daha.
nop asm de olsa C de olsa aynı işlemi aynı zaman gecikmesinde aynı işlemci üzerinde aynı kristal hızlarında yapması gerekir.
diğer komutların çekeceği süreler değişsede nop asla değişmez 1 saykıllık temel komuttur.
Cde, yani nop(); yazınca sıkıntı yok..Derliyor..Ama pulse üretmiyor.
Asmde ise derlerken sıkıntı oluyor.5 derleme yapıyorsam belki birinde problem çıkmıyordur.Diğer durumlarda da programdan kaynaklanan bir hata veriyor.(çevrimiçi çözümler falan..) Ama bu şekilde de pulse üretiyor.
Bende farklılığın neden kaynaklandığını çözebilmiş değilim.
Kusura bakmayın.Tekrar teşekkür ederim..
C51 de _nop_(); fonksiyonu INTRINS.H dosyasında tanımlıdır. Kodunuza
#include <INTRINS.H>
satırını ekleyin.