SORU
17 NİSAN 2013, ÇARŞAMBA


Yazma işaretçi türü

Gömülü sistem yazılımı yazıyorum.

İşaretçiler ... bir cihazın kayıtları erişmek için kullanıyoruz.
Kayıtlar bazıları salt okunur ise salt okunur.

Yazma salt okunur zaman tanımsız değerler üretmek kaydeder.

Derleyici yazma kaydeder bir değerleri okurken algılamak için izin veren bir işaretçi türü tanımlamak istiyorum.k.bir. kaldırma).

A-sadece yazma işaretçi sadece C dili sözdizimi kullanılarak oluşturulabilir?
(İlk prototip C kullanarak gelişen, ama 2. Nesil C için hareket ediyoruz.)

Nasıl bir etkin-sadece yazma işaretçi C oluşturulabilir ? (Bu dinamik hafıza izleme öğeleri değildir unutmayın, ama donanım erişim adresleri.)

Bu kod güvenliği ve kalitesi en yüksek endişeleri nerede gömülü bir sistem üzerinde kullanılır.

CEVAP
17 NİSAN 2013, ÇARŞAMBA


Muhtemelen her küçük kapsayıcı bir sınıf yazmak istiyorum:

template <class T>
class read_only {
    T volatile *addr;
public:
    read_only(int address) : addr((T *)address) {}
    operator T() volatile const { return *addr; }
};

template <class T>
class write_only { 
    T volatile *addr;
public:
    write_only(int address) : addr ((T *)address) {}

    // chaining not allowed since it's write only.
    void operator=(T const &t) volatile { *addr = t; } 
};

En azından sistem makul bir derleyici var varsayarak, bunların her ikisi de üretilen kod ham bir işaretçi kullanarak farksız olduğunu en iyi düzeyde olmasını isteyeceğim. Kullanımı:

read_only<unsigned char> x(0x1234);
write_only<unsigned char> y(0x1235);

y = x   1;         // No problem

x = y;             // won't compile

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BMG Rentals Property Management

    BMG Rentals

    23 Mayıs 2011
  • BumbleDroid

    BumbleDroid

    18 EKİM 2010
  • 10 Daughters, 2 Sons

    10 Daughters

    10 Mart 2009