X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=07-interpreter%2Fmachine-code.ipynb;h=69cd43ff07b09f91c79e0082aa7cd6c0aa40b2a1;hb=41af8166480ab766f9f2b9e8ce9c7666ae9b02b9;hp=c6b62b09b7c78ee0c2711e08796ec6639a839e65;hpb=d7db6acc4c4d5f065da2e95a313e376310a990e0;p=ou-summer-of-code-2017.git diff --git a/07-interpreter/machine-code.ipynb b/07-interpreter/machine-code.ipynb index c6b62b0..69cd43f 100644 --- a/07-interpreter/machine-code.ipynb +++ b/07-interpreter/machine-code.ipynb @@ -416,16 +416,16 @@ { "data": { "text/plain": [ - "{'pc': 6,\n", + "{'a': 0,\n", + " 1: 10,\n", + " 'pc': 6,\n", + " 'c': 20,\n", " 'instructions': [(, ['a', 10]),\n", " (, ['a']),\n", " (, ['b']),\n", " (, ['b', 1]),\n", " (, ['a', 2]),\n", " (, [-4])],\n", - " 1: 10,\n", - " 'c': 20,\n", - " 'a': 0,\n", " 'b': 10}" ] }, @@ -457,16 +457,16 @@ { "data": { "text/plain": [ - "{'pc': 6,\n", + "{'a': 0,\n", + " 1: 10,\n", + " 'pc': 6,\n", + " 'c': 20,\n", " 'instructions': [(, ['a', 10]),\n", " (, ['a']),\n", " (, ['b']),\n", " (, ['b', 1]),\n", " (, ['a', 2]),\n", " (, [-4])],\n", - " 1: 10,\n", - " 'c': 20,\n", - " 'a': 0,\n", " 'b': 10}" ] }, @@ -658,7 +658,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 39, "metadata": {}, "outputs": [ { @@ -667,7 +667,7 @@ "'1: 0, a: 0, b: 0, c: 27, pc: 11'" ] }, - "execution_count": 28, + "execution_count": 39, "metadata": {}, "output_type": "execute_result" } @@ -694,6 +694,35 @@ "show_machine(execute(program, initial_state={'a': 9, 'b': 3}))" ] }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "set c 0\n", + "sto a 1\n", + "jpz b 8\n", + "dec b\n", + "ld a 1\n", + "jpz a 4\n", + "inc c\n", + "dec a\n", + "jmp -3\n", + "jmp -7\n", + "sto a 1\n" + ] + } + ], + "source": [ + "labelled_instructions = [i.strip() for i in program.split('\\n') if i.strip() if not i.strip().startswith('#')]\n", + "instructions = replace_labels(labelled_instructions)\n", + "print('\\n'.join(instructions))" + ] + }, { "cell_type": "code", "execution_count": 29, @@ -736,13 +765,15 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ + "set a 2\n", + "set b 5\n", "set c 0\n", "sto a 1\n", "jpz b 8\n", @@ -767,7 +798,7 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 31, "metadata": {}, "outputs": [ { @@ -776,7 +807,7 @@ "'1: 0, a: 52, b: 0, c: 0, pc: 48'" ] }, - "execution_count": 51, + "execution_count": 31, "metadata": {}, "output_type": "execute_result" } @@ -858,7 +889,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 32, "metadata": {}, "outputs": [ { @@ -867,7 +898,7 @@ "40" ] }, - "execution_count": 30, + "execution_count": 32, "metadata": {}, "output_type": "execute_result" } @@ -878,7 +909,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 33, "metadata": { "collapsed": true }, @@ -899,7 +930,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -908,7 +939,7 @@ "52" ] }, - "execution_count": 32, + "execution_count": 34, "metadata": {}, "output_type": "execute_result" } @@ -919,7 +950,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 35, "metadata": {}, "outputs": [ { @@ -928,7 +959,7 @@ "(250504, 937)" ] }, - "execution_count": 33, + "execution_count": 35, "metadata": {}, "output_type": "execute_result" } @@ -939,16 +970,116 @@ }, { "cell_type": "code", - "execution_count": 34, - "metadata": {}, + "execution_count": 36, + "metadata": { + "scrolled": true + }, "outputs": [ { "data": { "text/plain": [ - "[]" + "[(1, 0, 1),\n", + " (2, 0, 2),\n", + " (3, 0, 16),\n", + " (4, 0, 4),\n", + " (5, 0, 16),\n", + " (6, 0, 16),\n", + " (7, 0, 52),\n", + " (8, 0, 8),\n", + " (9, 0, 52),\n", + " (10, 0, 16),\n", + " (11, 0, 52),\n", + " (12, 0, 16),\n", + " (13, 0, 40),\n", + " (14, 0, 52),\n", + " (15, 0, 160),\n", + " (16, 0, 16),\n", + " (17, 0, 52),\n", + " (18, 0, 52),\n", + " (19, 0, 88),\n", + " (20, 0, 20),\n", + " (21, 0, 64),\n", + " (22, 0, 52),\n", + " (23, 0, 160),\n", + " (24, 0, 24),\n", + " (25, 0, 88),\n", + " (26, 0, 40),\n", + " (27, 0, 9232),\n", + " (28, 0, 52),\n", + " (29, 0, 88),\n", + " (30, 0, 160),\n", + " (31, 0, 9232),\n", + " (32, 0, 32),\n", + " (33, 0, 100),\n", + " (34, 0, 52),\n", + " (35, 0, 160),\n", + " (36, 0, 52),\n", + " (37, 0, 112),\n", + " (38, 0, 88),\n", + " (39, 0, 304),\n", + " (40, 0, 40),\n", + " (41, 0, 9232),\n", + " (42, 0, 64),\n", + " (43, 0, 196),\n", + " (44, 0, 52),\n", + " (45, 0, 136),\n", + " (46, 0, 160),\n", + " (47, 0, 9232),\n", + " (48, 0, 48),\n", + " (49, 0, 148),\n", + " (50, 0, 88),\n", + " (51, 0, 232),\n", + " (52, 0, 52),\n", + " (53, 0, 160),\n", + " (54, 0, 9232),\n", + " (55, 0, 9232),\n", + " (56, 0, 56),\n", + " (57, 0, 196),\n", + " (58, 0, 88),\n", + " (59, 0, 304),\n", + " (60, 0, 160),\n", + " (61, 0, 184),\n", + " (62, 0, 9232),\n", + " (63, 0, 9232),\n", + " (64, 0, 64),\n", + " (65, 0, 196),\n", + " (66, 0, 100),\n", + " (67, 0, 304),\n", + " (68, 0, 68),\n", + " (69, 0, 208),\n", + " (70, 0, 160),\n", + " (71, 0, 9232),\n", + " (72, 0, 72),\n", + " (73, 0, 9232),\n", + " (74, 0, 112),\n", + " (75, 0, 340),\n", + " (76, 0, 88),\n", + " (77, 0, 232),\n", + " (78, 0, 304),\n", + " (79, 0, 808),\n", + " (80, 0, 80),\n", + " (81, 0, 244),\n", + " (82, 0, 9232),\n", + " (83, 0, 9232),\n", + " (84, 0, 84),\n", + " (85, 0, 256),\n", + " (86, 0, 196),\n", + " (87, 0, 592),\n", + " (88, 0, 88),\n", + " (89, 0, 304),\n", + " (90, 0, 136),\n", + " (91, 0, 9232),\n", + " (92, 0, 160),\n", + " (93, 0, 280),\n", + " (94, 0, 9232),\n", + " (95, 0, 9232),\n", + " (96, 0, 96),\n", + " (97, 0, 9232),\n", + " (98, 0, 148),\n", + " (99, 0, 448)]" ] }, - "execution_count": 34, + "execution_count": 36, "metadata": {}, "output_type": "execute_result" } @@ -965,7 +1096,7 @@ }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -974,7 +1105,7 @@ "'1: 0, a: 250504, b: 0, c: 0, pc: 48'" ] }, - "execution_count": 52, + "execution_count": 38, "metadata": {}, "output_type": "execute_result" } @@ -985,81 +1116,18 @@ }, { "cell_type": "code", - "execution_count": 53, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "sto a 1\n", - "set b 0\n", - "dec a\n", - "jpz a 42\n", - "inc a\n", - "cpy a c\n", - "set b 0\n", - "dec c\n", - "jpz b 3\n", - "dec b\n", - "jmp 2\n", - "inc b\n", - "jpz c 2\n", - "jmp -6\n", - "jpz b 11\n", - "cpy a b\n", - "jpz b 6\n", - "dec b\n", - "inc c\n", - "inc c\n", - "inc c\n", - "jmp -5\n", - "inc c\n", - "cpy c a\n", - "jmp 12\n", - "set c 0\n", - "set b 0\n", - "dec a\n", - "jpz b 4\n", - "dec b\n", - "inc c\n", - "jmp 2\n", - "inc b\n", - "jpz a 2\n", - "jmp -7\n", - "cpy c a\n", - "cpy a b\n", - "ld c 1\n", - "jpz c 5\n", - "jpz b 5\n", - "dec b\n", - "dec c\n", - "jmp -4\n", - "sto a 1\n", - "jmp -42\n", - "ld a 1\n", - "set c 0\n", - "sto c 1\n" - ] - }, - { - "data": { - "text/plain": [ - "342" - ] - }, - "execution_count": 53, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], "source": [ - "labelled_instructions = [i.strip() for i in program.split('\\n') \n", - " if i.strip() \n", - " if not i.strip().startswith('#')]\n", - "instructions = replace_labels(labelled_instructions)\n", - "print('\\n'.join(instructions))\n", - "open('07-program.txt', 'w').write('\\n'.join(instructions))" + "# labelled_instructions = [i.strip() for i in program.split('\\n') \n", + "# if i.strip() \n", + "# if not i.strip().startswith('#')]\n", + "# instructions = replace_labels(labelled_instructions)\n", + "# print('\\n'.join(instructions))\n", + "# open('07-program.txt', 'w').write('\\n'.join(instructions))" ] }, {