[Wisp-cvs] wisp/users/dig tran-builtins,1.5,1.6 tran.py,1.73,1.74
Status: Alpha
Brought to you by:
digg
From: <di...@us...> - 2003-05-16 15:41:23
|
Update of /cvsroot/wisp/wisp/users/dig In directory sc8-pr-cvs1:/tmp/cvs-serv23956 Modified Files: tran-builtins tran.py Log Message: moved sections to the interpreter capsule Index: tran-builtins =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/tran-builtins,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- tran-builtins 16 May 2003 15:24:28 -0000 1.5 +++ tran-builtins 16 May 2003 15:41:18 -0000 1.6 @@ -10,10 +10,10 @@ s = Regstack.pop() scalar = long(s[0]) symbols = map(str, s[1:]) - cursect.emit_tetra_sum(symbols, delta = scalar % 0x100000000L, relative = 1) + interpreter.current.emit_tetra_sum(symbols, delta = scalar % 0x100000000L, relative = 1) $-t, sym - cursect.emit_tetra_sum([str(Regstack.pop())], relative = 1) + interpreter.current.emit_tetra_sum([str(Regstack.pop())], relative = 1) + int int n = Regstack.pop(); m = Regstack.pop() @@ -32,13 +32,13 @@ Regstack.append(m - n) .bss - cursect = Bss + interpreter.current = interpreter.bss .data - cursect = Data + interpreter.current = interpreter.data .text - cursect = Text + interpreter.current = interpreter.text // Regstack = [] @@ -80,13 +80,13 @@ interpreter.state = regs_state align int - cursect.align(long(Regstack.pop())) + interpreter.current.align(long(Regstack.pop())) b, int - cursect[::1] = long(Regstack.pop()) + interpreter.current[::1] = long(Regstack.pop()) b, sym - cursect[::1] = str(Regstack.pop()) + interpreter.current[::1] = str(Regstack.pop()) commit Regstack.reverse() @@ -99,7 +99,7 @@ Regstack.append(Regstack[-1]) label|name - cursect.place_symbol('&' + name) + interpreter.current.place_symbol('&' + name) minor reg Regstack.append(Integer_Literal(Regstack.pop()[-1])) @@ -111,22 +111,22 @@ Regstack.append(Symbol_Literal('&' + name)) reserve int - cursect.skip(Regstack.pop()) + interpreter.current.skip(Regstack.pop()) swap any any y = Regstack.pop(); x = Regstack.pop() Regstack.append(y); Regstack.append(x) t, int - cursect[::4] = long(Regstack.pop()) + interpreter.current[::4] = long(Regstack.pop()) t, sym - cursect[::4] = str(Regstack.pop()) + interpreter.current[::4] = str(Regstack.pop()) w, int - cursect[::2] = long(Regstack.pop()) + interpreter.current[::2] = long(Regstack.pop()) w, sym - cursect[::2] = str(Regstack.pop()) + interpreter.current[::2] = str(Regstack.pop()) # vim: ft=python Index: tran.py =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/tran.py,v retrieving revision 1.73 retrieving revision 1.74 diff -u -d -r1.73 -r1.74 --- tran.py 16 May 2003 15:24:29 -0000 1.73 +++ tran.py 16 May 2003 15:41:19 -0000 1.74 @@ -244,11 +244,6 @@ else: raise 'Unknown meaning type in', `Meaning[tok]` else: raise 'bad token', tok -# Main output sections. -Text = Linkie('<') -Data = Linkie('<') -Bss = Linkie('<') -cursect = Text Regstack = [] Generic_Register = Register() reggen = Generic_Register.child_generator() @@ -270,7 +265,7 @@ np = (name + '|').split('|') name = np[0] pa = np[1] - g = 'cursect, Regstack, current_recordee, current_register_index' + g = 'Regstack, current_recordee, current_register_index' exec 'def _p (%s):\n global %s\n%s\n' % (pa, g, code) flags = 0 if pa: flags |= MA_PREFIX @@ -284,6 +279,10 @@ interpreter = container() interpreter.state = outer_state +interpreter.text = Linkie('<') +interpreter.data = Linkie('<') +interpreter.bss = Linkie('<') +interpreter.current = interpreter.text verbose = 0 @@ -314,12 +313,14 @@ if verbose: print '(%s) %s' % (' '.join(map(str, Regstack)), tok) interpreter.state(tok) tok = prep.get_token() - print 'TEXT'; Text.dump() - print 'DATA'; Data.dump() - print 'BSS'; Bss.dump() + print 'TEXT'; interpreter.text.dump() + print 'DATA'; interpreter.data.dump() + print 'BSS'; interpreter.bss.dump() if Regstack: raise 'Regstack not empty after parsing ended', Regstack - binary = elf.make_ELF32_object(text = Text, data = Data, bss = Bss, + binary = elf.make_ELF32_object(text = interpreter.text, + data = interpreter.data, + bss = interpreter.bss, flags = 's') f = open(output_name, 'w') binary.get_file().tofile(f) |