Разработка языка, предназначенного для программирования потоковых вычислений, страница 18

Номер

Метка

Операция

Операнд 1

Операнд 2

Результат

Результат исполнения

0

let

2

_null

a2

2.0

1

let

a2

_null

a1

2.0

2

let

2

_null

b

2.0

2vars2

Номер

Метка

Операция

Операнд 1

Операнд 2

Результат

Результат исполнения

0

let

3

_null

c

3.0

1

let

3

_null

d

3.0

Исполнение последовательности пентад блоков do

1do1

Номер

Метка

Операция

Операнд 1

Операнд 2

Результат

Результат исполнения

0

+

x2

x1

tmp_1

4.0

1

let

tmp_1

_null

in1

4.0

2

+

x4

x3

tmp_2

6.0

3

let

tmp_2

_null

in2

6.0

4

in2

in1

tmp_3

0

5

GF

Label0_1

tmp_3

_null

Переход по метке Label0_1, так как условие ложно

8

Label0_1:

in2

in1

tmp_5

1

9

GF

Label0_2

tmp_5

_null

Продолжение последовательного выполнения, так как условие истинно

10

-

in1

in2

tmp_6

2.0

11

let

tmp_6

_null

out1

2.0

12

GO

Label1_2

_null

_null

Переход по метке Label1_2

14

Label1_2:

_null

_null

_null

_null

3do3

Номер

Метка

Операция

Операнд 1

Операнд 2

Результат

Результат исполнения

0

>=

4

x41

tmp_17

0

1

GF

Label0_7

tmp_17

_null

Переход по метке Label0_7, так как условие ложно

8

Label0_7:

==

0

x41

tmp_22

0

9

GF

Label0_8

tmp_22

_null

Переход по метке Label0_8, так как условие ложно

15

Label0_8:

+

x45

x44

tmp_26

6.0

16

+

tmp_26

x43

tmp_27

8.0

17

+

tmp_27

x42

tmp_28

10.0

18

/

x41

tmp_28

tmp_29

5.0

19

let

tmp_29

_null

out41

5.0

20

Label1_8:

_null

_null

_null

_null

21

Label1_7:

_null

_null

_null

_null

2do2