Parrot::OpTrans

Parrot::OpTrans is a Perl module that can transform Ops to C Code.
Download

Parrot::OpTrans Ranking & Summary

Advertisement

  • Rating:
  • License:
  • Perl Artistic License
  • Price:
  • FREE
  • Publisher Name:
  • The Parrot Project Team
  • Publisher web site:
  • http://search.cpan.org/~ltoetsch/parrot-0.4.5/lib/Parrot/OpTrans.pm

Parrot::OpTrans Tags


Parrot::OpTrans Description

Parrot::OpTrans is a Perl module that can transform Ops to C Code. Parrot::OpTrans is a Perl module that can transform Ops to C Code.Parrot::OpTrans is the abstract superclass for the Parrot op to C transforms. Each transform contains various bits of information needed to generate the C code, and creates a different type of run loop. The methods defined here supply various default values and behaviour common to all transforms.The subclass hierarchy is as follows: OpTrans |_________________________ | | | C CGoto Compiled | | CPrederef | | | | | |_________| | | CSwitch CGPClass Methodsnew()Returns a new instance.Instance Methodsprefix()Returns the default 'Parrot_' prefix.Used by Parrot::Op's func_name() to individuate op function names.suffix()Implemented in subclasses to return a suffix with which to individuate variable names. This default implementation returns an empty string.defines()Implemented in subclasses to return the C #define macros required.opsarraytype()Returns the type for the array of opcodes. By default here it's an array opcode_t, but the prederef runops core uses an array of void* to do its clever tricks.core_type()Implemented in subclasses to return the type of core created by the transform. This default implementation raises an exception indicating that the core type is missing. See the Parrot_Run_core_t enum in include/parrot/interpreter.h for a list of the core types.core_prefix()Implemented in subclasses to return a short prefix indicating the core type used to individuate core function names.run_core_func_decl($base)Optionally implemented in subclasses to return the C code for the run core function declaration. $base is the name of the main ops file minus the .ops extension.ops_addr_decl($base_suffix)Optionally implemented in subclasses to return the C code for the ops address declaration. $base_suffix is the name of the main ops file minus the .ops extension with suffix() and an underscore appended.run_core_func_decl($base)Optionally implemented in subclasses to return the C code for the run core function declaration. $base is the same as for run_core_func_decl().run_core_func_start()Implemented in subclasses, if run_core_func_decl() is implemented, to return the C code prior to the run core function.run_core_after_addr_table($base_suffix)Optionally implemented in subclasses to return the run core C code for section after the address table. $base_suffix is the same as for ops_addr_decl().run_core_finish($base)Implemented in subclasses to return the C code following the run core function. $base is the same as for run_core_func_decl().init_func_init1($base)Optionally implemented in subclasses to return the C code for the core's init function. $base is the same as for run_core_func_decl().init_set_dispatch($base_suffix)Optionally implemented in subclasses to return the C code for initializing the dispatch mechanism within the core's init function. $base_suffix is the same as for ops_addr_decl().Macro SubstitutionsThe following methods are called by Parrot::OpFile to perform ops file macro substitutions.access_arg($type, $value, $op)Implemented in subclasses to return the C code for the specified op argument type and value. $op is an instance of Parrot::Op.gen_goto($where)The various goto_X methods below call this method with the return value of an expr_X method (implemented in subclass).restart_address($address)Implemented in subclasses to return the C code for restart ADDRESS($address).restart_offset($offset)Implemented in subclasses to return the C code for restart OFFSET($offset).goto_address($address)Transforms the goto ADDRESS($address) macro in an ops file into the relevant C code.goto_offset($offset)Transforms the goto OFFSET($offset) macro in an ops file into the relevant C code.goto_pop()Transforms the goto POP($address) macro in an ops file into the relevant C code.expr_offset($offset)Implemented in subclasses to return the C code for OFFSET($offset). Called by goto_offset().expr_address($address)Implemented in subclasses to return the C code for ADDRESS($address). Called by goto_address(). Requirements: · Perl


Parrot::OpTrans Related Software