Язык nML синтаксис операторы примеры » History » Version 7
Alexander Protsenko, 10/07/2019 04:28 PM
1 | 2 | Alexander Protsenko | *Язык nML: синтаксис, операторы, примеры* |
---|---|---|---|
2 | |||
3 | h1. История языка nML |
||
4 | |||
5 | h1. Синтаксис языка nML |
||
6 | |||
7 | 7 | Alexander Protsenko | h3. Ключевое слово: *mode* |
8 | |||
9 | Пример: |
||
10 | У нас заданы регистры VR через ключевое слово mode: |
||
11 | <pre>mode VR (i: card(5)) = VREG [i] |
||
12 | syntax = format("v%d", i) |
||
13 | image = format("%5s", i)</pre> |
||
14 | При работе с регистрами данного типа, мы можем получить индекс регистра i: |
||
15 | <pre>op vsub(vd: VR, vs1: VR, vs2: VR) |
||
16 | action = { |
||
17 | vsub_cycle_vv(VR(vd.i), VR(vs2.i), VR(vs1.i)).action; |
||
18 | vsub_cycle_vv(VR(vd.i + 1), VR(vs2.i + 1), VR(vs1.i + 1)).action; |
||
19 | }</pre> |
||
20 | |||
21 | 2 | Alexander Protsenko | h1. Ключевые операторы языка nML и примеры кода |
22 | |||
23 | h3. Оператор преобразования типа: *cast* |
||
24 | |||
25 | h3. Оператор присвоения типа: *сoerce* |
||
26 | |||
27 | h1. Использование библиотеки softfloat для работы с числами с плавающей точкой |
||
28 | 3 | Alexander Protsenko | |
29 | В языке nML, используемом в инструменте MicroTESK, для создание типа чисел с плавающей точкой необходимо использовать ключевое слово *float(мантисса, показатель степени)*. |
||
30 | Пример: |
||
31 | <pre> |
||
32 | type FLOAT16 = float(10, 5) |
||
33 | type FLOAT32 = float(23, 8) |
||
34 | type FLOAT64 = float(52, 11) |
||
35 | type FLOAT128 = float(112, 15) |
||
36 | </pre> |
||
37 | 4 | Alexander Protsenko | |
38 | *float_rounding_mode* - параметр содержащий режим округления. В соответствии с этим параметром происходит округление при обработке операций библиотекой. |
||
39 | |||
40 | В настоящий момент поддерживается 5 режимов округления: |
||
41 | * round_nearest_even(0), |
||
42 | * round_up(1), |
||
43 | * round_down(2), |
||
44 | * round_to_zero(3), |
||
45 | 5 | Alexander Protsenko | * round_near_maxMag(4); |
46 | |||
47 | Операторы преобразования чисел с плавающей точкой: |
||
48 | 6 | Alexander Protsenko | * число float = int_to_float(тип float, число int) |
49 | * целое число = float_to_int(тип целое число, число float) |
||
50 | |||
51 | Примеры преобразований: |
||
52 | <pre>var fp_32[FLOAT32] |
||
53 | var word_32[WORD] |
||
54 | word_32 = float_to_int(WORD, fp_32);</pre> |
||
55 | |||
56 | <pre>var fp_32[FLOAT32] |
||
57 | var int_32[int(32)] |
||
58 | fp_32 = int_to_float(FLOAT32, int_32);</pre> |