1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
ORGANIZATION_BLOCK OB 1
BEGIN
// Check pointer immediates
L P#10.6
__ASSERT== __ACCU 1, DW#16#00000056
L P#P 1.1
__ASSERT== __ACCU 1, DW#16#80000009
L P#E 2.1
__ASSERT== __ACCU 1, DW#16#81000011
L P#A 3.1
__ASSERT== __ACCU 1, DW#16#82000019
L P#M 4.1
__ASSERT== __ACCU 1, DW#16#83000021
L P#L 5.1
__ASSERT== __ACCU 1, DW#16#86000029
// Test address register instructions
L P#885.3
LAR1
L P#886.2
LAR2
__ASSERT== __ACCU 1, P#886.2
__ASSERT== __ACCU 2, P#885.3
__ASSERT== __AR 1, P#885.3
__ASSERT== __AR 2, P#886.2
+AR1 P#1.1
__ASSERT== __AR 1, P#886.4
+AR2 P#5.1
__ASSERT== __AR 2, P#891.3
LAR1 P#12.3
LAR2 P#32.1
__ASSERT== __AR 1, P#12.3
__ASSERT== __AR 2, P#32.1
L 111
L 222
TAR1
__ASSERT== __ACCU 1, P#12.3
__ASSERT== __ACCU 2, 222
TAR2
__ASSERT== __ACCU 1, P#32.1
__ASSERT== __ACCU 2, P#12.3
TAR1 LD 0
TAR2 LD 4
__ASSERT== LD 0, P#12.3
__ASSERT== LD 4, P#32.1
CALL FB 1, DB 1 (
IN_VAL_0 := 6666,
IN_VAL_1 := 6767,
)
CALL FC 1 (
IN_VAL_0 := 5555,
IN_VAL_1 := 5656,
)
END_ORGANIZATION_BLOCK
FUNCTION_BLOCK FB 1
VAR_INPUT
IN_VAL_0 : INT
IN_VAL_1 : INT
END_VAR
BEGIN
L P##IN_VAL_0
__ASSERT== __ACCU 1, DW#16#85000000
L P##IN_VAL_1
__ASSERT== __ACCU 1, DW#16#85000010
END_FUNCTION_BLOCK
FUNCTION FC 1 : VOID
VAR_INPUT
IN_VAL_0 : INT
IN_VAL_1 : INT
END_VAR
BEGIN
L P##IN_VAL_0
__ASSERT== __ACCU 1, DW#16#85000000 //FIXME should be area 87
L P##IN_VAL_1
__ASSERT== __ACCU 1, DW#16#85000010 //FIXME should be area 87
END_FUNCTION
DATA_BLOCK DB 1
FB 1
BEGIN
IN_VAL_0 := 88
IN_VAL_1 := 99
END_DATA_BLOCK
|