1# Copyright (C) 2001-2006, Parrot Foundation.
2
3=head1 NAME
4
5examples/benchmarks/addit.pasm - Variable Argument Subroutines
6
7=head1 SYNOPSIS
8
9    % time ./parrot examples/benchmarks/addit.pasm
10
11=head1 DESCRIPTION
12
13Joe Wilson's original PASM version of his C<varargs> subroutines
14benchmark. It calls an "add it" function 50000 times in a loop and
15prints the result (21001097.970000).
16
17=cut
18
19.pcc_sub :main _main:
20        new P10, 'ResizableIntegerArray'
21        new P5, 'ResizablePMCArray'
22        push P5, 1000
23        push P5, 7.100
24        push P5, 87
25        push P5, "3.87"
26        push P5, "21000000"
27        set I9, 50000
28AGAIN:
29        dec I9
30        lt I9, 0, FIN
31        local_branch P10, _varargs_adder
32        branch AGAIN
33FIN:
34        print N5
35        print "\n"
36        end
37
38_varargs_adder:
39        new P2, 'Float'
40        set I1, P5
41LOOP:
42        dec I1
43        lt I1, 0, DONE
44        set P1, P5[I1]
45        add P2, P1
46        branch LOOP
47DONE:
48        set N5, P2
49        local_return P10
50
51=head1 SEE ALSO
52
53F<examples/benchmarks/addit.pl>, F<examples/benchmarks/addit.pir>,
54F<examples/benchmarks/addit2.pir>.
55
56=cut
57
58# Local Variables:
59#   mode: pir
60#   fill-column: 100
61# End:
62# vim: expandtab shiftwidth=4 ft=pir:
63