Mercurial > hg > ede
diff utils/gen_language.ipynb @ 18:256d24488e3f
assembler now handles EQU, ORG and DB
author | james <jb302@eecs.qmul.ac.uk> |
---|---|
date | Sat, 22 Feb 2014 20:30:58 +0000 |
parents | 2b8eb2c86602 |
children |
line wrap: on
line diff
--- a/utils/gen_language.ipynb Thu Jan 30 17:09:55 2014 +0000 +++ b/utils/gen_language.ipynb Sat Feb 22 20:30:58 2014 +0000 @@ -31,8 +31,7 @@ ], "language": "python", "metadata": {}, - "outputs": [], - "prompt_number": 1 + "outputs": [] }, { "cell_type": "code", @@ -62,11 +61,14 @@ " width = width + consts[a]\n", " valid_args.update({tuple(line[1]):[int(codes[i]), width]})\n", " \n", + " found_label = 0\n", " for a in line[1]:\n", - " found_label = 0\n", " if a in labelable:\n", " found_label = 1\n", " args.append('label')\n", + " elif a == '@addr16':\n", + " found_label = 1\n", + " args.append('@label')\n", " else:\n", " args.append(a)\n", " if found_label:\n", @@ -74,12 +76,266 @@ " \n", " i = i + 1\n", " iset.update({mne:valid_args})\n", - "#pprint(iset, indent=5)\n" + "pprint(iset, indent=5)\n" ], "language": "python", "metadata": {}, - "outputs": [], - "prompt_number": 2 + "outputs": [ + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "{ 'add': { ('a', '#data8'): [166, 2],\n", + " ('a', '@dptr'): [167, 1],\n", + " ('a', 'dph'): [164, 1],\n", + " ('a', 'dpl'): [165, 1],\n", + " ('a', 'r0'): [160, 1],\n", + " ('a', 'r1'): [161, 1],\n", + " ('a', 'r2'): [162, 1],\n", + " ('a', 'r3'): [163, 1]},\n", + " 'addc': { ('a', '#data8'): [174, 2],\n", + " ('a', '@dptr'): [175, 1],\n", + " ('a', 'dph'): [172, 1],\n", + " ('a', 'dpl'): [173, 1],\n", + " ('a', 'r0'): [168, 1],\n", + " ('a', 'r1'): [169, 1],\n", + " ('a', 'r2'): [170, 1],\n", + " ('a', 'r3'): [171, 1]},\n", + " 'anl': { ('a', '#data8'): [134, 2],\n", + " ('a', '@dptr'): [135, 1],\n", + " ('a', 'dph'): [132, 1],\n", + " ('a', 'dpl'): [133, 1],\n", + " ('a', 'r0'): [128, 1],\n", + " ('a', 'r1'): [129, 1],\n", + " ('a', 'r2'): [130, 1],\n", + " ('a', 'r3'): [131, 1]},\n", + " 'cjne': { ('a', '#data8', 'label'): [223, 3],\n", + " ('a', '#data8', 'rel8'): [223, 3],\n", + " ('r0', '#data', 'label'): [212, 2],\n", + " ('r0', '#data', 'rel8'): [212, 2],\n", + " ('r1', '#data', 'label'): [213, 2],\n", + " ('r1', '#data', 'rel8'): [213, 2],\n", + " ('r2', '#data', 'label'): [214, 2],\n", + " ('r2', '#data', 'rel8'): [214, 2],\n", + " ('r3', '#data', 'label'): [215, 2],\n", + " ('r3', '#data', 'rel8'): [215, 2]},\n", + " 'clr': { ('bs',): [11, 1], ('c',): [9, 1], ('ie',): [13, 1]},\n", + " 'cpl': { ('a',): [15, 1], ('c',): [14, 1]},\n", + " 'da': { ('a',): [250, 1]},\n", + " 'dec': { ('a',): [159, 1], ('dptr',): [157, 1]},\n", + " 'div': { ('r0', 'r1'): [249, 1]},\n", + " 'djnz': { ('r0', 'label'): [208, 2],\n", + " ('r0', 'rel8'): [208, 2],\n", + " ('r1', 'label'): [209, 2],\n", + " ('r1', 'rel8'): [209, 2],\n", + " ('r2', 'label'): [210, 2],\n", + " ('r2', 'rel8'): [210, 2],\n", + " ('r3', 'label'): [211, 2],\n", + " ('r3', 'rel8'): [211, 2]},\n", + " 'hlt': { ('',): [255, 1]},\n", + " 'in': { ('a', 'port_addr'): [252, 2]},\n", + " 'inc': { ('a',): [158, 1], ('dptr',): [156, 1]},\n", + " 'int': { ('vect8',): [254, 2]},\n", + " 'jc': { ('label',): [226, 2], ('rel8',): [226, 2]},\n", + " 'jmp': { ('@a+dptr',): [221, 1], ('@dptr',): [222, 1]},\n", + " 'jnc': { ('label',): [227, 2], ('rel8',): [227, 2]},\n", + " 'jns': { ('label',): [231, 2], ('rel8',): [231, 2]},\n", + " 'jnz': { ('label',): [225, 2], ('rel8',): [225, 2]},\n", + " 'jpe': { ('label',): [229, 2], ('rel8',): [229, 2]},\n", + " 'jpo': { ('label',): [228, 2], ('rel8',): [228, 2]},\n", + " 'js': { ('label',): [230, 2], ('rel8',): [230, 2]},\n", + " 'jz': { ('label',): [224, 2], ('rel8',): [224, 2]},\n", + " 'laf': { ('',): [18, 1]},\n", + " 'lcall': { ('addr16',): [217, 3], ('label',): [217, 3]},\n", + " 'ljmp': { ('addr16',): [216, 3], ('label',): [216, 3]},\n", + " 'mov': { ('@addr16', 'a'): [29, 3],\n", + " ('@dptr', 'a'): [31, 1],\n", + " ('@dptr', 'dph'): [36, 1],\n", + " ('@dptr', 'dpl'): [37, 1],\n", + " ('@dptr', 'r0'): [32, 1],\n", + " ('@dptr', 'r1'): [33, 1],\n", + " ('@dptr', 'r2'): [34, 1],\n", + " ('@dptr', 'r3'): [35, 1],\n", + " ('@dptr', 'sph'): [38, 1],\n", + " ('@dptr', 'spl'): [39, 1],\n", + " ('@label', 'a'): [29, 3],\n", + " ('a', '#data8'): [21, 2],\n", + " ('a', '@a+dptr'): [26, 1],\n", + " ('a', '@a+pc'): [27, 1],\n", + " ('a', '@addr16'): [28, 3],\n", + " ('a', '@dptr'): [30, 1],\n", + " ('a', '@label'): [28, 3],\n", + " ('a', 'addr16'): [24, 3],\n", + " ('a', 'dph'): [60, 1],\n", + " ('a', 'dpl'): [61, 1],\n", + " ('a', 'label'): [24, 3],\n", + " ('a', 'r0'): [56, 1],\n", + " ('a', 'r1'): [57, 1],\n", + " ('a', 'r2'): [58, 1],\n", + " ('a', 'r3'): [59, 1],\n", + " ('a', 'sph'): [62, 1],\n", + " ('a', 'spl'): [63, 1],\n", + " ('addr16', 'a'): [25, 3],\n", + " ('dph', '#data8'): [44, 2],\n", + " ('dph', '@dptr'): [100, 1],\n", + " ('dph', 'a'): [52, 1],\n", + " ('dph', 'dpl'): [101, 1],\n", + " ('dph', 'r0'): [96, 1],\n", + " ('dph', 'r1'): [97, 1],\n", + " ('dph', 'r2'): [98, 1],\n", + " ('dph', 'r3'): [99, 1],\n", + " ('dph', 'sph'): [102, 1],\n", + " ('dph', 'spl'): [103, 1],\n", + " ('dpl', '#data8'): [45, 2],\n", + " ('dpl', '@dptr'): [109, 1],\n", + " ('dpl', 'a'): [53, 1],\n", + " ('dpl', 'dph'): [108, 1],\n", + " ('dpl', 'r0'): [104, 1],\n", + " ('dpl', 'r1'): [105, 1],\n", + " ('dpl', 'r2'): [106, 1],\n", + " ('dpl', 'r3'): [107, 1],\n", + " ('dpl', 'sph'): [110, 1],\n", + " ('dpl', 'spl'): [111, 1],\n", + " ('dptr', '#data16'): [23, 3],\n", + " ('dptr', 'sp'): [19, 1],\n", + " ('label', 'a'): [25, 3],\n", + " ('r0', '#data8'): [40, 2],\n", + " ('r0', '@dptr'): [64, 1],\n", + " ('r0', 'a'): [48, 1],\n", + " ('r0', 'dph'): [68, 1],\n", + " ('r0', 'dpl'): [69, 1],\n", + " ('r0', 'r1'): [65, 1],\n", + " ('r0', 'r2'): [66, 1],\n", + " ('r0', 'r3'): [67, 1],\n", + " ('r0', 'sph'): [70, 1],\n", + " ('r0', 'spl'): [71, 1],\n", + " ('r1', '#data8'): [41, 2],\n", + " ('r1', '@dptr'): [73, 1],\n", + " ('r1', 'a'): [49, 1],\n", + " ('r1', 'dph'): [76, 1],\n", + " ('r1', 'dpl'): [77, 1],\n", + " ('r1', 'r0'): [72, 1],\n", + " ('r1', 'r2'): [74, 1],\n", + " ('r1', 'r3'): [75, 1],\n", + " ('r1', 'sph'): [78, 1],\n", + " ('r1', 'spl'): [79, 1],\n", + " ('r2', '#data8'): [42, 2],\n", + " ('r2', '@dptr'): [82, 1],\n", + " ('r2', 'a'): [50, 1],\n", + " ('r2', 'dph'): [84, 1],\n", + " ('r2', 'dpl'): [85, 1],\n", + " ('r2', 'r0'): [80, 1],\n", + " ('r2', 'r1'): [81, 1],\n", + " ('r2', 'r3'): [83, 1],\n", + " ('r2', 'sph'): [86, 1],\n", + " ('r2', 'spl'): [87, 1],\n", + " ('r3', '#data8'): [43, 2],\n", + " ('r3', '@dptr'): [91, 1],\n", + " ('r3', 'a'): [51, 1],\n", + " ('r3', 'dph'): [92, 1],\n", + " ('r3', 'dpl'): [93, 1],\n", + " ('r3', 'r0'): [88, 1],\n", + " ('r3', 'r1'): [89, 1],\n", + " ('r3', 'r2'): [90, 1],\n", + " ('r3', 'sph'): [94, 1],\n", + " ('r3', 'spl'): [95, 1],\n", + " ('sp', '#data16'): [22, 3],\n", + " ('sp', 'dptr'): [20, 1],\n", + " ('sph', '#data8'): [46, 2],\n", + " ('sph', '@dptr'): [118, 1],\n", + " ('sph', 'a'): [54, 1],\n", + " ('sph', 'dph'): [116, 1],\n", + " ('sph', 'dpl'): [117, 1],\n", + " ('sph', 'r0'): [112, 1],\n", + " ('sph', 'r1'): [113, 1],\n", + " ('sph', 'r2'): [114, 1],\n", + " ('sph', 'r3'): [115, 1],\n", + " ('sph', 'spl'): [119, 1],\n", + " ('spl', '#data8'): [47, 2],\n", + " ('spl', '@dptr'): [127, 1],\n", + " ('spl', 'a'): [55, 1],\n", + " ('spl', 'dph'): [124, 1],\n", + " ('spl', 'dpl'): [125, 1],\n", + " ('spl', 'r0'): [120, 1],\n", + " ('spl', 'r1'): [121, 1],\n", + " ('spl', 'r2'): [122, 1],\n", + " ('spl', 'r3'): [123, 1],\n", + " ('spl', 'sph'): [126, 1]},\n", + " 'mul': { ('r0', 'r1'): [248, 1]},\n", + " 'nop': { ('',): [0, 1]},\n", + " 'orl': { ('a', '#data8'): [142, 2],\n", + " ('a', '@dptr'): [143, 1],\n", + " ('a', 'dph'): [140, 1],\n", + " ('a', 'dpl'): [141, 1],\n", + " ('a', 'r0'): [136, 1],\n", + " ('a', 'r1'): [137, 1],\n", + " ('a', 'r2'): [138, 1],\n", + " ('a', 'r3'): [139, 1]},\n", + " 'out': { ('port_addr', 'a'): [253, 2]},\n", + " 'pcall': { ('addr11',): [207, 2], ('label',): [207, 2]},\n", + " 'pjmp': { ('addr11',): [199, 2], ('label',): [199, 2]},\n", + " 'pop': { ('a',): [246, 1],\n", + " ('dph',): [244, 1],\n", + " ('dpl',): [245, 1],\n", + " ('flags',): [247, 1],\n", + " ('r0',): [240, 1],\n", + " ('r1',): [241, 1],\n", + " ('r2',): [242, 1],\n", + " ('r3',): [243, 1]},\n", + " 'push': { ('a',): [238, 1],\n", + " ('dph',): [236, 1],\n", + " ('dpl',): [237, 1],\n", + " ('flags',): [239, 1],\n", + " ('r0',): [232, 1],\n", + " ('r1',): [233, 1],\n", + " ('r2',): [234, 1],\n", + " ('r3',): [235, 1]},\n", + " 'reserved': { ('',): [251, 1]},\n", + " 'ret': { ('',): [218, 1]},\n", + " 'reti': { ('',): [219, 1]},\n", + " 'rl': { ('a',): [152, 1]" + ] + }, + { + "output_type": "stream", + "stream": "stdout", + "text": [ + "},\n", + " 'rlc': { ('a',): [153, 1]},\n", + " 'rr': { ('a',): [154, 1]},\n", + " 'rrc': { ('a',): [155, 1]},\n", + " 'set': { ('bs',): [10, 1], ('c',): [8, 1], ('ie',): [12, 1]},\n", + " 'sfa': { ('',): [17, 1]},\n", + " 'sjmp': { ('label',): [220, 2], ('rel8',): [220, 2]},\n", + " 'sub': { ('a', '#data8'): [182, 2],\n", + " ('a', '@dptr'): [183, 1],\n", + " ('a', 'dph'): [180, 1],\n", + " ('a', 'dpl'): [181, 1],\n", + " ('a', 'r0'): [176, 1],\n", + " ('a', 'r1'): [177, 1],\n", + " ('a', 'r2'): [178, 1],\n", + " ('a', 'r3'): [179, 1]},\n", + " 'subb': { ('a', '#data8'): [190, 2],\n", + " ('a', '@dptr'): [191, 1],\n", + " ('a', 'dph'): [188, 1],\n", + " ('a', 'dpl'): [189, 1],\n", + " ('a', 'r0'): [184, 1],\n", + " ('a', 'r1'): [185, 1],\n", + " ('a', 'r2'): [186, 1],\n", + " ('a', 'r3'): [187, 1]},\n", + " 'xcsd': { ('',): [16, 1]},\n", + " 'xrl': { ('a', '#data8'): [150, 2],\n", + " ('a', '@dptr'): [151, 1],\n", + " ('a', 'dph'): [148, 1],\n", + " ('a', 'dpl'): [149, 1],\n", + " ('a', 'r0'): [144, 1],\n", + " ('a', 'r1'): [145, 1],\n", + " ('a', 'r2'): [146, 1],\n", + " ('a', 'r3'): [147, 1]}}\n" + ] + } + ], + "prompt_number": 11 }, { "cell_type": "code", @@ -96,66 +352,7 @@ ], "language": "python", "metadata": {}, - "outputs": [ - { - "output_type": "stream", - "stream": "stdout", - "text": [ - "nop, reserved, reserved, reserved, reserved\n", - "reserved, reserved, reserved, set, clr\n", - "set, clr, set, clr, cpl\n", - "cpl, xcsd, sfa, laf, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, mov, mov\n", - "mov, mov, mov, anl, anl\n", - "anl, anl, anl, anl, anl\n", - "anl, orl, orl, orl, orl\n", - "orl, orl, orl, orl, xrl\n", - "xrl, xrl, xrl, xrl, xrl\n", - "xrl, xrl, rl, rlc, rr\n", - "rrc, inc, dec, inc, dec\n", - "add, add, add, add, add\n", - "add, add, add, addc, addc\n", - "addc, addc, addc, addc, addc\n", - "addc, sub, sub, sub, sub\n", - "sub, sub, sub, sub, subb\n", - "subb, subb, subb, subb, subb\n", - "subb, subb, pjmp, pjmp, pjmp\n", - "pjmp, pjmp, pjmp, pjmp, pjmp\n", - "pcall, pcall, pcall, pcall, pcall\n", - "pcall, pcall, pcall, djnz, djnz\n", - "djnz, djnz, cjne, cjne, cjne\n", - "cjne, ljmp, lcall, ret, reti\n", - "sjmp, jmp, jmp, cjne, jz\n", - "jnz, jc, jnc, jpo, jpe\n", - "js, jns, push, push, push\n", - "push, push, push, push, push\n", - "pop, pop, pop, pop, pop\n", - "pop, pop, pop, mul, div\n", - "da, reserved, in, out, int\n" - ] - } - ], - "prompt_number": 3 + "outputs": [] }, { "cell_type": "code", @@ -171,27 +368,15 @@ ], "language": "python", "metadata": {}, - "outputs": [], - "prompt_number": 2 + "outputs": [] }, { "cell_type": "code", "collapsed": false, - "input": [ - "float(255)/15\n" - ], + "input": [], "language": "python", "metadata": {}, - "outputs": [ - { - "output_type": "pyout", - "prompt_number": 13, - "text": [ - "17.0" - ] - } - ], - "prompt_number": 13 + "outputs": [] }, { "cell_type": "code",