jb302@1
|
1 {
|
jb302@1
|
2 "metadata": {
|
jb302@1
|
3 "name": "gen_language"
|
jb302@1
|
4 },
|
jb302@1
|
5 "nbformat": 3,
|
jb302@1
|
6 "nbformat_minor": 0,
|
jb302@1
|
7 "worksheets": [
|
jb302@1
|
8 {
|
jb302@1
|
9 "cells": [
|
jb302@1
|
10 {
|
jb302@1
|
11 "cell_type": "code",
|
jb302@1
|
12 "collapsed": false,
|
jb302@1
|
13 "input": [
|
jb302@1
|
14 "from pprint import pprint\n",
|
jb302@1
|
15 "import sys\n",
|
jb302@1
|
16 "sys.path.append('../assembler')\n",
|
jb302@1
|
17 "from assembler import *\n",
|
jb302@14
|
18 "f = open('iset.csv', 'r')\n",
|
jb302@1
|
19 "\n",
|
jb302@1
|
20 "codes = []\n",
|
jb302@14
|
21 "lang = []\n",
|
jb302@14
|
22 "for line in f:\n",
|
jb302@14
|
23 " line = line.split(';')\n",
|
jb302@14
|
24 " codes.append(int(line[0]))\n",
|
jb302@14
|
25 " statement = line[1].strip().lower().split()\n",
|
jb302@14
|
26 " mnemonic = statement[0]\n",
|
jb302@14
|
27 " arguments = ''.join(statement[1:]).split(',')\n",
|
jb302@14
|
28 " lang.append([mnemonic, arguments])\n",
|
jb302@14
|
29 " \n",
|
jb302@14
|
30 "#pprint(lang) \n"
|
jb302@1
|
31 ],
|
jb302@1
|
32 "language": "python",
|
jb302@1
|
33 "metadata": {},
|
jb302@18
|
34 "outputs": []
|
jb302@1
|
35 },
|
jb302@1
|
36 {
|
jb302@1
|
37 "cell_type": "code",
|
jb302@1
|
38 "collapsed": false,
|
jb302@1
|
39 "input": [
|
jb302@14
|
40 "consts = { 'addr11':1, 'addr16':2, '@addr16':2, 'vect8':1, '#data8':1, 'port_addr':1, 'rel8':1, '#data16':2}\n",
|
jb302@14
|
41 "labelable = ('addr11', 'addr16', 'rel8')\n",
|
jb302@14
|
42 "\n",
|
jb302@1
|
43 "mne_syms = []\n",
|
jb302@1
|
44 "arg_syms = []\n",
|
jb302@1
|
45 "for line in lang:\n",
|
jb302@1
|
46 " mne_syms.append(line[0])\n",
|
jb302@1
|
47 " arg_syms.extend(line[1])\n",
|
jb302@1
|
48 "mne_set = set(mne_syms)\n",
|
jb302@1
|
49 "arg_set = set(arg_syms)\n",
|
jb302@1
|
50 "\n",
|
jb302@1
|
51 "iset = {}\n",
|
jb302@1
|
52 "for mne in mne_set:\n",
|
jb302@1
|
53 " i = 0\n",
|
jb302@1
|
54 " valid_args = {}\n",
|
jb302@1
|
55 " for line in lang:\n",
|
jb302@14
|
56 " args = []\n",
|
jb302@1
|
57 " if line[0] == mne:\n",
|
jb302@14
|
58 " width = 1\n",
|
jb302@14
|
59 " for a in line[1]:\n",
|
jb302@14
|
60 " if a in consts:\n",
|
jb302@14
|
61 " width = width + consts[a]\n",
|
jb302@14
|
62 " valid_args.update({tuple(line[1]):[int(codes[i]), width]})\n",
|
jb302@14
|
63 " \n",
|
jb302@18
|
64 " found_label = 0\n",
|
jb302@14
|
65 " for a in line[1]:\n",
|
jb302@14
|
66 " if a in labelable:\n",
|
jb302@14
|
67 " found_label = 1\n",
|
jb302@14
|
68 " args.append('label')\n",
|
jb302@18
|
69 " elif a == '@addr16':\n",
|
jb302@18
|
70 " found_label = 1\n",
|
jb302@18
|
71 " args.append('@label')\n",
|
jb302@14
|
72 " else:\n",
|
jb302@14
|
73 " args.append(a)\n",
|
jb302@14
|
74 " if found_label:\n",
|
jb302@14
|
75 " valid_args.update({tuple(args):[int(codes[i]), width]})\n",
|
jb302@14
|
76 " \n",
|
jb302@1
|
77 " i = i + 1\n",
|
jb302@1
|
78 " iset.update({mne:valid_args})\n",
|
jb302@18
|
79 "pprint(iset, indent=5)\n"
|
jb302@1
|
80 ],
|
jb302@1
|
81 "language": "python",
|
jb302@1
|
82 "metadata": {},
|
jb302@18
|
83 "outputs": [
|
jb302@18
|
84 {
|
jb302@18
|
85 "output_type": "stream",
|
jb302@18
|
86 "stream": "stdout",
|
jb302@18
|
87 "text": [
|
jb302@18
|
88 "{ 'add': { ('a', '#data8'): [166, 2],\n",
|
jb302@18
|
89 " ('a', '@dptr'): [167, 1],\n",
|
jb302@18
|
90 " ('a', 'dph'): [164, 1],\n",
|
jb302@18
|
91 " ('a', 'dpl'): [165, 1],\n",
|
jb302@18
|
92 " ('a', 'r0'): [160, 1],\n",
|
jb302@18
|
93 " ('a', 'r1'): [161, 1],\n",
|
jb302@18
|
94 " ('a', 'r2'): [162, 1],\n",
|
jb302@18
|
95 " ('a', 'r3'): [163, 1]},\n",
|
jb302@18
|
96 " 'addc': { ('a', '#data8'): [174, 2],\n",
|
jb302@18
|
97 " ('a', '@dptr'): [175, 1],\n",
|
jb302@18
|
98 " ('a', 'dph'): [172, 1],\n",
|
jb302@18
|
99 " ('a', 'dpl'): [173, 1],\n",
|
jb302@18
|
100 " ('a', 'r0'): [168, 1],\n",
|
jb302@18
|
101 " ('a', 'r1'): [169, 1],\n",
|
jb302@18
|
102 " ('a', 'r2'): [170, 1],\n",
|
jb302@18
|
103 " ('a', 'r3'): [171, 1]},\n",
|
jb302@18
|
104 " 'anl': { ('a', '#data8'): [134, 2],\n",
|
jb302@18
|
105 " ('a', '@dptr'): [135, 1],\n",
|
jb302@18
|
106 " ('a', 'dph'): [132, 1],\n",
|
jb302@18
|
107 " ('a', 'dpl'): [133, 1],\n",
|
jb302@18
|
108 " ('a', 'r0'): [128, 1],\n",
|
jb302@18
|
109 " ('a', 'r1'): [129, 1],\n",
|
jb302@18
|
110 " ('a', 'r2'): [130, 1],\n",
|
jb302@18
|
111 " ('a', 'r3'): [131, 1]},\n",
|
jb302@18
|
112 " 'cjne': { ('a', '#data8', 'label'): [223, 3],\n",
|
jb302@18
|
113 " ('a', '#data8', 'rel8'): [223, 3],\n",
|
jb302@18
|
114 " ('r0', '#data', 'label'): [212, 2],\n",
|
jb302@18
|
115 " ('r0', '#data', 'rel8'): [212, 2],\n",
|
jb302@18
|
116 " ('r1', '#data', 'label'): [213, 2],\n",
|
jb302@18
|
117 " ('r1', '#data', 'rel8'): [213, 2],\n",
|
jb302@18
|
118 " ('r2', '#data', 'label'): [214, 2],\n",
|
jb302@18
|
119 " ('r2', '#data', 'rel8'): [214, 2],\n",
|
jb302@18
|
120 " ('r3', '#data', 'label'): [215, 2],\n",
|
jb302@18
|
121 " ('r3', '#data', 'rel8'): [215, 2]},\n",
|
jb302@18
|
122 " 'clr': { ('bs',): [11, 1], ('c',): [9, 1], ('ie',): [13, 1]},\n",
|
jb302@18
|
123 " 'cpl': { ('a',): [15, 1], ('c',): [14, 1]},\n",
|
jb302@18
|
124 " 'da': { ('a',): [250, 1]},\n",
|
jb302@18
|
125 " 'dec': { ('a',): [159, 1], ('dptr',): [157, 1]},\n",
|
jb302@18
|
126 " 'div': { ('r0', 'r1'): [249, 1]},\n",
|
jb302@18
|
127 " 'djnz': { ('r0', 'label'): [208, 2],\n",
|
jb302@18
|
128 " ('r0', 'rel8'): [208, 2],\n",
|
jb302@18
|
129 " ('r1', 'label'): [209, 2],\n",
|
jb302@18
|
130 " ('r1', 'rel8'): [209, 2],\n",
|
jb302@18
|
131 " ('r2', 'label'): [210, 2],\n",
|
jb302@18
|
132 " ('r2', 'rel8'): [210, 2],\n",
|
jb302@18
|
133 " ('r3', 'label'): [211, 2],\n",
|
jb302@18
|
134 " ('r3', 'rel8'): [211, 2]},\n",
|
jb302@18
|
135 " 'hlt': { ('',): [255, 1]},\n",
|
jb302@18
|
136 " 'in': { ('a', 'port_addr'): [252, 2]},\n",
|
jb302@18
|
137 " 'inc': { ('a',): [158, 1], ('dptr',): [156, 1]},\n",
|
jb302@18
|
138 " 'int': { ('vect8',): [254, 2]},\n",
|
jb302@18
|
139 " 'jc': { ('label',): [226, 2], ('rel8',): [226, 2]},\n",
|
jb302@18
|
140 " 'jmp': { ('@a+dptr',): [221, 1], ('@dptr',): [222, 1]},\n",
|
jb302@18
|
141 " 'jnc': { ('label',): [227, 2], ('rel8',): [227, 2]},\n",
|
jb302@18
|
142 " 'jns': { ('label',): [231, 2], ('rel8',): [231, 2]},\n",
|
jb302@18
|
143 " 'jnz': { ('label',): [225, 2], ('rel8',): [225, 2]},\n",
|
jb302@18
|
144 " 'jpe': { ('label',): [229, 2], ('rel8',): [229, 2]},\n",
|
jb302@18
|
145 " 'jpo': { ('label',): [228, 2], ('rel8',): [228, 2]},\n",
|
jb302@18
|
146 " 'js': { ('label',): [230, 2], ('rel8',): [230, 2]},\n",
|
jb302@18
|
147 " 'jz': { ('label',): [224, 2], ('rel8',): [224, 2]},\n",
|
jb302@18
|
148 " 'laf': { ('',): [18, 1]},\n",
|
jb302@18
|
149 " 'lcall': { ('addr16',): [217, 3], ('label',): [217, 3]},\n",
|
jb302@18
|
150 " 'ljmp': { ('addr16',): [216, 3], ('label',): [216, 3]},\n",
|
jb302@18
|
151 " 'mov': { ('@addr16', 'a'): [29, 3],\n",
|
jb302@18
|
152 " ('@dptr', 'a'): [31, 1],\n",
|
jb302@18
|
153 " ('@dptr', 'dph'): [36, 1],\n",
|
jb302@18
|
154 " ('@dptr', 'dpl'): [37, 1],\n",
|
jb302@18
|
155 " ('@dptr', 'r0'): [32, 1],\n",
|
jb302@18
|
156 " ('@dptr', 'r1'): [33, 1],\n",
|
jb302@18
|
157 " ('@dptr', 'r2'): [34, 1],\n",
|
jb302@18
|
158 " ('@dptr', 'r3'): [35, 1],\n",
|
jb302@18
|
159 " ('@dptr', 'sph'): [38, 1],\n",
|
jb302@18
|
160 " ('@dptr', 'spl'): [39, 1],\n",
|
jb302@18
|
161 " ('@label', 'a'): [29, 3],\n",
|
jb302@18
|
162 " ('a', '#data8'): [21, 2],\n",
|
jb302@18
|
163 " ('a', '@a+dptr'): [26, 1],\n",
|
jb302@18
|
164 " ('a', '@a+pc'): [27, 1],\n",
|
jb302@18
|
165 " ('a', '@addr16'): [28, 3],\n",
|
jb302@18
|
166 " ('a', '@dptr'): [30, 1],\n",
|
jb302@18
|
167 " ('a', '@label'): [28, 3],\n",
|
jb302@18
|
168 " ('a', 'addr16'): [24, 3],\n",
|
jb302@18
|
169 " ('a', 'dph'): [60, 1],\n",
|
jb302@18
|
170 " ('a', 'dpl'): [61, 1],\n",
|
jb302@18
|
171 " ('a', 'label'): [24, 3],\n",
|
jb302@18
|
172 " ('a', 'r0'): [56, 1],\n",
|
jb302@18
|
173 " ('a', 'r1'): [57, 1],\n",
|
jb302@18
|
174 " ('a', 'r2'): [58, 1],\n",
|
jb302@18
|
175 " ('a', 'r3'): [59, 1],\n",
|
jb302@18
|
176 " ('a', 'sph'): [62, 1],\n",
|
jb302@18
|
177 " ('a', 'spl'): [63, 1],\n",
|
jb302@18
|
178 " ('addr16', 'a'): [25, 3],\n",
|
jb302@18
|
179 " ('dph', '#data8'): [44, 2],\n",
|
jb302@18
|
180 " ('dph', '@dptr'): [100, 1],\n",
|
jb302@18
|
181 " ('dph', 'a'): [52, 1],\n",
|
jb302@18
|
182 " ('dph', 'dpl'): [101, 1],\n",
|
jb302@18
|
183 " ('dph', 'r0'): [96, 1],\n",
|
jb302@18
|
184 " ('dph', 'r1'): [97, 1],\n",
|
jb302@18
|
185 " ('dph', 'r2'): [98, 1],\n",
|
jb302@18
|
186 " ('dph', 'r3'): [99, 1],\n",
|
jb302@18
|
187 " ('dph', 'sph'): [102, 1],\n",
|
jb302@18
|
188 " ('dph', 'spl'): [103, 1],\n",
|
jb302@18
|
189 " ('dpl', '#data8'): [45, 2],\n",
|
jb302@18
|
190 " ('dpl', '@dptr'): [109, 1],\n",
|
jb302@18
|
191 " ('dpl', 'a'): [53, 1],\n",
|
jb302@18
|
192 " ('dpl', 'dph'): [108, 1],\n",
|
jb302@18
|
193 " ('dpl', 'r0'): [104, 1],\n",
|
jb302@18
|
194 " ('dpl', 'r1'): [105, 1],\n",
|
jb302@18
|
195 " ('dpl', 'r2'): [106, 1],\n",
|
jb302@18
|
196 " ('dpl', 'r3'): [107, 1],\n",
|
jb302@18
|
197 " ('dpl', 'sph'): [110, 1],\n",
|
jb302@18
|
198 " ('dpl', 'spl'): [111, 1],\n",
|
jb302@18
|
199 " ('dptr', '#data16'): [23, 3],\n",
|
jb302@18
|
200 " ('dptr', 'sp'): [19, 1],\n",
|
jb302@18
|
201 " ('label', 'a'): [25, 3],\n",
|
jb302@18
|
202 " ('r0', '#data8'): [40, 2],\n",
|
jb302@18
|
203 " ('r0', '@dptr'): [64, 1],\n",
|
jb302@18
|
204 " ('r0', 'a'): [48, 1],\n",
|
jb302@18
|
205 " ('r0', 'dph'): [68, 1],\n",
|
jb302@18
|
206 " ('r0', 'dpl'): [69, 1],\n",
|
jb302@18
|
207 " ('r0', 'r1'): [65, 1],\n",
|
jb302@18
|
208 " ('r0', 'r2'): [66, 1],\n",
|
jb302@18
|
209 " ('r0', 'r3'): [67, 1],\n",
|
jb302@18
|
210 " ('r0', 'sph'): [70, 1],\n",
|
jb302@18
|
211 " ('r0', 'spl'): [71, 1],\n",
|
jb302@18
|
212 " ('r1', '#data8'): [41, 2],\n",
|
jb302@18
|
213 " ('r1', '@dptr'): [73, 1],\n",
|
jb302@18
|
214 " ('r1', 'a'): [49, 1],\n",
|
jb302@18
|
215 " ('r1', 'dph'): [76, 1],\n",
|
jb302@18
|
216 " ('r1', 'dpl'): [77, 1],\n",
|
jb302@18
|
217 " ('r1', 'r0'): [72, 1],\n",
|
jb302@18
|
218 " ('r1', 'r2'): [74, 1],\n",
|
jb302@18
|
219 " ('r1', 'r3'): [75, 1],\n",
|
jb302@18
|
220 " ('r1', 'sph'): [78, 1],\n",
|
jb302@18
|
221 " ('r1', 'spl'): [79, 1],\n",
|
jb302@18
|
222 " ('r2', '#data8'): [42, 2],\n",
|
jb302@18
|
223 " ('r2', '@dptr'): [82, 1],\n",
|
jb302@18
|
224 " ('r2', 'a'): [50, 1],\n",
|
jb302@18
|
225 " ('r2', 'dph'): [84, 1],\n",
|
jb302@18
|
226 " ('r2', 'dpl'): [85, 1],\n",
|
jb302@18
|
227 " ('r2', 'r0'): [80, 1],\n",
|
jb302@18
|
228 " ('r2', 'r1'): [81, 1],\n",
|
jb302@18
|
229 " ('r2', 'r3'): [83, 1],\n",
|
jb302@18
|
230 " ('r2', 'sph'): [86, 1],\n",
|
jb302@18
|
231 " ('r2', 'spl'): [87, 1],\n",
|
jb302@18
|
232 " ('r3', '#data8'): [43, 2],\n",
|
jb302@18
|
233 " ('r3', '@dptr'): [91, 1],\n",
|
jb302@18
|
234 " ('r3', 'a'): [51, 1],\n",
|
jb302@18
|
235 " ('r3', 'dph'): [92, 1],\n",
|
jb302@18
|
236 " ('r3', 'dpl'): [93, 1],\n",
|
jb302@18
|
237 " ('r3', 'r0'): [88, 1],\n",
|
jb302@18
|
238 " ('r3', 'r1'): [89, 1],\n",
|
jb302@18
|
239 " ('r3', 'r2'): [90, 1],\n",
|
jb302@18
|
240 " ('r3', 'sph'): [94, 1],\n",
|
jb302@18
|
241 " ('r3', 'spl'): [95, 1],\n",
|
jb302@18
|
242 " ('sp', '#data16'): [22, 3],\n",
|
jb302@18
|
243 " ('sp', 'dptr'): [20, 1],\n",
|
jb302@18
|
244 " ('sph', '#data8'): [46, 2],\n",
|
jb302@18
|
245 " ('sph', '@dptr'): [118, 1],\n",
|
jb302@18
|
246 " ('sph', 'a'): [54, 1],\n",
|
jb302@18
|
247 " ('sph', 'dph'): [116, 1],\n",
|
jb302@18
|
248 " ('sph', 'dpl'): [117, 1],\n",
|
jb302@18
|
249 " ('sph', 'r0'): [112, 1],\n",
|
jb302@18
|
250 " ('sph', 'r1'): [113, 1],\n",
|
jb302@18
|
251 " ('sph', 'r2'): [114, 1],\n",
|
jb302@18
|
252 " ('sph', 'r3'): [115, 1],\n",
|
jb302@18
|
253 " ('sph', 'spl'): [119, 1],\n",
|
jb302@18
|
254 " ('spl', '#data8'): [47, 2],\n",
|
jb302@18
|
255 " ('spl', '@dptr'): [127, 1],\n",
|
jb302@18
|
256 " ('spl', 'a'): [55, 1],\n",
|
jb302@18
|
257 " ('spl', 'dph'): [124, 1],\n",
|
jb302@18
|
258 " ('spl', 'dpl'): [125, 1],\n",
|
jb302@18
|
259 " ('spl', 'r0'): [120, 1],\n",
|
jb302@18
|
260 " ('spl', 'r1'): [121, 1],\n",
|
jb302@18
|
261 " ('spl', 'r2'): [122, 1],\n",
|
jb302@18
|
262 " ('spl', 'r3'): [123, 1],\n",
|
jb302@18
|
263 " ('spl', 'sph'): [126, 1]},\n",
|
jb302@18
|
264 " 'mul': { ('r0', 'r1'): [248, 1]},\n",
|
jb302@18
|
265 " 'nop': { ('',): [0, 1]},\n",
|
jb302@18
|
266 " 'orl': { ('a', '#data8'): [142, 2],\n",
|
jb302@18
|
267 " ('a', '@dptr'): [143, 1],\n",
|
jb302@18
|
268 " ('a', 'dph'): [140, 1],\n",
|
jb302@18
|
269 " ('a', 'dpl'): [141, 1],\n",
|
jb302@18
|
270 " ('a', 'r0'): [136, 1],\n",
|
jb302@18
|
271 " ('a', 'r1'): [137, 1],\n",
|
jb302@18
|
272 " ('a', 'r2'): [138, 1],\n",
|
jb302@18
|
273 " ('a', 'r3'): [139, 1]},\n",
|
jb302@18
|
274 " 'out': { ('port_addr', 'a'): [253, 2]},\n",
|
jb302@18
|
275 " 'pcall': { ('addr11',): [207, 2], ('label',): [207, 2]},\n",
|
jb302@18
|
276 " 'pjmp': { ('addr11',): [199, 2], ('label',): [199, 2]},\n",
|
jb302@18
|
277 " 'pop': { ('a',): [246, 1],\n",
|
jb302@18
|
278 " ('dph',): [244, 1],\n",
|
jb302@18
|
279 " ('dpl',): [245, 1],\n",
|
jb302@18
|
280 " ('flags',): [247, 1],\n",
|
jb302@18
|
281 " ('r0',): [240, 1],\n",
|
jb302@18
|
282 " ('r1',): [241, 1],\n",
|
jb302@18
|
283 " ('r2',): [242, 1],\n",
|
jb302@18
|
284 " ('r3',): [243, 1]},\n",
|
jb302@18
|
285 " 'push': { ('a',): [238, 1],\n",
|
jb302@18
|
286 " ('dph',): [236, 1],\n",
|
jb302@18
|
287 " ('dpl',): [237, 1],\n",
|
jb302@18
|
288 " ('flags',): [239, 1],\n",
|
jb302@18
|
289 " ('r0',): [232, 1],\n",
|
jb302@18
|
290 " ('r1',): [233, 1],\n",
|
jb302@18
|
291 " ('r2',): [234, 1],\n",
|
jb302@18
|
292 " ('r3',): [235, 1]},\n",
|
jb302@18
|
293 " 'reserved': { ('',): [251, 1]},\n",
|
jb302@18
|
294 " 'ret': { ('',): [218, 1]},\n",
|
jb302@18
|
295 " 'reti': { ('',): [219, 1]},\n",
|
jb302@18
|
296 " 'rl': { ('a',): [152, 1]"
|
jb302@18
|
297 ]
|
jb302@18
|
298 },
|
jb302@18
|
299 {
|
jb302@18
|
300 "output_type": "stream",
|
jb302@18
|
301 "stream": "stdout",
|
jb302@18
|
302 "text": [
|
jb302@18
|
303 "},\n",
|
jb302@18
|
304 " 'rlc': { ('a',): [153, 1]},\n",
|
jb302@18
|
305 " 'rr': { ('a',): [154, 1]},\n",
|
jb302@18
|
306 " 'rrc': { ('a',): [155, 1]},\n",
|
jb302@18
|
307 " 'set': { ('bs',): [10, 1], ('c',): [8, 1], ('ie',): [12, 1]},\n",
|
jb302@18
|
308 " 'sfa': { ('',): [17, 1]},\n",
|
jb302@18
|
309 " 'sjmp': { ('label',): [220, 2], ('rel8',): [220, 2]},\n",
|
jb302@18
|
310 " 'sub': { ('a', '#data8'): [182, 2],\n",
|
jb302@18
|
311 " ('a', '@dptr'): [183, 1],\n",
|
jb302@18
|
312 " ('a', 'dph'): [180, 1],\n",
|
jb302@18
|
313 " ('a', 'dpl'): [181, 1],\n",
|
jb302@18
|
314 " ('a', 'r0'): [176, 1],\n",
|
jb302@18
|
315 " ('a', 'r1'): [177, 1],\n",
|
jb302@18
|
316 " ('a', 'r2'): [178, 1],\n",
|
jb302@18
|
317 " ('a', 'r3'): [179, 1]},\n",
|
jb302@18
|
318 " 'subb': { ('a', '#data8'): [190, 2],\n",
|
jb302@18
|
319 " ('a', '@dptr'): [191, 1],\n",
|
jb302@18
|
320 " ('a', 'dph'): [188, 1],\n",
|
jb302@18
|
321 " ('a', 'dpl'): [189, 1],\n",
|
jb302@18
|
322 " ('a', 'r0'): [184, 1],\n",
|
jb302@18
|
323 " ('a', 'r1'): [185, 1],\n",
|
jb302@18
|
324 " ('a', 'r2'): [186, 1],\n",
|
jb302@18
|
325 " ('a', 'r3'): [187, 1]},\n",
|
jb302@18
|
326 " 'xcsd': { ('',): [16, 1]},\n",
|
jb302@18
|
327 " 'xrl': { ('a', '#data8'): [150, 2],\n",
|
jb302@18
|
328 " ('a', '@dptr'): [151, 1],\n",
|
jb302@18
|
329 " ('a', 'dph'): [148, 1],\n",
|
jb302@18
|
330 " ('a', 'dpl'): [149, 1],\n",
|
jb302@18
|
331 " ('a', 'r0'): [144, 1],\n",
|
jb302@18
|
332 " ('a', 'r1'): [145, 1],\n",
|
jb302@18
|
333 " ('a', 'r2'): [146, 1],\n",
|
jb302@18
|
334 " ('a', 'r3'): [147, 1]}}\n"
|
jb302@18
|
335 ]
|
jb302@18
|
336 }
|
jb302@18
|
337 ],
|
jb302@18
|
338 "prompt_number": 11
|
jb302@14
|
339 },
|
jb302@14
|
340 {
|
jb302@14
|
341 "cell_type": "code",
|
jb302@14
|
342 "collapsed": false,
|
jb302@14
|
343 "input": [
|
jb302@14
|
344 "# generate function lookup table\n",
|
jb302@14
|
345 "optable = []\n",
|
jb302@14
|
346 "for l in lang:\n",
|
jb302@14
|
347 " optable.append(l[0])\n",
|
jb302@14
|
348 "\n",
|
jb302@14
|
349 "for i in range(17):\n",
|
jb302@14
|
350 " print \"%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, \" % (optable[(i*15)], optable[(i*15)+1], optable[(i*15)+2], optable[(i*15)+3], optable[(i*15)+4], optable[(i*15)+5], optable[(i*15)+6], optable[(i*15)+7], optable[(i*15)+8], optable[(i*15)+9], optable[(i*15)+10], optable[(i*15)+11], optable[(i*15)+12], optable[(i*15)+13], optable[(i*15)+14])\n",
|
jb302@14
|
351 "\n"
|
jb302@14
|
352 ],
|
jb302@14
|
353 "language": "python",
|
jb302@14
|
354 "metadata": {},
|
jb302@18
|
355 "outputs": []
|
jb302@14
|
356 },
|
jb302@14
|
357 {
|
jb302@14
|
358 "cell_type": "code",
|
jb302@14
|
359 "collapsed": false,
|
jb302@14
|
360 "input": [
|
jb302@14
|
361 "# print function templates\n",
|
jb302@14
|
362 "#for mne in mne_set:\n",
|
jb302@14
|
363 "# print \"//implement me\\nvoid\\n%s(void) {\\n registers.PC = registers.PC + 1;\\n}\\n\" % mne.upper()\n",
|
jb302@14
|
364 "\n",
|
jb302@14
|
365 "# print function definitions\n",
|
jb302@14
|
366 "#for mne in mne_set:\n",
|
jb302@14
|
367 "# print \"void\\n%s(void);\\n\" % mne.upper()\n"
|
jb302@14
|
368 ],
|
jb302@14
|
369 "language": "python",
|
jb302@14
|
370 "metadata": {},
|
jb302@18
|
371 "outputs": []
|
jb302@14
|
372 },
|
jb302@14
|
373 {
|
jb302@14
|
374 "cell_type": "code",
|
jb302@14
|
375 "collapsed": false,
|
jb302@18
|
376 "input": [],
|
jb302@14
|
377 "language": "python",
|
jb302@14
|
378 "metadata": {},
|
jb302@18
|
379 "outputs": []
|
jb302@14
|
380 },
|
jb302@14
|
381 {
|
jb302@14
|
382 "cell_type": "code",
|
jb302@14
|
383 "collapsed": false,
|
jb302@14
|
384 "input": [],
|
jb302@14
|
385 "language": "python",
|
jb302@14
|
386 "metadata": {},
|
jb302@1
|
387 "outputs": []
|
jb302@1
|
388 }
|
jb302@1
|
389 ],
|
jb302@1
|
390 "metadata": {}
|
jb302@1
|
391 }
|
jb302@1
|
392 ]
|
jb302@1
|
393 } |