JAL 2.1. Temel Veri Türleri

JAL - Temel veri türleri

JAL v2 derleyicisi yalnızca aşağıdaki türleri tanır.

Tür Açıklama Aralık
BIT1 1 bit boolean değer 0.....1
SBIT1 1 bit işaretli değer -1.....0
BYTE1 8 bit işaretsiz değer 0.....255
SBYTE1 8 bit işaretli değer -128.....127
WORD 16 bit işaretsiz değer 0.....65.535
SWORD 16 bit işaretli değer -32.768.....32.767
DWORD 32 bit işaretsiz değer 0.....4.294.967.295
SDWORD 32 bit işaretli değer -2.147.483.648 ..... 2.147.483.647
FLOAT1 Kesirli (kayan noktalı) değer +/- 10^-44.....10^38

1Temel türler

En büyük türler, WORD, SWORD, DWORD, SDWORD genişlik belirticisini kullanarak basitçe temel türlerden türetilmiştir. Örneğin WORD, BYTE*2’ye eşittir, sonuncusu yani BYTE*2, biçimlendirici ile diğerinin alternatifi olarak kullanılabilir. İzleyen tanımlama örneklerini inceleyin.

1var word     DEGISKEN_A --1 word = 2 byte
2var byte*2   DEGISKEN_B --2 byte = 1 word

Verilen örneklerde görüldüğü gibi her iki tanımlama da aslında bellekte aynı yeri kaplar, yani 2 byte. Fakat bize kolaylık olması açısından derleyicinin içinde türetilmiş daha büyük türler kullanılabilir. Bu kod okunaklılığını artıracaktır.

Kesirli sayı (floating point) aritmetiği çoğu 8-bit PIC mikrodenetleyiciler için kod ve veri belleği açısından yüksek bedellidir ve önlenmesi daha iyidir. Çünkü 8-bit PIC mimarisi aritmetik işlemler bakımından zayıf bir donanım yapısına sahiptir. PIC16 modellerinde çarpım ve bölme yapan donanımlar bulunmamakta, PIC18 modellerinde ise yalnızca 8 bit x 8 bit çarpma yapabilen bir donanım bulunur. Bu donanım yetersizliği kesirli işlemlerin 8 bit PIC modellerinde işlenmesini güçleştirir. JAL FLOAT türü IEEE (The Institue of Electrical and Electronics Engineers - Elektrik ve Elektronik Mühendisleri Enstitüsü) standardının 754. maddesi üzerine temellendirilmiştir. Bununla beraber ne istisnalar doğurur, ne de taşma ya da özel sayıları (+/-Sonsuzluk, +/-NaN, -0, vb) işler. Bir kesirli sayı yani FLOAT değeri 4 BYTE ile temsil edilir.

BIT türüyle ilgili bilinmesi gereken bir nokta var. Özgün JAL dilinde, BIT türü daha çok bir boolean gibi davranırdı; 0 atanırsa , saklanan değer sıfır olur, herhangi bir sıfır olmayan değer atanırsa saklanan değer bir olurdu. Bu yöntem JALv2’de hala kullanılır. Nitekim JALv2 ayrıca BIT türlerini daha çok C dilindeki bit alanları gibi anlar. Eğer BIT bir yerine BIT*1 biçimi kullanılırsa, atanan bit değeri uygun bir biçimde maskelenir. Diğer bir deyişle BIT*1 y = z ataması; dahili olarak BIT*1 y = (z & 0x0001) biçimine çevrilir. Dolayısıyla maskeleme işlemi derleyici tarafından gerçekleştirilir.

Öntanımlı daha büyük türler standart genişlikler kullanmasına rağmen (2 ve 4 bayt), dil tarafından dayatılan böyle bir zorunluluk yoktur. Üç byte’lık bir değere ihtiyaç varsa, BYTE*3 tanımlama biçimi kullanılabilir. Tek sınırlayıcı etmen istenen değişken uzunluğunun bir veri bankınıni içine sığmasıdır. BIT ve BYTE farklı yapılardır, bu yüzden BIT*24 değeri tanımlaması, BYTE*3 değeri tanımlamasıyla aynı olmaz!

comments powered by Disqus