This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Adding B::Asmdata docs
[perl5.git] / bytecode.pl
index 0d04688..9315739 100644 (file)
@@ -257,11 +257,53 @@ B::Asmdata - Autogenerated data about Perl ops, used to generate bytecode
 
 =head1 SYNOPSIS
 
-       use Asmdata;
+       use B::Asmdata qw(%insn_data @insn_name @optype @specialsv_name);
 
 =head1 DESCRIPTION
 
-See F<ext/B/B/Asmdata.pm>.
+Provides information about Perl ops in order to generate bytecode via
+a bunch of exported variables.  Its mostly used by B::Assembler and
+B::Disassembler.
+
+=over 4
+
+=item %insn_data
+
+  my($bytecode_num, $put_sub, $get_meth) = @$insn_data{$op_name};
+
+For a given $op_name (for example, 'cop_label', 'sv_flags', etc...) 
+you get an array ref containing the bytecode number of the op, a
+reference to the subroutine used to 'PUT', and the name of the method
+used to 'GET'.
+
+=for _private
+Add more detail about what $put_sub and $get_meth are and how to use them.
+
+=item @insn_name
+
+  my $op_name = $insn_name[$bytecode_num];
+
+A simple mapping of the bytecode number to the name of the op.
+Suitable for using with %insn_data like so:
+
+  my $op_info = $insn_data{$insn_name[$bytecode_num]};
+
+=item @optype
+
+  my $op_type = $optype[$op_type_num];
+
+A simple mapping of the op type number to its type (like 'COP' or 'BINOP').
+
+=item @specialsv_name
+
+  my $sv_name = $specialsv_name[$sv_index];
+
+Certain SV types are considered 'special'.  They're represented by
+B::SPECIAL and are refered to by a number from the specialsv_list.
+This array maps that number back to the name of the SV (like 'Nullsv'
+or '&PL_sv_undef').
+
+=back
 
 =head1 AUTHOR