8 # | B | I | IS | C | SC | note
9 -------+-------+-------+-------+-------+-------+-------------------------------
10 00 | | | | | | senseless
12 02 | | | | x | | senseless ?
14 04 | | | x | | | missing base ?
15 05 | | | x | | x | missing base ?
16 06 | | | x | x | | missing base ?
17 07 | | | x | x | x | missing base ?
18 08 | | x | | | | missing base
19 09 | | x | | | x | missing base
20 10 | | x | | x | | missing base
21 11 | | x | | x | x | missing base
22 12 | | x | x | | | impossible
23 13 | | x | x | | x | impossible
24 14 | | x | x | x | | impossible
25 15 | | x | x | x | x | impossible
33 23 | x | | x | x | x |
37 27 | x | x | | x | x |
38 28 | x | x | x | | | impossible
39 29 | x | x | x | | x | impossible
40 30 | x | x | x | x | | impossible
41 31 | x | x | x | x | x | impossible
47 int main(int argc, char **argv)
52 /* Source address modes */
64 void load_16(char* base)
69 void load_17(int base)
74 void load_18(char* base)
79 void load_19(int base)
84 void load_20_add(char* base, int index)
89 void load_20_shift(char* base, int index)
94 void load_21_add(int base, int index)
96 c = sc[base + 2 * index];
99 void load_21_shift(int base, int index)
101 c = sc[base + 4 * index];
104 void load_22_add(char* base, int index)
106 c = base[2 * index + 1];
109 void load_22_shift(char* base, int index)
111 c = base[4 * index + 1];
114 void load_23_add(int base, int index)
116 c = sc[base + 2 * index + 1];
119 void load_23_shift(int base, int index)
121 c = sc[base + 4 * index + 1];
124 void load_24(char* base, int index)
129 void load_25(int base, int index)
131 c = sc[base + index];
134 void load_26(char* base, int index)
139 void load_27(int base, int index)
141 c = sc[base + index + 1];
144 /* Destination address modes */
156 void store_16(char* base)
161 void store_17(int base)
166 void store_18(char* base)
171 void store_19(int base)
176 void store_20_add(char* base, int index)
181 void store_20_shift(char* base, int index)
186 void store_21_add(int base, int index)
188 sc[base + 2 * index] = c;
191 void store_21_shift(int base, int index)
193 sc[base + 4 * index] = c;
196 void store_22_add(char* base, int index)
198 base[2 * index + 1] = c;
201 void store_22_shift(char* base, int index)
203 base[4 * index + 1] = c;
206 void store_23_add(int base, int index)
208 sc[base + 2 * index + 1] = c;
211 void store_23_shift(int base, int index)
213 sc[base + 4 * index + 1] = c;
216 void store_24(char* base, int index)
221 void store_25(int base, int index)
223 sc[base + index] = c;
226 void store_26(char* base, int index)
231 void store_27(int base, int index)
233 sc[base + index + 1] = c;