[Wisp-cvs] wisp/users/dig mswhello.tran,1.8,1.9 tran-builtins,1.7,1.8
Status: Alpha
Brought to you by:
digg
From: <di...@us...> - 2003-05-16 20:34:45
|
Update of /cvsroot/wisp/wisp/users/dig In directory sc8-pr-cvs1:/tmp/cvs-serv17288 Modified Files: mswhello.tran tran-builtins Log Message: introduced the 3rev, 4rev, and 5rev builtins Index: mswhello.tran =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/mswhello.tran,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- mswhello.tran 16 May 2003 17:27:01 -0000 1.8 +++ mswhello.tran 16 May 2003 20:34:38 -0000 1.9 @@ -15,9 +15,8 @@ // :macro GetStdHandle \ (handle-number -- handle) commit ref GetStdHandle@kernel32 $call %eax ; -\ FIXME: reverse arguments -\ // :macro WriteFile \ (file buffer count result* overlapped* -- result) -\ commit ref WriteFile@kernel32 $call %eax ; +// :macro WriteFile \ (file buffer count result* overlapped* -- result) + 5rev commit ref WriteFile@kernel32 $call %eax ; // :macro ExitProcess \ (code --) commit ref ExitProcess@kernel32 $call ; @@ -26,8 +25,7 @@ label _start -11 GetStdHandle - 0 $push ref rckeep $push 7 $push ref message $push $push - ref WriteFile@kernel32 $call + ref message 7 ref rckeep 0 WriteFile drop 0 ExitProcess .data Index: tran-builtins =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/tran-builtins,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- tran-builtins 16 May 2003 17:21:27 -0000 1.7 +++ tran-builtins 16 May 2003 20:34:38 -0000 1.8 @@ -43,6 +43,21 @@ // Regstack = [] +3rev + if len(Regstack) < 3: raise 'unstacking is not implemented yet' + r = Regstack[-3:]; r.reverse() + Regstack = Regstack[:-3] + r + +4rev + if len(Regstack) < 4: raise 'unstacking is not implemented yet' + r = Regstack[-4:]; r.reverse() + Regstack = Regstack[:-4] + r + +5rev + if len(Regstack) < 5: raise 'unstacking is not implemented yet' + r = Regstack[-5:]; r.reverse() + Regstack = Regstack[:-5] + r + :macro|name if len(Regstack) > 2: raise 'too long argument pattern', Regstack name = ' '.join([name] + [matchers(i).next() for i in Regstack]) |