[Wisp-cvs] wisp/users/dig tran-emitters,NONE,1.1 Makefile.am,1.24,1.25 tran-builtins,1.35,1.36 tran.
Status: Alpha
Brought to you by:
digg
From: <di...@us...> - 2003-05-18 17:22:58
|
Update of /cvsroot/wisp/wisp/users/dig In directory sc8-pr-cvs1:/tmp/cvs-serv19751 Modified Files: Makefile.am tran-builtins tran.py Added Files: tran-emitters Log Message: extracted tran-emitters from tran-builtins --- NEW FILE: tran-emitters --- #### tran-emitters - see tran.py for details # # Copyleft © 2003 by Andres Soolo (di...@us...) # This file is licensed under the GNU GPL v2. If you # don't know what that means, please do read the GPL. # #### @(#) $Id: tran-emitters,v 1.1 2003/05/18 17:22:55 digg Exp $ $-t, sum s = interpreter.regstack.pop() scalar = long(s[0]) symbols = map(str, s[1:]) interpreter.current.emit_tetra_sum(symbols, delta = scalar % 0x100000000L, relative = 1) $-t, sym interpreter.current.emit_tetra_sum([str(interpreter.regstack.pop())], relative = 1) $-w, sum s = interpreter.regstack.pop() scalar = long(s[0]) symbols = map(str, s[1:]) interpreter.current.emit_wyde_sum(symbols, delta = scalar % 0x10000L, relative = 1) $-w, sym interpreter.current.emit_wyde_sum([str(interpreter.regstack.pop())], relative = 1) =: int|name if not name[0] in '&#!': name = '&' + name value = interpreter.regstack.pop() interpreter.current.place_symbol(name, value) align int interpreter.current.align(long(interpreter.regstack.pop())) b, int interpreter.current[::1] = long(interpreter.regstack.pop()) b, sum sum = interpreter.regstack.pop() interpreter.current.emit_byte_sum(map(str, sum.get_symbols()), delta = sum.get_scalar()) b, sym interpreter.current[::1] = str(interpreter.regstack.pop()) bind int sym symbol = interpreter.regstack.pop() value = interpreter.regstack.pop() interpreter.current.place_symbol(symbol, value) current-offset interpreter.regstack.append(Integer_Literal(interpreter.current.memsz())) label|name if not name[0] in '&#!': name = '&' + name interpreter.current.place_symbol(name) padded-symbol, sym int # takes a symbol S and an integer N. Emits S, character-wise, # padded by zero bytes to N and cut as needed. # The symbol prefix will not be emitted. n = interpreter.regstack.pop() s = interpreter.regstack.pop() s = (str(s) + '\0' * n)[1:n + 1] interpreter.current.emit_string(s) reserve int interpreter.current.skip(interpreter.regstack.pop()) t, int interpreter.current[::4] = long(interpreter.regstack.pop()) t, sum sum = interpreter.regstack.pop() interpreter.current.emit_tetra_sum(map(str, sum.get_symbols()), delta = sum.get_scalar()) t, sym interpreter.current[::4] = str(interpreter.regstack.pop()) w, int interpreter.current[::2] = long(interpreter.regstack.pop()) w, sum sum = interpreter.regstack.pop() interpreter.current.emit_wyde_sum(map(str, sum.get_symbols()), delta = sum.get_scalar()) w, sym interpreter.current[::2] = str(interpreter.regstack.pop()) # vim: ft=python Index: Makefile.am =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/Makefile.am,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -r1.24 -r1.25 --- Makefile.am 18 May 2003 16:01:14 -0000 1.24 +++ Makefile.am 18 May 2003 17:22:55 -0000 1.25 @@ -8,7 +8,7 @@ EXTRA_DIST = .cvsignore .pycheckrc struburn.wisp bits.py linkie.py \ coff.py elf.py pe.py \ - builtin.tran \ + tran.py tran-builtins tran-emitters builtin.tran \ i8086.tran i80386.tran i80486.tran pentium.tran ia16.tran ia32.tran \ coff.tran elf.tran mz.tran pe.tran \ winapi.tran \ Index: tran-builtins =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/tran-builtins,v retrieving revision 1.35 retrieving revision 1.36 diff -u -d -r1.35 -r1.36 --- tran-builtins 18 May 2003 15:56:30 -0000 1.35 +++ tran-builtins 18 May 2003 17:22:55 -0000 1.36 @@ -6,24 +6,6 @@ # #### @(#) $Id$ -$-t, sum - s = interpreter.regstack.pop() - scalar = long(s[0]) - symbols = map(str, s[1:]) - interpreter.current.emit_tetra_sum(symbols, delta = scalar % 0x100000000L, relative = 1) - -$-t, sym - interpreter.current.emit_tetra_sum([str(interpreter.regstack.pop())], relative = 1) - -$-w, sum - s = interpreter.regstack.pop() - scalar = long(s[0]) - symbols = map(str, s[1:]) - interpreter.current.emit_wyde_sum(symbols, delta = scalar % 0x10000L, relative = 1) - -$-w, sym - interpreter.current.emit_wyde_sum([str(interpreter.regstack.pop())], relative = 1) - + int int n = interpreter.regstack.pop(); m = interpreter.regstack.pop() interpreter.regstack.append(m + n) @@ -122,37 +104,10 @@ interpreter.register_names[r] = tok regs_state0(family) -=: int|name - if not name[0] in '&#!': name = '&' + name - value = interpreter.regstack.pop() - interpreter.current.place_symbol(name, value) - -align int - interpreter.current.align(long(interpreter.regstack.pop())) - -b, int - interpreter.current[::1] = long(interpreter.regstack.pop()) - -b, sum - sum = interpreter.regstack.pop() - interpreter.current.emit_byte_sum(map(str, sum.get_symbols()), - delta = sum.get_scalar()) - -b, sym - interpreter.current[::1] = str(interpreter.regstack.pop()) - -bind int sym - symbol = interpreter.regstack.pop() - value = interpreter.regstack.pop() - interpreter.current.place_symbol(symbol, value) - commit interpreter.regstack.reverse() interpreter.toksrc.push(Macro_Cursor(['$push'] * len(interpreter.regstack))) -current-offset - interpreter.regstack.append(Integer_Literal(interpreter.current.memsz())) - drop any interpreter.regstack.pop() @@ -175,10 +130,6 @@ interpreter.regstack.append(Symbol_Literal(before + core1 + \ middle + core2 + after)) -label|name - if not name[0] in '&#!': name = '&' + name - interpreter.current.place_symbol(name) - minor reg interpreter.regstack.append(Integer_Literal(interpreter.regstack.pop()[-1])) @@ -189,18 +140,6 @@ if not name[0] in '&#!': name = '&' + name interpreter.regstack.append(Symbol_Literal(name)) -padded-symbol, sym int - # takes a symbol S and an integer N. Emits S, character-wise, - # padded by zero bytes to N and cut as needed. - # The symbol prefix will not be emitted. - n = interpreter.regstack.pop() - s = interpreter.regstack.pop() - s = (str(s) + '\0' * n)[1:n + 1] - interpreter.current.emit_string(s) - -reserve int - interpreter.current.skip(interpreter.regstack.pop()) - swap any any y = interpreter.regstack.pop(); x = interpreter.regstack.pop() interpreter.regstack.append(y); interpreter.regstack.append(x) @@ -212,31 +151,9 @@ interpreter.regstack.extend(chars) interpreter.regstack.append(len(chars)) -t, int - interpreter.current[::4] = long(interpreter.regstack.pop()) - -t, sum - sum = interpreter.regstack.pop() - interpreter.current.emit_tetra_sum(map(str, sum.get_symbols()), - delta = sum.get_scalar()) - -t, sym - interpreter.current[::4] = str(interpreter.regstack.pop()) - times int|word multiplier = interpreter.regstack.pop() interpreter.toksrc.push(Macro_Cursor([word] * multiplier)) - -w, int - interpreter.current[::2] = long(interpreter.regstack.pop()) - -w, sum - sum = interpreter.regstack.pop() - interpreter.current.emit_wyde_sum(map(str, sum.get_symbols()), - delta = sum.get_scalar()) - -w, sym - interpreter.current[::2] = str(interpreter.regstack.pop()) weaker sym sym = str(interpreter.regstack.pop()) Index: tran.py =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/tran.py,v retrieving revision 1.114 retrieving revision 1.115 diff -u -d -r1.114 -r1.115 --- tran.py 18 May 2003 16:55:48 -0000 1.114 +++ tran.py 18 May 2003 17:22:55 -0000 1.115 @@ -224,6 +224,7 @@ um = {'...': Unique('...')} for m in 'any const int lit sum sym'.split(' '): um[m] = Class_Marker(m) load_primitives(um, 'tran-builtins') + load_primitives(um, 'tran-emitters') return um class Interpreter (object): |