+ $watchme{$_} = {
+ flags => $watchme{$_},
+ valid => [0, undef, undef]
+ };
+ }
+
+ # mark parameters as initialized
+ for($func->{parm_start} .. ($p-1))
+ {
+ $watchme{$_}{valid} = [1, undef, undef]
+ if defined $watchme{$_};
+ }
+ # an initial run of STORE instruction is for receiving extra parameters
+ # (beyond 8). Only possible if the function is declared as having 8 params.
+ # Extra parameters behave otherwise like temps, but are initialized at
+ # startup.
+ for($func->{first_statement} .. (@{$progs->{statements}}-1))
+ {
+ my $s = $progs->{statements}[$_];
+ if($s->{op} eq 'STORE_V')
+ {
+ $watchme{$s->{a}}{valid} = [1, undef, undef]
+ if defined $watchme{$s->{a}};
+ $watchme{$s->{a}+1}{valid} = [1, undef, undef]
+ if defined $watchme{$s->{a}+1};
+ $watchme{$s->{a}+2}{valid} = [1, undef, undef]
+ if defined $watchme{$s->{a}+2};
+ }
+ elsif($s->{op} =~ /^STORE_/)
+ {
+ $watchme{$s->{a}}{valid} = [1, undef, undef]
+ if defined $watchme{$s->{a}};
+ }
+ else
+ {
+ last;
+ }