asar coverage - build #273


src/asar/
File: src/asar/arch-superfx.cpp
Date: 2025-03-03 20:49:12
Lines:
180/192
93.8%
Functions:
5/5
100.0%
Branches:
733/1074
68.2%

Line Branch Exec Source
1 #include "asar.h"
2 #include "assembleblock.h"
3 #include "asar_math.h"
4
5 600 static int64_t getnum_ck(const char* math)
6 {
7
2/2
✓ Branch 0 taken 200 times.
✓ Branch 1 taken 400 times.
600 return pass == 2 ? getnum(math) : 0;
8 }
9
10 1284 static void range(int min, int mid, int max)
11 {
12
2/4
✓ Branch 0 taken 1284 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1284 times.
1284 if (mid<min || mid>max) throw_err_block(0, err_superfx_invalid_register, min, max);
13 1284 }
14
15 enum reg_t {
16 reg_parr,
17 reg_r,
18 reg_hash,
19 };
20 10332 static bool getreg(const char * par, int * reg, reg_t type)
21 {
22 int ret;
23 10332 *reg=-1;
24
8/8
✓ Branch 0 taken 3444 times.
✓ Branch 1 taken 6888 times.
✓ Branch 2 taken 1368 times.
✓ Branch 3 taken 354 times.
✓ Branch 4 taken 2736 times.
✓ Branch 5 taken 4152 times.
✓ Branch 6 taken 1368 times.
✓ Branch 7 taken 3798 times.
10332 if (type==reg_parr && *par++!='(') return false;
25
8/8
✓ Branch 0 taken 708 times.
✓ Branch 1 taken 6888 times.
✓ Branch 2 taken 198 times.
✓ Branch 3 taken 156 times.
✓ Branch 4 taken 396 times.
✓ Branch 5 taken 3756 times.
✓ Branch 6 taken 198 times.
✓ Branch 7 taken 3600 times.
7596 if (type==reg_parr && to_lower(*par++)!='r') return false;
26
8/8
✓ Branch 0 taken 4080 times.
✓ Branch 1 taken 3120 times.
✓ Branch 2 taken 930 times.
✓ Branch 3 taken 1110 times.
✓ Branch 4 taken 1860 times.
✓ Branch 5 taken 3780 times.
✓ Branch 6 taken 930 times.
✓ Branch 7 taken 2670 times.
7200 if (type==reg_r && to_lower(*par++)!='r') return false;
27
8/8
✓ Branch 0 taken 2808 times.
✓ Branch 1 taken 2532 times.
✓ Branch 2 taken 972 times.
✓ Branch 3 taken 432 times.
✓ Branch 4 taken 1944 times.
✓ Branch 5 taken 2130 times.
✓ Branch 6 taken 972 times.
✓ Branch 7 taken 1698 times.
5340 if (type==reg_hash && *par++!='#') return false;
28
2/3
✗ Branch 0 not taken.
✓ Branch 1 taken 1698 times.
✓ Branch 2 taken 1698 times.
3396 if (!is_digit(par[0])) return false;
29
4/4
✓ Branch 0 taken 600 times.
✓ Branch 1 taken 1098 times.
✓ Branch 2 taken 600 times.
✓ Branch 3 taken 1098 times.
3396 if (is_digit(par[1]))
30 {
31
4/6
✓ Branch 0 taken 600 times.
✓ Branch 1 taken 600 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 600 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 600 times.
1200 if (par[0]!='1' || par[1]>'5') return false;
32 1200 ret=par[1]-'0'+10;
33 1200 par+=2;
34 }
35 else
36 {
37 2196 ret=par[0]-'0';
38 2196 par+=1;
39 }
40
5/8
✓ Branch 0 taken 312 times.
✓ Branch 1 taken 3084 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 156 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1854 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1698 times.
3396 if (type==reg_parr && *par++!=')') return false;
41
2/3
✗ Branch 0 not taken.
✓ Branch 1 taken 1698 times.
✓ Branch 2 taken 1698 times.
3396 if (*par) return false;
42 3396 *reg=ret;
43 3396 return true;
44 }
45
46 //for LMS and SMS short addressing forms, check range & evenness
47 192 static bool check_short_addr(int num) {
48
4/8
✓ Branch 0 taken 192 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 192 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 192 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 96 times.
192 if (num % 2 > 0 || num < 0 || num > 0x1FE) {
49 throw_err_block(0, err_superfx_invalid_short_address, hex((unsigned int)num).data());
50 return false;
51 }
52 192 return true;
53 }
54
55 3654 bool asblock_superfx(char** word, int numwords)
56 {
57 #define is(test) (!stricmp(word[0], test))
58 3654 char * par= nullptr;
59
4/4
✓ Branch 0 taken 1722 times.
✓ Branch 1 taken 105 times.
✓ Branch 2 taken 1722 times.
✓ Branch 3 taken 105 times.
3654 if (word[1]) par= duplicate_string(word[1]);
60 3654 autoptr<char*> parptr=par;
61 if(0);
62 // TODO why is this called here?? refactor it and make assemblemapper static
63
2/4
✓ Branch 0 taken 3654 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 3654 times.
3654 else if (assemblemapper(word, numwords)) return true;
64
2/2
✓ Branch 0 taken 210 times.
✓ Branch 1 taken 3444 times.
3654 else if (numwords==1)
65 {
66 #define op(from, to) if (is(from)) { write1(to); return true; }
67 #define op3d(from, to) if (is(from)) { write1(0x3D); write1(to); return true; }
68 #define op3e(from, to) if (is(from)) { write1(0x3E); write1(to); return true; }
69 #define op3f(from, to) if (is(from)) { write1(0x3F); write1(to); return true; }
70
5/7
✓ Branch 0 taken 105 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 108 times.
✓ Branch 3 taken 105 times.
✓ Branch 4 taken 105 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
210 op("STOP", 0x00);
71
5/7
✓ Branch 0 taken 102 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 114 times.
✓ Branch 3 taken 102 times.
✓ Branch 4 taken 102 times.
✓ Branch 5 taken 12 times.
✗ Branch 6 not taken.
204 op("NOP", 0x01);
72
5/7
✓ Branch 0 taken 90 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 93 times.
✓ Branch 3 taken 90 times.
✓ Branch 4 taken 90 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
180 op("CACHE", 0x02);
73
5/7
✓ Branch 0 taken 87 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 90 times.
✓ Branch 3 taken 87 times.
✓ Branch 4 taken 87 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
174 op("LSR", 0x03);
74
5/7
✓ Branch 0 taken 84 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 87 times.
✓ Branch 3 taken 84 times.
✓ Branch 4 taken 84 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
168 op("ROL", 0x04);
75
5/7
✓ Branch 0 taken 81 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 84 times.
✓ Branch 3 taken 81 times.
✓ Branch 4 taken 81 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
162 op("LOOP", 0x3C);
76
5/7
✓ Branch 0 taken 78 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 81 times.
✓ Branch 3 taken 78 times.
✓ Branch 4 taken 78 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
156 op("ALT1", 0x3D);
77
5/7
✓ Branch 0 taken 75 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 78 times.
✓ Branch 3 taken 75 times.
✓ Branch 4 taken 75 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
150 op("ALT2", 0x3E);
78
5/7
✓ Branch 0 taken 72 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 75 times.
✓ Branch 3 taken 72 times.
✓ Branch 4 taken 72 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
144 op("ALT3", 0x3F);
79
5/7
✓ Branch 0 taken 69 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 72 times.
✓ Branch 3 taken 69 times.
✓ Branch 4 taken 69 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
138 op("PLOT", 0x4C);
80
5/7
✓ Branch 0 taken 66 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 69 times.
✓ Branch 3 taken 66 times.
✓ Branch 4 taken 66 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
132 op("SWAP", 0x4D);
81
5/7
✓ Branch 0 taken 63 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 66 times.
✓ Branch 3 taken 63 times.
✓ Branch 4 taken 63 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
126 op("COLOR", 0x4E);
82
5/7
✓ Branch 0 taken 60 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 63 times.
✓ Branch 3 taken 60 times.
✓ Branch 4 taken 60 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
120 op("NOT", 0x4F);
83
5/7
✓ Branch 0 taken 57 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 60 times.
✓ Branch 3 taken 57 times.
✓ Branch 4 taken 57 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
114 op("MERGE", 0x70);
84
5/7
✓ Branch 0 taken 54 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 57 times.
✓ Branch 3 taken 54 times.
✓ Branch 4 taken 54 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
108 op("SBK", 0x90);
85
5/7
✓ Branch 0 taken 51 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 54 times.
✓ Branch 3 taken 51 times.
✓ Branch 4 taken 51 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
102 op("SEX", 0x95);
86
5/7
✓ Branch 0 taken 48 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 51 times.
✓ Branch 3 taken 48 times.
✓ Branch 4 taken 48 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
96 op("ASR", 0x96);
87
5/7
✓ Branch 0 taken 45 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 48 times.
✓ Branch 3 taken 45 times.
✓ Branch 4 taken 45 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
90 op("ROR", 0x97);
88
5/7
✓ Branch 0 taken 42 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 45 times.
✓ Branch 3 taken 42 times.
✓ Branch 4 taken 42 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
84 op("LOB", 0x9E);
89
5/7
✓ Branch 0 taken 39 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 42 times.
✓ Branch 3 taken 39 times.
✓ Branch 4 taken 39 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
78 op("FMULT", 0x9F);
90
5/7
✓ Branch 0 taken 36 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 39 times.
✓ Branch 3 taken 36 times.
✓ Branch 4 taken 36 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
72 op("HIB", 0xC0);
91
5/7
✓ Branch 0 taken 33 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 36 times.
✓ Branch 3 taken 33 times.
✓ Branch 4 taken 33 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
66 op("GETC", 0xDF);
92
5/7
✓ Branch 0 taken 30 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 33 times.
✓ Branch 3 taken 30 times.
✓ Branch 4 taken 30 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
60 op("GETB", 0xEF);
93
7/9
✓ Branch 0 taken 27 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 30 times.
✓ Branch 3 taken 27 times.
✓ Branch 4 taken 27 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
54 op3d("RPIX", 0x4C);
94
7/9
✓ Branch 0 taken 24 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 27 times.
✓ Branch 3 taken 24 times.
✓ Branch 4 taken 24 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
48 op3d("CMODE", 0x4E);
95
7/9
✓ Branch 0 taken 21 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 24 times.
✓ Branch 3 taken 21 times.
✓ Branch 4 taken 21 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
42 op3d("DIV2", 0x96);
96
7/9
✓ Branch 0 taken 18 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 21 times.
✓ Branch 3 taken 18 times.
✓ Branch 4 taken 18 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
36 op3d("LMULT", 0x9F);
97
7/9
✓ Branch 0 taken 15 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 18 times.
✓ Branch 3 taken 15 times.
✓ Branch 4 taken 15 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
30 op3d("GETBH", 0xEF);
98
7/9
✓ Branch 0 taken 12 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 15 times.
✓ Branch 3 taken 12 times.
✓ Branch 4 taken 12 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
24 op3e("RAMB", 0xDF);
99
7/9
✓ Branch 0 taken 9 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
✓ Branch 3 taken 9 times.
✓ Branch 4 taken 9 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
18 op3e("GETBL", 0xEF);
100
7/9
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✓ Branch 3 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
12 op3f("ROMB", 0xDF);
101
7/9
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6 times.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 3 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
6 op3f("GETBS", 0xEF);
102 #undef op
103 #undef op3d
104 #undef op3e
105 #undef op3f
106 return false;
107 }
108
1/2
✓ Branch 0 taken 3444 times.
✗ Branch 1 not taken.
3444 else if (numwords==2)
109 {
110
2/3
✓ Branch 0 taken 1722 times.
✓ Branch 1 taken 1722 times.
✗ Branch 2 not taken.
3444 string tmp=par;
111 1722 int numwordsinner;
112 3444 autoptr<char*> parcpy= duplicate_string(par);
113
2/3
✓ Branch 0 taken 1722 times.
✓ Branch 1 taken 1722 times.
✗ Branch 2 not taken.
3444 autoptr<char**> arg=qpsplit(parcpy, ',', &numwordsinner);
114
1/2
✓ Branch 0 taken 3444 times.
✗ Branch 1 not taken.
3444 verify_paren(arg);
115 3444 bool ret=false;
116 #define ok() ret=true
117 #define op(op) if (is(op)) ok()
118 #define w3d(val) ,write1(0x3D) w(val)
119 #define w3e(val) ,write1(0x3E) w(val)
120 #define w3f(val) ,write1(0x3F) w(val)
121
2/2
✓ Branch 0 taken 2808 times.
✓ Branch 1 taken 636 times.
3444 if (numwordsinner ==1)
122 {
123 #define w(val) ,write1((unsigned int)(val+reg))
124 #define reg_range(min, max) ,range(min, reg, max)
125 1404 int reg;
126
2/2
✓ Branch 0 taken 1572 times.
✓ Branch 1 taken 1236 times.
2808 if (getreg(par, &reg, reg_r))
127 {
128
5/7
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 834 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 48 times.
✗ Branch 6 not taken.
1572 op("TO") w(0x10);
129
5/7
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 834 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 48 times.
✗ Branch 6 not taken.
1572 op("WITH") w(0x20);
130
5/7
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 834 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 48 times.
✗ Branch 6 not taken.
1572 op("ADD") w(0x50);
131
5/7
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 834 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 48 times.
✗ Branch 6 not taken.
1572 op("SUB") w(0x60);
132
7/9
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 831 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 45 times.
✓ Branch 6 taken 45 times.
✓ Branch 7 taken 45 times.
✗ Branch 8 not taken.
1572 op("AND") reg_range(1, 15) w(0x70);
133
5/7
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 834 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 48 times.
✗ Branch 6 not taken.
1572 op("MULT") w(0x80);
134
7/9
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 804 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 18 times.
✓ Branch 6 taken 18 times.
✓ Branch 7 taken 18 times.
✗ Branch 8 not taken.
1572 op("JMP") reg_range(8, 13) w(0x90);
135
5/7
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 834 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 48 times.
✗ Branch 6 not taken.
1572 op("FROM") w(0xB0);
136
7/9
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 831 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 45 times.
✓ Branch 6 taken 45 times.
✓ Branch 7 taken 45 times.
✗ Branch 8 not taken.
1572 op("OR") reg_range(1, 15) w(0xC0);
137
7/9
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 831 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 45 times.
✓ Branch 6 taken 45 times.
✓ Branch 7 taken 45 times.
✗ Branch 8 not taken.
1572 op("INC") reg_range(0, 14) w(0xD0);
138
7/9
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 831 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 45 times.
✓ Branch 6 taken 45 times.
✓ Branch 7 taken 45 times.
✗ Branch 8 not taken.
1572 op("DEC") reg_range(0, 14) w(0xE0);
139
140
7/9
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 834 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 48 times.
✓ Branch 6 taken 48 times.
✓ Branch 7 taken 48 times.
✗ Branch 8 not taken.
1572 op("ADC") w3d(0x50);
141
7/9
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 834 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 48 times.
✓ Branch 6 taken 48 times.
✓ Branch 7 taken 48 times.
✗ Branch 8 not taken.
1572 op("SBC") w3d(0x60);
142
9/11
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 831 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 45 times.
✓ Branch 6 taken 45 times.
✓ Branch 7 taken 45 times.
✓ Branch 8 taken 45 times.
✓ Branch 9 taken 45 times.
✗ Branch 10 not taken.
1572 op("BIC") reg_range(1, 15) w3d(0x70);
143
7/9
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 834 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 48 times.
✓ Branch 6 taken 48 times.
✓ Branch 7 taken 48 times.
✗ Branch 8 not taken.
1572 op("UMULT") w3d(0x80);
144
9/11
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 804 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 18 times.
✓ Branch 6 taken 18 times.
✓ Branch 7 taken 18 times.
✓ Branch 8 taken 18 times.
✓ Branch 9 taken 18 times.
✗ Branch 10 not taken.
1572 op("LJMP") reg_range(8, 13) w3d(0x90);
145
9/11
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 831 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 45 times.
✓ Branch 6 taken 45 times.
✓ Branch 7 taken 45 times.
✓ Branch 8 taken 45 times.
✓ Branch 9 taken 45 times.
✗ Branch 10 not taken.
1572 op("XOR") reg_range(1, 15) w3d(0xC0);
146
147
7/9
✓ Branch 0 taken 786 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 834 times.
✓ Branch 3 taken 786 times.
✓ Branch 4 taken 786 times.
✓ Branch 5 taken 48 times.
✓ Branch 6 taken 48 times.
✓ Branch 7 taken 48 times.
✗ Branch 8 not taken.
1572 op("CMP") w3f(0x60);
148 }
149
2/2
✓ Branch 0 taken 864 times.
✓ Branch 1 taken 1944 times.
2808 if (getreg(par, &reg, reg_hash))
150 {
151
7/9
✓ Branch 0 taken 432 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 444 times.
✓ Branch 3 taken 432 times.
✓ Branch 4 taken 432 times.
✓ Branch 5 taken 12 times.
✓ Branch 6 taken 12 times.
✓ Branch 7 taken 12 times.
✗ Branch 8 not taken.
864 op("LINK") reg_range(1, 4) w(0x90);
152
153
7/9
✓ Branch 0 taken 432 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 480 times.
✓ Branch 3 taken 432 times.
✓ Branch 4 taken 432 times.
✓ Branch 5 taken 48 times.
✓ Branch 6 taken 48 times.
✓ Branch 7 taken 48 times.
✗ Branch 8 not taken.
864 op("ADD") w3e(0x50);
154
7/9
✓ Branch 0 taken 432 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 480 times.
✓ Branch 3 taken 432 times.
✓ Branch 4 taken 432 times.
✓ Branch 5 taken 48 times.
✓ Branch 6 taken 48 times.
✓ Branch 7 taken 48 times.
✗ Branch 8 not taken.
864 op("SUB") w3e(0x60);
155
9/11
✓ Branch 0 taken 432 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 477 times.
✓ Branch 3 taken 432 times.
✓ Branch 4 taken 432 times.
✓ Branch 5 taken 45 times.
✓ Branch 6 taken 45 times.
✓ Branch 7 taken 45 times.
✓ Branch 8 taken 45 times.
✓ Branch 9 taken 45 times.
✗ Branch 10 not taken.
864 op("AND") reg_range(1, 15) w3e(0x70);
156
7/9
✓ Branch 0 taken 432 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 480 times.
✓ Branch 3 taken 432 times.
✓ Branch 4 taken 432 times.
✓ Branch 5 taken 48 times.
✓ Branch 6 taken 48 times.
✓ Branch 7 taken 48 times.
✗ Branch 8 not taken.
864 op("MULT") w3e(0x80);
157
9/11
✓ Branch 0 taken 432 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 477 times.
✓ Branch 3 taken 432 times.
✓ Branch 4 taken 432 times.
✓ Branch 5 taken 45 times.
✓ Branch 6 taken 45 times.
✓ Branch 7 taken 45 times.
✓ Branch 8 taken 45 times.
✓ Branch 9 taken 45 times.
✗ Branch 10 not taken.
864 op("OR") reg_range(1, 15) w3e(0xC0);
158
159
7/9
✓ Branch 0 taken 432 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 480 times.
✓ Branch 3 taken 432 times.
✓ Branch 4 taken 432 times.
✓ Branch 5 taken 48 times.
✓ Branch 6 taken 48 times.
✓ Branch 7 taken 48 times.
✗ Branch 8 not taken.
864 op("ADC") w3f(0x50);
160
9/11
✓ Branch 0 taken 432 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 477 times.
✓ Branch 3 taken 432 times.
✓ Branch 4 taken 432 times.
✓ Branch 5 taken 45 times.
✓ Branch 6 taken 45 times.
✓ Branch 7 taken 45 times.
✓ Branch 8 taken 45 times.
✓ Branch 9 taken 45 times.
✗ Branch 10 not taken.
864 op("BIC") reg_range(1, 15) w3f(0x70);
161
7/9
✓ Branch 0 taken 432 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 480 times.
✓ Branch 3 taken 432 times.
✓ Branch 4 taken 432 times.
✓ Branch 5 taken 48 times.
✓ Branch 6 taken 48 times.
✓ Branch 7 taken 48 times.
✗ Branch 8 not taken.
864 op("UMULT") w3f(0x80);
162
9/11
✓ Branch 0 taken 432 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 477 times.
✓ Branch 3 taken 432 times.
✓ Branch 4 taken 432 times.
✓ Branch 5 taken 45 times.
✓ Branch 6 taken 45 times.
✓ Branch 7 taken 45 times.
✓ Branch 8 taken 45 times.
✓ Branch 9 taken 45 times.
✗ Branch 10 not taken.
864 op("XOR") reg_range(1, 15) w3f(0xC0);
163 }
164
2/2
✓ Branch 0 taken 288 times.
✓ Branch 1 taken 2520 times.
2808 if (getreg(par, &reg, reg_parr))
165 {
166
7/9
✓ Branch 0 taken 144 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 180 times.
✓ Branch 3 taken 144 times.
✓ Branch 4 taken 144 times.
✓ Branch 5 taken 36 times.
✓ Branch 6 taken 36 times.
✓ Branch 7 taken 36 times.
✗ Branch 8 not taken.
288 op("STW") reg_range(0, 11) w(0x30);
167
7/9
✓ Branch 0 taken 144 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 180 times.
✓ Branch 3 taken 144 times.
✓ Branch 4 taken 144 times.
✓ Branch 5 taken 36 times.
✓ Branch 6 taken 36 times.
✓ Branch 7 taken 36 times.
✗ Branch 8 not taken.
288 op("LDW") reg_range(0, 11) w(0x40);
168
9/11
✓ Branch 0 taken 144 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 180 times.
✓ Branch 3 taken 144 times.
✓ Branch 4 taken 144 times.
✓ Branch 5 taken 36 times.
✓ Branch 6 taken 36 times.
✓ Branch 7 taken 36 times.
✓ Branch 8 taken 36 times.
✓ Branch 9 taken 36 times.
✗ Branch 10 not taken.
288 op("STB") reg_range(0, 11) w3d(0x30);
169
9/11
✓ Branch 0 taken 144 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 180 times.
✓ Branch 3 taken 144 times.
✓ Branch 4 taken 144 times.
✓ Branch 5 taken 36 times.
✓ Branch 6 taken 36 times.
✓ Branch 7 taken 36 times.
✓ Branch 8 taken 36 times.
✓ Branch 9 taken 36 times.
✗ Branch 10 not taken.
288 op("LDB") reg_range(0, 11) w3d(0x40);
170 }
171 #undef w
172 #undef reg_range
173 2808 int byte=-1;
174 #define br(name, val) if (is(name)) byte=val;
175
4/5
✓ Branch 0 taken 1404 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1407 times.
✓ Branch 3 taken 1404 times.
✓ Branch 4 taken 1401 times.
2808 br("BRA", 0x05);
176
4/5
✓ Branch 0 taken 1404 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1407 times.
✓ Branch 3 taken 1404 times.
✓ Branch 4 taken 1401 times.
2808 br("BGE", 0x06);
177
4/5
✓ Branch 0 taken 1404 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1407 times.
✓ Branch 3 taken 1404 times.
✓ Branch 4 taken 1401 times.
2808 br("BLT", 0x07);
178
4/5
✓ Branch 0 taken 1404 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1407 times.
✓ Branch 3 taken 1404 times.
✓ Branch 4 taken 1401 times.
2808 br("BNE", 0x08);
179
4/5
✓ Branch 0 taken 1404 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1407 times.
✓ Branch 3 taken 1404 times.
✓ Branch 4 taken 1401 times.
2808 br("BEQ", 0x09);
180
4/5
✓ Branch 0 taken 1404 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1407 times.
✓ Branch 3 taken 1404 times.
✓ Branch 4 taken 1401 times.
2808 br("BPL", 0x0A);
181
4/5
✓ Branch 0 taken 1404 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1407 times.
✓ Branch 3 taken 1404 times.
✓ Branch 4 taken 1401 times.
2808 br("BMI", 0x0B);
182
4/5
✓ Branch 0 taken 1404 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1407 times.
✓ Branch 3 taken 1404 times.
✓ Branch 4 taken 1401 times.
2808 br("BCC", 0x0C);
183
4/5
✓ Branch 0 taken 1404 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1407 times.
✓ Branch 3 taken 1404 times.
✓ Branch 4 taken 1401 times.
2808 br("BCS", 0x0D);
184
4/5
✓ Branch 0 taken 1404 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1407 times.
✓ Branch 3 taken 1404 times.
✓ Branch 4 taken 1401 times.
2808 br("BVC", 0x0E);
185
4/5
✓ Branch 0 taken 1404 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1407 times.
✓ Branch 3 taken 1404 times.
✓ Branch 4 taken 1401 times.
2808 br("BVS", 0x0F);
186 #undef br
187
2/2
✓ Branch 0 taken 66 times.
✓ Branch 1 taken 2742 times.
2808 if (byte!=-1)
188 {
189 66 ret=true;
190
2/3
✓ Branch 0 taken 33 times.
✓ Branch 1 taken 33 times.
✗ Branch 2 not taken.
66 auto par_expr = parse_math_expr(par);
191
2/4
✓ Branch 0 taken 33 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 33 times.
✗ Branch 3 not taken.
66 int len = par_expr->get_len(false);
192
16/27
✓ Branch 0 taken 22 times.
✓ Branch 1 taken 44 times.
✓ Branch 2 taken 11 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 11 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 22 times.
✓ Branch 7 taken 22 times.
✓ Branch 8 taken 11 times.
✓ Branch 9 taken 33 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 11 times.
✓ Branch 12 taken 22 times.
✓ Branch 13 taken 11 times.
✓ Branch 14 taken 22 times.
✓ Branch 15 taken 11 times.
✓ Branch 16 taken 22 times.
✓ Branch 17 taken 11 times.
✓ Branch 18 taken 22 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
88 unsigned int num = pass == 2 ? par_expr->evaluate().get_integer() : 0;
193
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 66 times.
66 if (len==1)
194 {
195 write1((unsigned int)byte); write1(num);
196 }
197 else
198 {
199 66 int pos = (int)num - ((snespos&0xFFFFFF)+2);
200
2/4
✓ Branch 0 taken 66 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 66 times.
✗ Branch 3 not taken.
66 write1((unsigned int)byte); write1((unsigned int)pos);
201
4/6
✓ Branch 0 taken 22 times.
✓ Branch 1 taken 44 times.
✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 22 times.
66 if (pass==2 && (pos<-128 || pos>127))
202 {
203 throw_err_block(2, err_relative_branch_out_of_bounds, dec(pos).data());
204 }
205 }
206 66 }
207 }
208
2/2
✓ Branch 0 taken 636 times.
✓ Branch 1 taken 2808 times.
3444 if (numwordsinner==2)
209 {
210 #define w(val) ,write1((unsigned int)(val))
211 636 int reg1; bool isreg1=getreg(arg[0], &reg1, reg_r);
212 636 int reg2; bool isreg2=getreg(arg[1], &reg2, reg_r);
213
2/2
✓ Branch 0 taken 426 times.
✓ Branch 1 taken 210 times.
636 if (isreg1)
214 {
215
2/2
✓ Branch 0 taken 12 times.
✓ Branch 1 taken 414 times.
426 if (isreg2)
216 {
217
7/9
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✓ Branch 3 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
12 op("MOVE") w(0x20+reg2) w(0x10+reg1);
218
7/9
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✓ Branch 3 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
12 op("MOVES") w(0x20+reg1) w(0xB0+reg2);
219 }
220
4/4
✓ Branch 0 taken 99 times.
✓ Branch 1 taken 114 times.
✓ Branch 2 taken 99 times.
✓ Branch 3 taken 114 times.
426 if (arg[1][0]=='#')
221 {
222
2/4
✓ Branch 0 taken 99 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 99 times.
✗ Branch 3 not taken.
198 unsigned int num=getnum_ck(arg[1]+1);
223 198 num&=0xFFFF;
224
7/9
✓ Branch 0 taken 99 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 147 times.
✓ Branch 3 taken 99 times.
✓ Branch 4 taken 99 times.
✓ Branch 5 taken 48 times.
✓ Branch 6 taken 48 times.
✓ Branch 7 taken 48 times.
✗ Branch 8 not taken.
198 op("IBT") w(0xA0+reg1) w(num);
225
9/11
✓ Branch 0 taken 99 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 147 times.
✓ Branch 3 taken 99 times.
✓ Branch 4 taken 99 times.
✓ Branch 5 taken 48 times.
✓ Branch 6 taken 48 times.
✓ Branch 7 taken 48 times.
✓ Branch 8 taken 48 times.
✓ Branch 9 taken 48 times.
✗ Branch 10 not taken.
198 op("IWT") w(0xF0+reg1) w(num) w(num>>8);
226
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 198 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
198 if (num<0x80 || num>=0xFF80)
227 {
228
7/9
✓ Branch 0 taken 99 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 102 times.
✓ Branch 3 taken 99 times.
✓ Branch 4 taken 99 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
198 op("MOVE") w(0xA0+reg1) w(num);
229 }
230 else
231 {
232 op("MOVE") w(0xF0+reg1) w(num) w(num>>8);
233 }
234 }
235
4/4
✓ Branch 0 taken 6 times.
✓ Branch 1 taken 207 times.
✓ Branch 2 taken 6 times.
✓ Branch 3 taken 207 times.
426 if (getreg(arg[1], &reg2, reg_parr))
236 {
237
1/2
✓ Branch 0 taken 12 times.
✗ Branch 1 not taken.
12 if (reg1==0)
238 {
239
7/9
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✓ Branch 3 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
12 op("MOVEB") w(0x3D) w(0x40+reg2);
240
5/7
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✓ Branch 3 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
12 op("MOVEW") w(0x40+reg2);
241 }
242 else
243 {
244 op("MOVEB") w(0x10+reg1) w(0x3D) w(0x40+reg2);
245 op("MOVEW") w(0x10+reg1) w(0x40+reg2);
246 }
247 }
248
4/4
✓ Branch 0 taken 99 times.
✓ Branch 1 taken 108 times.
✓ Branch 2 taken 99 times.
✓ Branch 3 taken 108 times.
414 else if (arg[1][0]=='(')
249 {
250
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 99 times.
198 char * endpar=strchr(arg[1], ')');
251
3/6
✓ Branch 0 taken 198 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 99 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 99 times.
198 if (!endpar || endpar[1]) return false;
252
2/4
✓ Branch 0 taken 99 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 99 times.
✗ Branch 3 not taken.
198 unsigned int num=getnum_ck(arg[1]);
253
11/13
✓ Branch 0 taken 99 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 147 times.
✓ Branch 3 taken 99 times.
✓ Branch 4 taken 99 times.
✓ Branch 5 taken 48 times.
✓ Branch 6 taken 48 times.
✓ Branch 7 taken 48 times.
✓ Branch 8 taken 48 times.
✓ Branch 9 taken 48 times.
✓ Branch 10 taken 48 times.
✓ Branch 11 taken 48 times.
✗ Branch 12 not taken.
198 op("LM") w(0x3D) w(0xF0+reg1) w(num) w(num>>8);
254
255
4/5
✓ Branch 0 taken 99 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 147 times.
✓ Branch 3 taken 99 times.
✓ Branch 4 taken 51 times.
198 if (is("LMS")) {
256 96 ok();
257
2/4
✓ Branch 0 taken 96 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 96 times.
✗ Branch 3 not taken.
96 if (check_short_addr((int)num))
258 {
259
3/6
✓ Branch 0 taken 96 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 96 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 96 times.
✗ Branch 5 not taken.
96 ok() w(0x3D) w(0xA0+reg1) w(num>>1);
260 }
261 }
262
263
2/4
✓ Branch 0 taken 198 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 198 times.
198 if (num&1 || num>=0x200)
264 {
265 op("MOVE") w(0x3D) w(0xF0+reg1) w(num) w(num>>8);
266 }
267 else
268 {
269
9/11
✓ Branch 0 taken 99 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 102 times.
✓ Branch 3 taken 99 times.
✓ Branch 4 taken 99 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 3 times.
✓ Branch 8 taken 3 times.
✓ Branch 9 taken 3 times.
✗ Branch 10 not taken.
198 op("MOVE") w(0x3D) w(0xA0+reg1) w(num);
270 }
271 }
272
4/5
✓ Branch 0 taken 213 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 216 times.
✓ Branch 3 taken 213 times.
✓ Branch 4 taken 210 times.
426 if (is("LEA"))
273 {
274
2/4
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
6 unsigned int num=getnum_ck(arg[1]);
275
3/6
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 6 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
6 ok() w(0xF0+reg1) w(num) w(num>>8);
276 }
277 }
278
1/2
✓ Branch 0 taken 210 times.
✗ Branch 1 not taken.
210 else if (isreg2)
279 {
280
3/3
✓ Branch 0 taken 6 times.
✓ Branch 1 taken 105 times.
✓ Branch 2 taken 99 times.
210 if (getreg(arg[0], &reg1, reg_parr))
281 {
282
1/2
✓ Branch 0 taken 12 times.
✗ Branch 1 not taken.
12 if (reg1==0)
283 {
284
7/9
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✓ Branch 3 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 3 times.
✗ Branch 8 not taken.
12 op("MOVEB") w(0x3D) w(0x30+reg2);
285
5/7
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 9 times.
✓ Branch 3 taken 6 times.
✓ Branch 4 taken 6 times.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
12 op("MOVEW") w(0x30+reg2);
286 }
287 else
288 {
289 op("MOVEB") w(0xB0+reg1) w(0x3D) w(0x30+reg2);
290 op("MOVEW") w(0xB0+reg1) w(0x30+reg2);
291 }
292 }
293
2/4
✓ Branch 0 taken 99 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 99 times.
✗ Branch 3 not taken.
198 else if (arg[0][0]=='(')
294 {
295
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 99 times.
198 char * endpar=strchr(arg[0], ')');
296
3/6
✓ Branch 0 taken 198 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 99 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 99 times.
198 if (!endpar || endpar[1]) return false;
297
2/3
✓ Branch 0 taken 99 times.
✓ Branch 1 taken 99 times.
✗ Branch 2 not taken.
198 unsigned int num=getnum_ck(arg[0]);
298
11/13
✓ Branch 0 taken 99 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 147 times.
✓ Branch 3 taken 99 times.
✓ Branch 4 taken 99 times.
✓ Branch 5 taken 48 times.
✓ Branch 6 taken 48 times.
✓ Branch 7 taken 48 times.
✓ Branch 8 taken 48 times.
✓ Branch 9 taken 48 times.
✓ Branch 10 taken 48 times.
✓ Branch 11 taken 48 times.
✗ Branch 12 not taken.
198 op("SM") w(0x3E) w(0xF0+reg2) w(num) w(num>>8);
299
300
4/5
✓ Branch 0 taken 99 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 147 times.
✓ Branch 3 taken 99 times.
✓ Branch 4 taken 51 times.
198 if (is("SMS"))
301 {
302 96 ok();
303
2/4
✓ Branch 0 taken 96 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 96 times.
✗ Branch 3 not taken.
96 if (check_short_addr((int)num))
304 {
305
3/6
✓ Branch 0 taken 96 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 96 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 96 times.
✗ Branch 5 not taken.
96 ok() w(0x3E) w(0xA0+reg2) w(num>>1);
306 }
307 }
308
309
2/4
✓ Branch 0 taken 198 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 198 times.
198 if (num&1 || num>=0x200)
310 {
311 op("MOVE") w(0x3E) w(0xF0+reg2) w(num) w(num>>8);
312 }
313 else
314 {
315
9/11
✓ Branch 0 taken 99 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 102 times.
✓ Branch 3 taken 99 times.
✓ Branch 4 taken 99 times.
✓ Branch 5 taken 3 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 3 times.
✓ Branch 8 taken 3 times.
✓ Branch 9 taken 3 times.
✗ Branch 10 not taken.
198 op("MOVE") w(0x3E) w(0xA0+reg2) w(num);
316 }
317 }
318 }
319 }
320 #undef ok
321 #undef op
322 #undef w3d
323 #undef w3e
324 #undef w3f
325 3444 return ret;
326 3444 }
327 return false;
328 3676 }
329