Search the web
Sign In
New User? Sign Up
staticrecompilers · Static Binary Translation
? Already a member? Sign in to Yahoo!

Yahoo! Groups Tips

Did you know...
Show off your group to the world. Share a photo of your group with us.

Best of Y! Groups

   Check them out and nominate your group.
Having problems with message search? Fill out this form to ensure your group is one of the first to be migrated to the new message search system.

Messages

  Messages Help
Advanced
BASIC Interpreter   Message List  
Reply | Forward Message #312 of 326 |
Yeah, I know, not strictly on topic, but I just got my expression
evaluator emitting correct uOps for a BASIC interpreter.

Anyway, a sequence like this:

Dim i(10, 20, 30) As Double
Dim j As Int
j=5
i(0,0,0)=i(1,2,3)+i(4,5,6)

Generates:

1 : EXEC_VAR_CREATE : Local [0] of type EVAR_SIGNED_INT
1 : EXEC_ASSIGN : Local [0](10) = 10
1 : EXEC_VAR_CREATE : Local [1] of type EVAR_SIGNED_INT
1 : EXEC_ASSIGN : Local [1](20) = 20
1 : EXEC_VAR_CREATE : Local [2] of type EVAR_SIGNED_INT
1 : EXEC_ASSIGN : Local [2](30) = 30
1 : EXEC_VAR_CREATE : Global [0] "i" of type EVAR_DOUBLE 3 dimensions
1 : EXEC_VAR_DELETE : Local [0]
1 : EXEC_VAR_DELETE : Local [1]
1 : EXEC_VAR_DELETE : Local [2]
2 : EXEC_VAR_CREATE : Global [1] "j" of type EVAR_SIGNED_INT
3 : EXEC_ASSIGN : Global [1](5) = 5
4 : EXEC_VAR_CREATE : Local [0] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [0](1) = 1
4 : EXEC_VAR_CREATE : Local [1] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [1](2) = 2
4 : EXEC_VAR_CREATE : Local [2] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [2](3) = 3
4 : EXEC_VAR_CREATE : Local [3] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [3](4) = 4
4 : EXEC_VAR_CREATE : Local [4] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [4](5) = 5
4 : EXEC_VAR_CREATE : Local [5] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [5](6) = 6
4 : EXEC_OP : Global [0](0.000000) "i" = Global [0](0.000000)
"i" + Global [0](0.000000) "i"
4 : EXEC_VAR_DELETE : Local [0]
4 : EXEC_VAR_DELETE : Local [1]
4 : EXEC_VAR_DELETE : Local [2]
4 : EXEC_VAR_DELETE
: Local [3]
4 : EXEC_VAR_DELETE : Local [4]
4 : EXEC_VAR_DELETE : Local [5]

Now, let's go for the nasty (believe it or not, the sequence of uOps it
generates is 100% correct):

Dim i(10, 20, 30) As Double
Dim j As Int
j=5
i(0,0,0)=i(1, i(7,8,9) * i(9,10,11) /i( i(5,2,1), 14*7/9, i(7,3,2)),14)+i(4*j +
7,5,6)

Generates:

