Bilgi ve Uygulama

JAL 2.4: Değişkenler

Yazar: İsmail Sahillioğlu
Tarih: 15.09.2019
Türkçe
Basitçe bir değişken, değer tutan bir tanımlayıcıdır. Bu tanımlayıcılar, değeri tutmak için ne kadar boşluk gerektiğini belirleyen ilgili türlere sahiptir. Bu veri türleri hakkında bu yazıda söz etmiştik. Bir değişken tanımlayıcı için belirtilen veri türü bu değişken için bellekte ne kadar yer ayrılacağını belirler. JAL'ın kendi kılavuzunda tam değişken tanımlama formatı aşağıdaki gibidir:

VAR [VOLATILE] [SHARED] tür[*sabitifade] tanımlayıcı [ '[' [ sabitifade ] ']' ]
[ { AT sabitifade [ ':' bit ] | degisken [ ':' bit ] | '{' sabitifade1[',' sabitifade2...] '}'
| IS degisken }
[ '=' sabitifade | '{' sabitifade1',' ...'}' | '"'...'"' ]
[',' tanımlayıcı2...]
Bu format oldukça karışık gibi görünüyor, başlangıç için oldukça korkutucu görünüyor fakat açıklamalarını yazının ilerleyen bölümlerinde yapacağım. Gelin bunu biraz basitleştirelim, en önemli noktaları ele alarak formatı yeniden oluşturalım:

VAR [VOLATILE] [SHARED] veriTürü değişkenAdı AT bellekAdresi

Genelde değişken tanımlarken muhtemelen orjinal kılavuzdaki kadar ayrıntılı tanımlamayacağız. Dolayısıyla sadeleştirdiğim tanımlama formatı yeterli olacaktır. Ama bu eğitimin prosedürü olarak yine de orjinal formatın her bölümünün açıklamasını yapacağım.

JAL kılavuzundan alıntıladığım formatın öğelerinin açıklamaları şu şekilde:

VAR
Bir değişken tanımlamasının başlangıcını gösterir. Her bir değişken tanımlamasının başına yazılmalıdır.

VOLATILE
Bu anahtar sözcük kullanılan ya da atanan değişkenin ilerisi için optimize edilmeyeceğini ve bu değişkenin bir ifade değerlendirirken yalnızca bir kez okunacağını veya yazılacağını garanti eder. Normalde bir değer atanıp hiç kullanılmamış değişkenler derleyici tarafından saptanıp ataması kaldırılır ve ona bellekte hiç yer ayrılmaz. Eğer atama bir ifade ise, ifade tümüyle değerlendirilecektir. Bir değişken kullanılmış fakat hiç atanmamışsa, değişkenin tüm kopyaları (ilgili veri türüne göre) 0 sabit değeriyle değiştirilecek ve değişken herhangi bir bellek yerine konumlandırılmayacaktır. İşte VOLATILE sözcüğü derleyicinin tanımlanan değişkeni bu optimizasyondan hariç tutmasını sağlar.

SHARED
Tanımlanmakta olan değişkenin ortak bellek bölgesine yerleştirilmesi gerektiğini derleyiciye söyler, böylece RAM bellekte bu değişken için derleyicinin bank seçimi yapmasına gerek kalmaz.

tür[*sabitifade] / veriTürü
Tür, veri türleri yazısında bahsettiğimiz öntanımlı türlerden herhangi biridir. Eğer tür BIT, BYTE veya SBYTE ise [*sabitifade] kullanılarak genişletilebilir ör. VAR BYTE*2 degiskenA. BYTE ve SBYTE için, bu demek oluyor ki; değişken  *sabitifade kullanılarak bir tamsayı biçiminde tanımlanacak, ör. daha önce bahsettiğimiz gibi WORD basitçe BYTE*2 için kısaltmadır.
Eğer tür BIT ise o zaman tanımlama değişir. Bir BIT değişkeni, JAL'da tanımlandığı şekliyle, gerçekte boolean  türüdür. Sıfır olmayan bir değer atandığında 1 değerini alır. [*sabitifade] belirteci kullanıldığında tanım daha çok bir C bit alanı olmak üzere değişir: Değer atamaları maskelenir. Örneğin:

VAR BIT*2 metraj

metraj'a değer atandığı zaman, atama şöyle olur:

metraj = (deger & 0x03)

tanımlayıcı
Herhangi geçerli JAL tanımlayıcısı diğer bir deyişle değişkenAdı.

'[' [ sabitifade ] ']'
'sabitifade' büyüklüğünde bir öğe dizisi tanımlar. Dizi indeksi 0'dan başlar (sabitifade-1)'e dek devam eder. Bir dizi tek bir PIC veri bankına sığacak şekilde tanımlanmalıdır.
Eğer sabitifade belirtilmeyecekse '=' kullanılarak dizinin öğeleri tanımlanmalıdır. Bu durumda dizi için ayrılacak boyut derleyici tarafından otomatik olarak saptanır.
BIT dizileri desteklenmez.

AT sabitifade [ ':' bit ]
Yeni değişkeni sabitifade konumuna yerleştirir. Bu bir bit değişkeni ise, [ ':' bit ] ifadesi, konumla birlikte bit ofsetini yani bitin başlangıcını tanımlar. Açıkça bir yerleştirme yapılmış hiç bir konum başka bir değişkene ayrılmayacaktır.

AT degisken [ ':' bit ]
Yeni değişkeni daha önceden var olan bir degisken'in konumuna yerleştirir. Açıkça bir yerleştirme yapılmış hiç bir konum başka bir değişkene ayrılmayacaktır.

AT '{' sabitifade1[',' sabitifade2...] '}'
Yeni değişkeni çoklu konumlara yerleştirir. PIC denetçilerde özel amaçlı yazmaçların çoğu iki ya da daha fazla veri bankına çoğaltılmıştır. Değişkenin hangi veri konumlarını tuttuğunu derleyiciye söylemek, veri erişim bitlerini optimize etmesine olanak sağlar.

IS degisken
Derleyiciye bu değişkenin bir diğer değişken için basitçe bir rumuz olduğunu söyler. Bu parametre artık yeni sürümlerde kullanılmamaktadır, bunun yerine "ALIAS degiskenB IS degiskenA" tanımlama biçimi kullanılmalıdır.

'=' ifade
Değer atama. Değişkene ifade değeri atanacaktır.

'=' '{' ifade1 [',' ifade2...] '}'
Dizi değişkenler için yapılan değer atama biçimi. Dizinin öğelerine 0'dan başlayarak sırasıyla ifade1, ifade2, ... değerleri atanacaktır.

'=' '"'...'"'
Bir değişken dizisi için, bu her bir ASCII değerini '"' ve '"' arasındaki değere atar. C dilinin aksine katar sonu NUL yoktur.

'=' "..."
Bir değişken dizisine çift tırnak işareti içinde bulunan öğeler atanır. Örneğin:

= "abc", = {"a","b","c"} ile eşdeğerdir.


',' tanımlayıcı2...
Aynı nitelikteki çoklu değişkenleri tanımlamaya izin verir:

VAR BYTE a,b,c


Etiketler: JAL değişkenler

Yorumlarınız

Hiç yorum yapılmamış, ilk yorumu siz yapabilirsiniz.

Bir yorum ekleyin

İsim:
E-posta:
Yorumunuz:
Güvenlik Kodu:
 
Tüm alanları doldurmak zorunludur. Yorumunuz kontrol edilince yayınlanacaktır. E-posta adresi yayınlanmaz.
Konular