JAL 2.1. Temel Veri Türleri
JAL v2 derleyicisi yalnızca aşağıdaki türleri tanır.
Tür | Açıklama | Aralık |
---|---|---|
BIT 1 |
1 bit boolean değer | 0.....1 |
SBIT 1 |
1 bit işaretli değer | -1.....0 |
BYTE 1 |
8 bit işaretsiz değer | 0.....255 |
SBYTE 1 |
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 |
FLOAT 1 |
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!