Re: pointers to variables
- Posted by prickle Aug 02, 2009
- 1208 views
Sweet. Looks like I got my back end. Supports all them new SIMD x86 opcodes I expect.
I won't want it for a while. Sounds like it's still in active development anyway.
So people like me are execution-time performance junkies. It strikes me that most Euphorians are probably attracted more by development-time performance and ease. I like this too. I think I know how to combine both and make assembled power easily available to the whole Euphoria community.
Currently, the core of the evaluator works like this fragment:
var = --fractal type variable declarations "real a , b , c , d \n"& "real x, y, z, old_x, old_y, old_z \n" & "real temp_x, temp_y, temp_z \n"& "int maxint = 255 \n" vars = read_variables(var) op = --Hopalong fractal iteration parse("temp_x = old_x + d : y = a - old_x")& "fld qword ptr[old_x] " & "ftst " & "fstsw ax " & "fstp st(0) " & "sahf " & "ja hopper_pos " & parse("x = old_y + sqrt(abs(b * temp_x - c))") & --on negative old_x "jmp hopper_done " & "hopper_pos: " & parse("x = old_y - sqrt(abs(b * temp_x - c))") & --on positive old_x "hopper_done: " bits = get_asm(op) --Everything else...
As you can see at the moment it is not much more than a asm writer's convenience, it only handles math and simple vars. Logic and flow are still hand crafted. I have made a syntax that already differs from Euphoria despite the fact the evaluator has no statements! This will change, I expect it should be made at least superficially similar to a subset of Euphoria's own syntax and should definitely not require any raw x86 ops.
I would appreciate any comment on this.
Cheers, Nick.