Bilgi ve Uygulama

JAL 2.1: Veri Türleri

Yazar: İsmail Sahillioğlu
Tarih: 20.07.2019
Türkçe


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

TürAçıklamaAralık
BIT11 bit boolean değer0.....1
SBIT11 bit işaretli değer-1.....0
BYTE18 bit işaretsiz değer0.....255
SBYTE18 bit işaretli değer-128.....127
WORD16 bit işaretsiz değer0.....65.535
SWORD16 bit işaretli değer-32.768.....32.767
DWORD32 bit  işaretsiz değer0.....4.294.967.295
SDWORD 32 bit işaretli değer-2.147.483.648 ..... 2.147.483.647 
FLOAT1Kesirli (kayan noktalı) değer +/- 10^-44.....10^38

1Temel türler

En büyük türler, WORD, SWORDDWORD, 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.

	VAR	WORD     DEGISKEN_A	--1 word = 2 byte
VAR 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! 

Etiketler: JAL değişkenler
Konular