The attached patch munges the tests (well, examples really) in the following ways: a) use set instead of set_i_ic b) more comments c) newlines at strategic places This brings up two problems I don't understand. test.pasm produces the following crud for me (meaning the I to N stuff hasn't worked): Quick test loop Time at start: 1000488350 Time at end: 1000488353 Loops: 10000000 Duration: 3 secs No. of ops: 30000000 No. of ops: -8990954754350296022167387644106214652157094802527252804556020215088999927072646435375341811378307171461854551678538697264100821727119019984740237830264020440104489381149510991872.000000 (float) Duration: -2.000000 (float) Ops per sec: -0.000000 and for some reason the assembler can't grok substr in test2: Error (10): No opcode substr in <WAX: substr S2, S1, I3, I4> I must be tired but I just can't figure out why. HTH, Leon -- Leon Brocard.............................http://www.astray.com/ Iterative Software...........http://www.iterative-software.com/ ... Mr. Worf, blow the Windows-powered Borg ship out of this Universe!
Index: t/euclid.pasm =================================================================== RCS file: /home/perlcvs/parrot/t/euclid.pasm,v retrieving revision 1.2 diff -u -r1.2 euclid.pasm --- t/euclid.pasm 2001/09/13 14:34:28 1.2 +++ t/euclid.pasm 2001/09/14 17:14:00 @@ -22,12 +22,12 @@ main: set I1, 96 set I2, 64 set I3, 0 - set S1, "Algorithm E (Euclid's algorithm)" - print S1 + print "Algorithm E (Euclid's algorithm): " e1: mod I4, I1, I2 e2: eq I4, I3, done, e3 e3: set I1, I2 set I2, I4 branch e1 done: print I2 + print "\n" end Index: t/test.pasm =================================================================== RCS file: /home/perlcvs/parrot/t/test.pasm,v retrieving revision 1.1 diff -u -r1.1 test.pasm --- t/test.pasm 2001/09/10 22:18:43 1.1 +++ t/test.pasm 2001/09/14 17:14:00 @@ -1,24 +1,37 @@ - time_i I1 - set_i_ic I2, 0 - set_i_ic I3, 1 - set_i_ic I4, 10000000 -REDO: eq_i_ic I2, I4, DONE, NEXT -NEXT: add_i I2, I2, I3 - branch_ic REDO -DONE: time_i I5 - print_i I1 - print_i I5 - print_i I2 - sub_i I2, I5, I1 - print_i I2 - set_i_ic I1, 3 - mul_i I4, I4, I1 - iton_n_i N1, I4 - iton_n_i N2, I2 - print_i I4 - print_n N1 - print_i I2 - print_n N2 - div_n N1, N1, N2 - print_n N1 - end +# This example parrot assembly tests how long a Parrot operator takes +# to dispatch + + print "Quick test loop\n" + time I1 + set I2, 0 + set I3, 1 + set I4, 10000000 +REDO: eq I2, I4, DONE, NEXT +NEXT: add I2, I2, I3 + branch REDO +DONE: time I5 + print "Time at start: " + print I1 + print "\n Time at end: " + print I5 + print "\n Loops: " + print I2 + print "\n Duration: " + sub I2, I5, I1 + print I2 + print " secs\n No. of ops: " + # There are 3 ops in the loop above + set I1, 3 + mul I4, I4, I1 + iton N1, I4 + iton N2, I2 + print I4 + print "\n No. of ops: " + print N1 + print " (float)\n Duration: " + print N2 + print " (float) \n Ops per sec: " + div N1, N1, N2 + print N1 + print "\n" + end Index: t/test2.pasm =================================================================== RCS file: /home/perlcvs/parrot/t/test2.pasm,v retrieving revision 1.3 diff -u -r1.3 test2.pasm --- t/test2.pasm 2001/09/13 07:14:25 1.3 +++ t/test2.pasm 2001/09/14 17:14:00 @@ -1,15 +1,20 @@ - set_i_ic I2, 1 - set_i_ic I1, 0 - set_s_sc S1, "Hello World" - set_i_ic I3, 0 - set_i_ic I4, 0 - length_i_s I5, S1 -WAX: substr_s_s_i S2, S1, I3, I4 - print_s S2 - add_i I4, I4, I2 - eq_i_ic I4, I5, WANE, WAX -WANE: length_i_s I1, S1 - print_s S1 - chopn_s_ic S1, 1 - eq_i_ic I1, I3, DONE, WANE -DONE: end +# This prints a pleasing sideways triangle composed of the phrase +# "Hello World" + + set I2, 1 + set I1, 0 + set S1, "Hello World" + set I3, 0 + set I4, 0 + length I5, S1 +WAX: substr S2, S1, I3, I4 + print S2 + print "\n" + add I4, I4, I2 + eq I4, I5, WANE, WAX +WANE: length I1, S1 + print S1 + print "\n" + chopn S1, 1 + eq I1, I3, DONE, WANE +DONE: end Index: t/test3.pasm =================================================================== RCS file: /home/perlcvs/parrot/t/test3.pasm,v retrieving revision 1.2 diff -u -r1.2 test3.pasm --- t/test3.pasm 2001/09/14 09:08:07 1.2 +++ t/test3.pasm 2001/09/14 17:14:00 @@ -1,198 +1,280 @@ - set_i_ic I1, 0 - print_i I1 +# This tests that the register ops are working + + set I1, 0 + print I1 + print "\n" push_i - set_i_ic I1, 1 - print_i I1 + set I1, 1 + print I1 + print "\n" push_i - set_i_ic I1, 2 - print_i I1 + set I1, 2 + print I1 + print "\n" push_i - set_i_ic I1, 3 - print_i I1 + set I1, 3 + print I1 + print "\n" push_i - set_i_ic I1, 4 - print_i I1 + set I1, 4 + print I1 + print "\n" push_i - set_i_ic I1, 5 - print_i I1 + set I1, 5 + print I1 + print "\n" push_i - set_i_ic I1, 6 - print_i I1 + set I1, 6 + print I1 + print "\n" push_i - set_i_ic I1, 7 - print_i I1 + set I1, 7 + print I1 + print "\n" push_i - set_i_ic I1, 8 - print_i I1 + set I1, 8 + print I1 + print "\n" push_i - set_i_ic I1, 9 - print_i I1 + set I1, 9 + print I1 + print "\n" push_i - set_i_ic I1, 0 - print_i I1 + set I1, 0 + print I1 + print "\n" push_i - set_i_ic I1, 1 - print_i I1 + set I1, 1 + print I1 + print "\n" push_i - set_i_ic I1, 2 - print_i I1 + set I1, 2 + print I1 + print "\n" push_i - set_i_ic I1, 3 - print_i I1 + set I1, 3 + print I1 + print "\n" push_i - set_i_ic I1, 4 - print_i I1 + set I1, 4 + print I1 + print "\n" push_i - set_i_ic I1, 5 - print_i I1 + set I1, 5 + print I1 + print "\n" push_i - set_i_ic I1, 6 - print_i I1 + set I1, 6 + print I1 + print "\n" push_i - set_i_ic I1, 7 - print_i I1 + set I1, 7 + print I1 + print "\n" push_i - set_i_ic I1, 8 - print_i I1 + set I1, 8 + print I1 + print "\n" push_i - set_i_ic I1, 9 - print_i I1 - print_i I1 + set I1, 9 + print I1 + print "\n" + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 - set_i_ic I1, 0 - print_i I1 + print I1 + print "\n" + set I1, 0 + print I1 + print "\n" push_i - set_i_ic I1, 1 - print_i I1 + set I1, 1 + print I1 + print "\n" push_i - set_i_ic I1, 2 - print_i I1 + set I1, 2 + print I1 + print "\n" push_i - set_i_ic I1, 3 - print_i I1 + set I1, 3 + print I1 + print "\n" push_i - set_i_ic I1, 4 - print_i I1 + set I1, 4 + print I1 + print "\n" push_i - set_i_ic I1, 5 - print_i I1 + set I1, 5 + print I1 + print "\n" push_i - set_i_ic I1, 6 - print_i I1 + set I1, 6 + print I1 + print "\n" push_i - set_i_ic I1, 7 - print_i I1 + set I1, 7 + print I1 + print "\n" push_i - set_i_ic I1, 8 - print_i I1 + set I1, 8 + print I1 + print "\n" push_i - set_i_ic I1, 9 - print_i I1 + set I1, 9 + print I1 + print "\n" push_i - set_i_ic I1, 0 - print_i I1 + set I1, 0 + print I1 + print "\n" push_i - set_i_ic I1, 1 - print_i I1 + set I1, 1 + print I1 + print "\n" push_i - set_i_ic I1, 2 - print_i I1 + set I1, 2 + print I1 + print "\n" push_i - set_i_ic I1, 3 - print_i I1 + set I1, 3 + print I1 + print "\n" push_i - set_i_ic I1, 4 - print_i I1 + set I1, 4 + print I1 + print "\n" push_i - set_i_ic I1, 5 - print_i I1 + set I1, 5 + print I1 + print "\n" push_i - set_i_ic I1, 6 - print_i I1 + set I1, 6 + print I1 + print "\n" push_i - set_i_ic I1, 7 - print_i I1 + set I1, 7 + print I1 + print "\n" push_i - set_i_ic I1, 8 - print_i I1 + set I1, 8 + print I1 + print "\n" push_i - set_i_ic I1, 9 - print_i I1 - print_i I1 + set I1, 9 + print I1 + print "\n" + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 + print I1 + print "\n" pop_i - print_i I1 - end + print I1 + print "\n" + end