← rfc/
╔══════════════════════════════════════════════════════════════════════════╗
RFC 401 · graphics

NGP-0 Koordinatlarının Aygıta Özgü

Yazar
NIC #11923
Kurum
Tarih
23 Ekim 1972
Durum
Network Working Group Yorum Talebi
Kanal
graphics/

Ağ Çalışma Grubu

Yorum Talebi #401
NIC #11923
Kategori: D.6
Günceller: RFC #387
Geçersiz Kılar: Yok

Jim Hansen
Gelişmiş Hesaplama Merkezi
Illinois Üniversitesi
23 Ekim 1972


NGP-0 Koordinatlarının Aygıta Özgü

Koordinatlara Dönüştürülmesi

NGP-0 koordinatlarının kayan noktalı PDP-10 koordinatlarına dönüştürülmesi RFC #387’de tartışılmıştır. Ancak genel olarak, NGP koordinatlarının kayan noktalı koordinatlara dönüştürülmesi istenmeyen bir durumdur; çünkü gerçek aygıtlar tamsayı adresleme gerektirir. Bu amaçla, NGP koordinatlarını, 2’nin tümleyeni aritmetiği kullanan bir makinede aygıt ekranının en büyük adresi olan M ile sıfır aralığındaki tamsayı koordinatlara dönüştürmeye yönelik bir yöntem tanımlanmaktadır. Bununla birlikte, bu algoritmanın bire bir tümleyen ya da işaret-büyüklük aritmetiği kullanan makinelerde çalışacak şekilde değiştirilmesi zor olmayacaktır.

Öncelikle NGP koordinat biçimini ele alalım:

+--+-----------+
|  |   n       |
+--+-----------+
 s ^  KESİR
 i
 g
 n

Burada işaret biti koordinatın en anlamlı bitini kaplar ve bunu sayısal bilgi bitleri izler (NGP’nin ilk uygulaması N = 15 gerektirir). Negatif sayılar 2’nin tümleyeni ile temsil edilir. Aygıt koordinatlarına dönüştürme şu şekilde gerçekleştirilir:

D = S * f + S

Burada:

Bunu şu şekilde yeniden yazalım:

        n     n
D = S*(2 * f)/2 + S

Şimdi S’yi iki terime ayıralım:

        I
S = Q * 2

Burada Q tek bir tamsayıdır ve I bir tamsayıdır.

Şu durumda:

        I   n     n
D = Q * 2 * (2 * f) / 2 + S

        I-n   n
  = Q * 2   * (2 * f) + S

(2^n * f) çarpanı, f’nin işaret bitinin bilgisayar sözcüğünün üst kısmına genişletilmesiyle 2’nin tümleyeni biçiminde doğrudan temsil edilir. Q = 1 ise (birçok aygıtta olduğu gibi) göz ardı edilebilir. Q ≠ 1 ise, çoğu makinede tamsayı çarpmanın kayan nokta çarpmadan daha hızlı olduğunu düşünerek kendimizi rahatlatabiliriz. Nitekim bir PDP-10 üzerinde bu çarpma genellikle bellek erişimi olmadan gerçekleştirilebilir; çünkü Q çoğunlukla küçüktür.

Artık geriye 2^(I−n) çarpanı kalmaktadır. Bu, uygun şekilde (I−n) kadar aritmetik sola kaydırma ya da (n−I) kadar aritmetik sağa kaydırma ile gerçekleştirilebilir. Ofset çarpanı S ise artık bir tamsayı toplama işlemi kullanılarak eklenebilir.

NGP koordinatlarını tamsayı aygıt koordinatlarına dönüştürme işlemi şu şekildedir:

  1. Koordinatı bir yazmaca taşı ve işareti genişlet.
  2. Q ile tamsayı çarpma yap (gerekliyse).
  3. (I−n) kadar aritmetik sola kaydır.
  4. S’yi tamsayı toplama ile ekle.

Bu yöntem, genel olarak şu işlemlerden çok daha hızlı olacaktır:

  1. Koordinatı yazmaca taşı ve işareti genişlet.
  2. Kesirli koordinatı kayan noktaya dönüştür.
  3. Kayan nokta çarpma yap.
  4. Kayan nokta toplama yap.
  5. Sabit noktaya dönüştür.

Bu RFC, çevrimiçi RFC arşivlerine girmek üzere BBN Corp. tarafından Alex McKenzie’nin yönetimi altında makine tarafından okunabilir biçime dönüştürülmüştür. 1/97