1 : EXEC_VAR_CREATE : Local [0] of type EVAR_SIGNED_INT
1 : EXEC_ASSIGN : Local [0](10) = 10
1 : EXEC_VAR_CREATE : Local [1] of type EVAR_SIGNED_INT
1 : EXEC_ASSIGN : Local [1](20) = 20
1 : EXEC_VAR_CREATE : Local [2] of type EVAR_SIGNED_INT
1 : EXEC_ASSIGN : Local [2](30) = 30
1 : EXEC_VAR_CREATE : Global [0] "i" of type EVAR_DOUBLE 3 dimensions
1 : EXEC_VAR_DELETE : Local [0]
1 : EXEC_VAR_DELETE : Local [1]
1 : EXEC_VAR_DELETE : Local [2]
2 : EXEC_VAR_CREATE : Global [1] "j" of type EVAR_SIGNED_INT
3 : EXEC_ASSIGN : Global [1](5) = 5
4 : EXEC_VAR_CREATE : Local [0] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [0](1) = 1
4 : EXEC_VAR_CREATE : Local [1] of type EVAR_SIGNED_INT
4 : EXEC_VAR_CREATE : Local [2] of type EVAR_UNSPECIFIED
4 : EXEC_VAR_CREATE : Local [3] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [3](7) = 7
4 : EXEC_VAR_CREATE : Local [4] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [4](8) = 8
4 : EXEC_VAR_CREATE : Local [5] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [5](9) = 9
4 : EXEC_VAR_CREATE : Local [6] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [6](9) = 9
4 : EXEC_VAR_CREATE : Local [7] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [7](10) = 10
4 : EXEC_VAR_CREATE : Local [8] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [8](11) = 11
4 : EXEC_OP : Local [2](0.000000) = Global [0](0.000000) "i" *
Global [0](0.000000) "i"
4 : EXEC_VAR_DELETE : Local [3]
4 : EXEC_VAR_DELETE : Local [4]
4 : EXEC_VAR_DELETE : Local [5]
4 : EXEC_VAR_DELETE : Local [6]
4 : EXEC_VAR_DELETE : Local [7]
4 : EXEC_VAR_DELETE : Local [8]
4 : EXEC_VAR_CREATE : Local [3] of type EVAR_SIGNED_INT
4 : EXEC_VAR_CREATE : Local [4] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [4](5) = 5
4 : EXEC_VAR_CREATE : Local [5] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [5](2) = 2
4 : EXEC_VAR_CREATE : Local [6] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [6](1) = 1
4 : EXEC_ASSIGN : Local [3](0) = Global [0](0.000000) "i"
4 : EXEC_VAR_DELETE : Local [4]
4 : EXEC_VAR_DELETE : Local [5]
4 : EXEC_VAR_DELETE : Local [6]
4 : EXEC_VAR_CREATE : Local [4] of type EVAR_SIGNED_INT
4 : EXEC_VAR_CREATE : Local [5] of type EVAR_UNSPECIFIED
4 : EXEC_OP : Local [5](98) = 14 * 7
4 : EXEC_OP : Local [4](10) = Local [5](98) / (FP) 9
4 : EXEC_VAR_DELETE : Local [5]
4 : EXEC_VAR_CREATE : Local [5] of type EVAR_SIGNED_INT
4 : EXEC_VAR_CREATE : Local [6] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [6](7) = 7
4 : EXEC_VAR_CREATE : Local [7] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [7](3) = 3
4 : EXEC_VAR_CREATE : Local [8] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [8](2) = 2
4 : EXEC_ASSIGN : Local [5](0) = Global [0](0.000000) "i"
4 : EXEC_VAR_DELETE : Local [6]
4 : EXEC_VAR_DELETE : Local [7]
4 : EXEC_VAR_DELETE : Local [8]
4 : EXEC_OP : Local [1](0) = Local [2](0.000000) / (FP) Global
[0](0.000000) "i"
4 : EXEC_VAR_DELETE : Local [3]
4 : EXEC_VAR_DELETE : Local [4]
4 : EXEC_VAR_DELETE : Local [5]
4 : EXEC_VAR_DELETE : Local [2]
4 : EXEC_VAR_CREATE : Local [2] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [2](14) = 14
4 : EXEC_VAR_CREATE : Local [3] of type EVAR_SIGNED_INT
4 : EXEC_VAR_CREATE : Local [4] of type EVAR_UNSPECIFIED
4 : EXEC_OP : Local [4](20) = 4 * Global [1](5)
4 : EXEC_OP : Local [3](27) = Local [4](20) + 7
4 : EXEC_VAR_DELETE : Local [4]
4 : EXEC_VAR_CREATE : Local [4] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [4](5) = 5
4 : EXEC_VAR_CREATE : Local [5] of type EVAR_SIGNED_INT
4 : EXEC_ASSIGN : Local [5](6) = 6
4 : EXEC_OP : Global [0](0.000000) "i" = Global [0](0.000000)
"i" + Global [0](0.000000) "i"
4 : EXEC_VAR_DELETE : Local [0]
4 : EXEC_VAR_DELETE : Local [1]
4 : EXEC_VAR_DELETE : Local [2]
4 : EXEC_VAR_DELETE : Local [3]
4 : EXEC_VAR_DELETE : Local [4]
4 : EXEC_VAR_DELETE : Local [5]

So yes, folks, you too can write lousy code and we'll still run it. ;-)

The final values being pulled from (and written to) the arrays aren't
working yet, but they will soon...

-->Neil

----------------------------------------------------------------------------
C. Neil Bradley - KE7IXP - The one eyed man in the land of the blind is not
king. He's a prisoner.



Sun Aug 31, 2008 7:28 am

nb@...
Send Email Send Email

Forward
Message #312 of 326 |
Expand Messages Author Sort by Date

Yeah, I know, not strictly on topic, but I just got my expression evaluator emitting correct uOps for a BASIC interpreter. Anyway, a sequence like this: Dim...
Neil Bradley
nb@...
Send Email
Aug 31, 2008
7:28 am

... Hi Neil - Cris Cranford over in "compilers101" is in the early stages of writing a BASIC as well - I can't remember if I ever dragged you into that group...
Graham Toal
graham_toal
Offline Send Email
Aug 31, 2008
3:32 pm

... That would be excellent! Where/how do I get subscribed? -->Neil ... C. Neil Bradley - KE7IXP - The one eyed man in the land of the blind is not king. He's...
Neil Bradley
nb@...
Send Email
Aug 31, 2008
5:44 pm
Advanced

Copyright © 2009 Yahoo! Inc. All rights reserved.
Privacy Policy - Terms of Service - Guidelines - Help