Project

General

Profile

Язык nML синтаксис операторы примеры » History » Revision 7

Revision 6 (Alexander Protsenko, 06/18/2019 02:56 PM) → Revision 7/8 (Alexander Protsenko, 10/07/2019 04:28 PM)

*Язык nML: синтаксис, операторы, примеры* 

 h1. История языка nML 

 h1. Синтаксис языка nML 

 h3. Ключевое слово: *mode* 

 Пример: 
 У нас заданы регистры VR через ключевое слово mode: 
 <pre>mode VR (i: card(5)) = VREG [i] 
   syntax = format("v%d", i) 
   image    = format("%5s", i)</pre> 
 При работе с регистрами данного типа, мы можем получить индекс регистра i: 
 <pre>op vsub(vd: VR, vs1: VR, vs2: VR) 
   action = { 
     vsub_cycle_vv(VR(vd.i), VR(vs2.i), VR(vs1.i)).action; 
     vsub_cycle_vv(VR(vd.i + 1), VR(vs2.i + 1), VR(vs1.i + 1)).action; 
   }</pre> 

 h1. Ключевые операторы языка nML и примеры кода 

 h3. Оператор преобразования типа: *cast* 

 h3. Оператор присвоения типа: *сoerce* 

 h1. Использование библиотеки softfloat для работы с числами с плавающей точкой 

 В языке nML, используемом в инструменте MicroTESK, для создание типа чисел с плавающей точкой необходимо использовать ключевое слово *float(мантисса, показатель степени)*. 
 Пример: 
 <pre> 
 type FLOAT16    = float(10, 5) 
 type FLOAT32    = float(23, 8) 
 type FLOAT64    = float(52, 11) 
 type FLOAT128 = float(112, 15) 
 </pre> 

 *float_rounding_mode* - параметр содержащий режим округления. В соответствии с этим параметром происходит округление при обработке операций библиотекой. 

 В настоящий момент поддерживается 5 режимов округления: 
 * round_nearest_even(0), 
 * round_up(1), 
 * round_down(2), 
 * round_to_zero(3), 
 * round_near_maxMag(4); 

 Операторы преобразования чисел с плавающей точкой: 
 * число float = int_to_float(тип float, число int) 
 * целое число = float_to_int(тип целое число, число float) 

 Примеры преобразований: 
 

 <pre>var fp_32[FLOAT32] 
 var word_32[WORD] 
 word_32 = float_to_int(WORD, fp_32);</pre> 

 <pre>var fp_32[FLOAT32] 
 var int_32[int(32)] 
 fp_32 = int_to_float(FLOAT32, int_32);</pre>