Forum: D Programlama Dili RSS
D ile işletim sistemi
Sayfa:  önceki  1  2  3  4  sonraki 
Avatar
huseyin #16
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 7027
Bu da puts olsun ama ben bunları D de kullanabilir miyim bilemiyorum

int puts( char *mesaj )
{
  int uzunluk;
  while(*mesaj)
  {
    putc(*mesaj++);
    uzunluk++;
  }
  return uzunluk;
}
Huseyin
acehreli (Moderatör) #17
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 7027
huseyin325325:
std.string.tostringz dediğiniz bir kütüphaneye girmiyor mu nasıl kullanabilirim ki ?

Ha ha! Doğru! :D

Yapılması gereken şu: string'in içindeki bütün karakterleri bir bölgeye kopyala ve en sonuna da '\0' karakterini yerleştir. O bölgenin adresini de C işlevine gönder.

Her dizinin .ptr niteliği ilk elemanın adresi olduğu için bu iş D'de çok kolay:

    strlen((s ~ '\0').ptr);

Aklıma geldi: Aslında bunu "merhaba" gibi hazır değerler için yapmana gerek yok; onların sonunda zaten sonlandırma karakteri var.

Ali
Avatar
huseyin #18
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Çok soru soruyorum galiba ama bir soru daha kendimce birşeyler uydurdum ama hata alıyorum sebebi nedir

/home/huseyin325325/Projeler/os/main.d:1: undefined reference to `_Dmodule_ref'
/home/huseyin325325/Projeler/os/main.d:1: undefined reference to `_Dmodule_ref'

Ben size kodu gönderim yada buraya yazım siz biraz düzenleyin ben beceremedim :)
Huseyin
acehreli (Moderatör) #19
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj ID 7027
huseyin325325:
Gdc bana 'synchronized' kullan dedi kullanınca da kabul etmedi :( ama 'shared' denemedim umrım işre yarar.
std.string.tostringz dediğiniz bir kütüphaneye girmiyor mu nasıl kullanabilirim ki ?

Sanırım o değişkenle ilgili olan işlemleri synchronized olarak işaretlemekten bahsediyorlar:

    int i;
 
    synchronized
    {
        ++i;
    }

Ali
acehreli (Moderatör) #20
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #18
huseyin325325:
/home/huseyin325325/Projeler/os/main.d:1: undefined reference to `_Dmodule_ref'
/home/huseyin325325/Projeler/os/main.d:1: undefined reference to `_Dmodule_ref'

Tabii ki bilmiyorum. :) Google'dan öğrendiğime göre -nophoboslib yüzündenmiş.

Ben size kodu gönderim yada buraya yazım siz biraz düzenleyin ben beceremedim :)

Bildiğim kadarına bakarım ama kernel'i bu tarafta yazıp deneyemem. :(

Ali
Avatar
huseyin #21
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #19
Yo ben onların kodu ile ilgilenmiyorum kendim yazdım ama onlara benzetmeye çalıştım D ye uysun diye
int x, y; 
char renk; 
void putc( char c )
{
  char *vidmem = cast(char*)0xB8000; 
  int pos = ( y * 2 ) + x; 
  vidmem[pos]   = c;
  vidmem[pos++] = renk; 
  if (c == '\n')
  {
    y++;
    x = 0;
  }
  else
    x += 2;
}
 
extern(C)void main(uint magic, uint addr)  // BUrayı bir hatayı çözmek için düzelltim
{
  putc('D');
  for(;;){
      //....
      } 
}


Bildiğim kadarına bakarım ama kernel'i bu tarafta yazıp deneyemem. :(


Hmm anladım derleniyor ama ref hatası var linkerden geçince

Bunu Andrei hocaya sorabiliriz aslında
Huseyin
Bu mesaj huseyin tarafından değiştirildi; zaman: 2012-07-24, 10:56.
Avatar
huseyin #22
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Hocam bilmem dikkatinizi çektimi biraz araştırma yapayım ddim bunu buldum

http://www.dsource.org/projects/osian/
Huseyin
acehreli (Moderatör) #23
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Umarım işine yarar. Dsource'taki çoğu proje gibi kesin D1 zamanında yazılmış olmalı. Derleme hataları konusunda sabırlı olmalısın. :)

Ali
Avatar
huseyin #24
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Derleme hatası almadım derlendi Hemde hiç hata yok ama çalıştıramadım izini sürüyorum
Huseyin
Avatar
huseyin #25
Üye Haz 2012 tarihinden beri · 363 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Loader.asm de hata aldım sadece D dosyaları güncel galiba
Aldımğım hata da bu biri linker dan galiba biri de nasm den ona ben bakıcam ama linker ı çözebileceğimi sanmıyorum.
Huseyin
zafer #26
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Başlığı gördüğümde çok heyecanlandığımı itiraf etmeliyim. Ancak örnek kodları görünce tam bir hayal kırıklığı yaşadım. Ben saf D kodları olduğunu umuyordum ama gördüğüm kadarıyla durum böyle değil.

