> If you really want a comparison, here's one. Take this loop: > > i = 0; > while (i < 1000) { > i = i + 7; > } > > with the ops executed in the loop marked with pipes. The corresponding > parrot code would be: > > getaddr P0, i > store P0, 0 > store I0, 1000 > foo: | branchgt end, P0, I0 > | add P0, P0, 7 > | jump foo I think dan gave a straight forward translation, since it does not really use the int register. The optimized code will be faster. store i1, 0; store i2, 1000; jump L2; L1: add i1, 7 => i1; L2: branchlt i1, i2 => L1; getaddr i => P0; store i1 => P0; Howerver, I like to point out one hidden overhead of register opcode is decoding the parameter. The add instrction of stack machine does not have args, but for register machine, it has 3 arguments. Hong
- Re: An overview of the Parrot interpreter Uri Guttman
- Re: An overview of the Parrot interpreter Uri Guttman
- Re: An overview of the Parrot interpreter Dan Sugalski
- Re: An overview of the Parrot interpreter Benjamin Stuhl
- Re: An overview of the Parrot interpreter Paolo Molaro
- Re: An overview of the Parrot interpreter Paolo Molaro
- Re: An overview of the Parrot interpreter Dan Sugalski
- Re: An overview of the Parrot interpreter Uri Guttman
- Re: An overview of the Parrot interpreter Dan Sugalski
- RE: An overview of the Parrot interpreter Hong Zhang
- RE: An overview of the Parrot interpreter Hong Zhang
- RE: An overview of the Parrot interpreter Dan Sugalski
- Re: An overview of the Parrot interpreter Piers Cawley
- Re: An overview of the Parrot interpreter Simon Cozens
- Re: An overview of the Parrot interpreter Ken Fox
- Re: An overview of the Parrot interpreter Simon Cozens
- Re: An overview of the Parrot interpreter Paolo Molaro
- Re: An overview of the Parrot interpreter Paolo Molaro
- Re: An overview of the Parrot interpreter Ken Fox
- Re: An overview of the Parrot interpreter Paolo Molaro
- Re: An overview of the Parrot interpreter Dan Sugalski