Ben D'yi modern olanaklar içeren bir sistem dili diye anlamıştım ama sanırım bu alanda bir C veya C++ rakibi olabilecek durumdu değil.
https://github.com/zafer06 - depo
acehreli (Moderatör) #27
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
zafer:
sanırım bu alanda bir C veya C++ rakibi olabilecek durumdu değil.

O sayfada işletim sistemi yazmak isteyenlere başlangıç olması amacıyla yazılmış olan küçük bir örnek var. Beni en çok düşündüren çöp toplayıcı oluyor. Araştırdım: Kendi sitelerinde insanların bu konuda iki gruba ayrıldıklarını söylüyorlar:

  http://wiki.osdev.org/Garbage_collection#Can_I_use_garbage…

Bazıları işletim sisteminde çöp toplayıcının yerinin olmadığını, bazıları ise rahatlıkla kullanılabileceğini söylüyorlarmış. Örnek olarak Microsoft Research'ün Singularity projesini veriyorlar: Çöp toplayıcı her tarafında kullanılıyormuş.

Ali
Avatar
Salih Dinçer #28
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Ali hocam, bu sözünden şunu mu anlamalıyız: D'de derlenen her uygulama çöp toplayıcısına sahip. Yani biz D ile işletim sistemi yazmaya kalkışsaydık her komutun (iç komutlardan bahsetmiyorum...) kendine özgü bir çöp toplayıcısı mı olacaktı?

Bu durumda işler karışacak mıydı, yoksa her şey daha fazla mı yer kaplayacaktı?

Peki D'de, herhangi bir satır arasında assembly komutlarını yazabiliyoruz. Bu haliyle D'ye o kadar çok benziyor ki insana, neden D'de alt düzeyde top koşturmayalım dedirtiyor. Her ne olursa olsun D'yi seviyorum...:)
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
acehreli (Moderatör) #29
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Salih Dinçer:
D'de derlenen her uygulama çöp toplayıcısına sahip.

dmd'ye çöp toplayıcıyı dahil etmemesini özellikle söylemediysek öyle. (Nasıl söylendiğini bu veya benzeri bir konuda konuşmuştuk. Hiç hatırlamıyorum.)

Yani biz D ile işletim sistemi yazmaya kalkışsaydık her komutun (iç komutlardan bahsetmiyorum...) kendine özgü bir çöp toplayıcısı mı olacaktı?

Çöp toplayıcı bir tane ve komutlarla ilgili değil. Diziler gibi iç olanaklar tarafından veya new ile açıkça oluşturulan nesnelerin yaşam süreçlerini idare eder.

Bu durumda işler karışacak mıydı, yoksa her şey daha fazla mı yer kaplayacaktı?

İşler karışmayacaktı. Evet, çöp toplayıcı yer kaplar ve hatta münasebetsiz zamanlarda işlemeye karar vererek programın belirsiz aralıklarla tutukluk yapmasına neden olabilir.

Ali
zafer #30
Üye Tem 2009 tarihinden beri · 700 mesaj · Konum: Ankara
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #27
acehreli:
O sayfada işletim sistemi yazmak isteyenlere başlangıç olması amacıyla yazılmış olan küçük bir örnek var.

Ali seni anlıyorum ve bu kodların saf D ile (yani extern(C) felan olmadan) yazılmış bir örneği var mı bunu öğrenmek istiyorum? Görmek ve denemek isterdim. Kabaca şöyle bir şey;

module kernel.main;
 
void main(uint magic, uint addr) 
{
    // Diğer kodlar buraya!
}

Salih Dinçer:
Her ne olursa olsun D'yi seviyorum...:)

Bu foruma yazan herkes bir şekilde bu dile ilgi duyduğu için burada yazıyor veya burayı takip ediyor. Ali her fırsatta D'nin güçlü yanlarını yazıyor zaten örneğin regex konusundaki hızı, benimde çok hoşuma giden entegre birim test olanağı gibi. Bunun yanında eksik gördüğümüz yönlerinide tarafsız bir şekilde tartışmalıyız ki dili tam olarak tanıyalım.

Malesef dili çok seven insanlarla bu tür eksiklikleri konuşmak pek kolay değil, hemen savunmaya geçiliyor (Ben dahil) Ancak buradaki arkadaşların bu olgunlukta ve samimiyette olduğunu düşündüğün için bunları yazıyorum.
https://github.com/zafer06 - depo
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  önceki  1  2  3  4  sonraki 
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-19, 00:35:16 (UTC -08:00)