lestes::md::registers::tm_register_base Class Reference

Class represents target-machine register. More...

#include <tm_register_base.g.hh>

Inheritance diagram for lestes::md::registers::tm_register_base:

lestes::std::object lestes::std::mem::keystone lestes::md::registers::tm_register List of all members.

Public Types

typedef ulint id_type

Public Member Functions

tm_register_base::id_type id_get () const
 The method id_get returns the value of the field tm_register_base::id.
void id_set (tm_register_base::id_type)
 The method id_set sets the field tm_register_base::id to the given value.
ulint bitwidth_get () const
 The method bitwidth_get returns the value of the field tm_register_base::bitwidth.
void bitwidth_set (ulint)
 The method bitwidth_set sets the field tm_register_base::bitwidth to the given value.
ptr< ::lestes::std::set<
::lestes::md::types::tm_data_type_base::id_type > > 
compatible_types_get () const
 The method compatible_types_get returns the value of the field tm_register_base::compatible_types.
void compatible_types_set (const ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > &)
 The method compatible_types_set sets the field tm_register_base::compatible_types to the given value.
ptr< ::lestes::std::set< tm_register_base::id_type > > aliases_get () const
 The method aliases_get returns the value of the field tm_register_base::aliases.
void aliases_set (const ptr< ::lestes::std::set< tm_register_base::id_type > > &)
 The method aliases_set sets the field tm_register_base::aliases to the given value.
ptr< ::lestes::std::set< ulint > > move_templates_get () const
 The method move_templates_get returns the value of the field tm_register_base::move_templates.
void move_templates_set (const ptr< ::lestes::std::set< ulint > > &)
 The method move_templates_set sets the field tm_register_base::move_templates to the given value.
lstring asm_output_get () const
 The method asm_output_get returns the value of the field tm_register_base::asm_output.
void asm_output_set (lstring)
 The method asm_output_set sets the field tm_register_base::asm_output to the given value.
ulint flags_get () const
 The method flags_get returns the value of the field tm_register_base::flags.
void flags_set (ulint)
 The method flags_set sets the field tm_register_base::flags to the given value.
bool is_unspillable ()
 Tells whether the current register can't be spilled.
virtual ptr< reflection_listreflection_get () const
 for purposes of dumping
virtual ptr< field_list_listfield_values_get () const
 for purposes of dumping

Static Public Member Functions

static ptr< tm_register_basecreate (tm_register_base::id_type a__tm_register_base__id, ulint a__tm_register_base__bitwidth, ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_register_base__compatible_types, ptr< ::lestes::std::set< tm_register_base::id_type > > a__tm_register_base__aliases, ptr< ::lestes::std::set< ulint > > a__tm_register_base__move_templates, lstring a__tm_register_base__asm_output, ulint a__tm_register_base__flags)
 First generated factory method for class tm_register_base.
static ptr< tm_register_basecreate (tm_register_base::id_type a__tm_register_base__id, ulint a__tm_register_base__bitwidth, ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_register_base__compatible_types, ptr< ::lestes::std::set< tm_register_base::id_type > > a__tm_register_base__aliases, ptr< ::lestes::std::set< ulint > > a__tm_register_base__move_templates, lstring a__tm_register_base__asm_output)
 Second generated factory method for class tm_register_base.

Protected Member Functions

 tm_register_base (tm_register_base::id_type a__tm_register_base__id, ulint a__tm_register_base__bitwidth, ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_register_base__compatible_types, ptr< ::lestes::std::set< tm_register_base::id_type > > a__tm_register_base__aliases, ptr< ::lestes::std::set< ulint > > a__tm_register_base__move_templates, lstring a__tm_register_base__asm_output, ulint a__tm_register_base__flags)
 Generated constructor for class tm_register_base.
virtual void gc_mark ()
 Marking routine for class tm_register_base.

Private Attributes

tm_register_base::id_type id
 The register's id.
ulint bitwidth
 Bitwidth of the register.
srp< ::lestes::std::set<
::lestes::md::types::tm_data_type_base::id_type > > 
compatible_types
 List of datatypes that can be stored in the register.
srp< ::lestes::std::set< tm_register_base::id_type > > aliases
 List of register ids that represents the same physical register as this one does.
srp< ::lestes::std::set< ulint > > move_templates
 List of instructions that can move value between register->register, mem->register, register->mem. Needed for spillcode generation.
lstring asm_output
 Asm label for the register.
ulint flags
 The register's flags.

Static Private Attributes

static ptr< reflection_listreflection = reflection

Detailed Description

Class represents target-machine register.

Note: A concrete derived class is target dependent and it is placed in /target/machine/${TARGET_CPU}/lestes/md/registers/ directory.

Definition at line 42 of file tm_register_base.g.hh.


Member Typedef Documentation

typedef ulint lestes::md::registers::tm_register_base::id_type

Definition at line 44 of file tm_register_base.g.hh.


Constructor & Destructor Documentation

lestes::md::registers::tm_register_base::tm_register_base ( tm_register_base::id_type  a__tm_register_base__id,
ulint  a__tm_register_base__bitwidth,
ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > >  a__tm_register_base__compatible_types,
ptr< ::lestes::std::set< tm_register_base::id_type > >  a__tm_register_base__aliases,
ptr< ::lestes::std::set< ulint > >  a__tm_register_base__move_templates,
lstring  a__tm_register_base__asm_output,
ulint  a__tm_register_base__flags 
) [protected]

Generated constructor for class tm_register_base.

Generated constructor for class tm_register_base.

Author:
lsg

Definition at line 188 of file tm_register_base.g.cc.

Referenced by create().

00195         : ::lestes::std::object(), id(a__tm_register_base__id), bitwidth(a__tm_register_base__bitwidth), compatible_types(checked(a__tm_register_base__compatible_types)), aliases(checked(a__tm_register_base__aliases)), move_templates(checked(a__tm_register_base__move_templates)), asm_output(a__tm_register_base__asm_output), flags(a__tm_register_base__flags)
00196 {}


Member Function Documentation

tm_register_base::id_type lestes::md::registers::tm_register_base::id_get (  )  const

The method id_get returns the value of the field tm_register_base::id.

Returns:
The value of tm_register_base::id.
Author:
lsg

Definition at line 27 of file tm_register_base.g.cc.

References id.

00028 {
00029         return id;
00030 }

void lestes::md::registers::tm_register_base::id_set ( tm_register_base::id_type  x  ) 

The method id_set sets the field tm_register_base::id to the given value.

Parameters:
[in] x The new value to set tm_register_base::id to.
Author:
lsg

Definition at line 36 of file tm_register_base.g.cc.

References id.

00037 {
00038         tm_register_base::id = x;
00039 }

ulint lestes::md::registers::tm_register_base::bitwidth_get (  )  const

The method bitwidth_get returns the value of the field tm_register_base::bitwidth.

Returns:
The value of tm_register_base::bitwidth.
Author:
lsg

Definition at line 45 of file tm_register_base.g.cc.

References bitwidth.

00046 {
00047         return bitwidth;
00048 }

void lestes::md::registers::tm_register_base::bitwidth_set ( ulint  x  ) 

The method bitwidth_set sets the field tm_register_base::bitwidth to the given value.

Parameters:
[in] x The new value to set tm_register_base::bitwidth to.
Author:
lsg

Definition at line 54 of file tm_register_base.g.cc.

References bitwidth.

00055 {
00056         tm_register_base::bitwidth = x;
00057 }

ptr<::lestes::std::set<::lestes::md::types::tm_data_type_base::id_type > > lestes::md::registers::tm_register_base::compatible_types_get (  )  const

The method compatible_types_get returns the value of the field tm_register_base::compatible_types.

Returns:
The value of tm_register_base::compatible_types.
Author:
lsg

Definition at line 63 of file tm_register_base.g.cc.

References compatible_types.

00064 {
00065         return compatible_types;
00066 }

void lestes::md::registers::tm_register_base::compatible_types_set ( const ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > &  x  ) 

The method compatible_types_set sets the field tm_register_base::compatible_types to the given value.

Parameters:
[in] x The new value to set tm_register_base::compatible_types to.
Author:
lsg

Definition at line 72 of file tm_register_base.g.cc.

References compatible_types.

00073 {
00074         tm_register_base::compatible_types = x;
00075 }

ptr<::lestes::std::set< tm_register_base::id_type > > lestes::md::registers::tm_register_base::aliases_get (  )  const

The method aliases_get returns the value of the field tm_register_base::aliases.

Returns:
The value of tm_register_base::aliases.
Author:
lsg

Definition at line 81 of file tm_register_base.g.cc.

References aliases.

00082 {
00083         return aliases;
00084 }

void lestes::md::registers::tm_register_base::aliases_set ( const ptr< ::lestes::std::set< tm_register_base::id_type > > &  x  ) 

The method aliases_set sets the field tm_register_base::aliases to the given value.

Parameters:
[in] x The new value to set tm_register_base::aliases to.
Author:
lsg

Definition at line 90 of file tm_register_base.g.cc.

References aliases.

00091 {
00092         tm_register_base::aliases = x;
00093 }

ptr<::lestes::std::set< ulint > > lestes::md::registers::tm_register_base::move_templates_get (  )  const

The method move_templates_get returns the value of the field tm_register_base::move_templates.

Returns:
The value of tm_register_base::move_templates.
Author:
lsg

Definition at line 99 of file tm_register_base.g.cc.

References move_templates.

00100 {
00101         return move_templates;
00102 }

void lestes::md::registers::tm_register_base::move_templates_set ( const ptr< ::lestes::std::set< ulint > > &  x  ) 

The method move_templates_set sets the field tm_register_base::move_templates to the given value.

Parameters:
[in] x The new value to set tm_register_base::move_templates to.
Author:
lsg

Definition at line 108 of file tm_register_base.g.cc.

References move_templates.

00109 {
00110         tm_register_base::move_templates = x;
00111 }

lstring lestes::md::registers::tm_register_base::asm_output_get (  )  const

The method asm_output_get returns the value of the field tm_register_base::asm_output.

Returns:
The value of tm_register_base::asm_output.
Author:
lsg

Definition at line 117 of file tm_register_base.g.cc.

References asm_output.

00118 {
00119         return asm_output;
00120 }

void lestes::md::registers::tm_register_base::asm_output_set ( lstring  x  ) 

The method asm_output_set sets the field tm_register_base::asm_output to the given value.

Parameters:
[in] x The new value to set tm_register_base::asm_output to.
Author:
lsg

Definition at line 126 of file tm_register_base.g.cc.

References asm_output.

00127 {
00128         tm_register_base::asm_output = x;
00129 }

ulint lestes::md::registers::tm_register_base::flags_get (  )  const

The method flags_get returns the value of the field tm_register_base::flags.

Returns:
The value of tm_register_base::flags.
Author:
lsg

Definition at line 135 of file tm_register_base.g.cc.

References flags.

00136 {
00137         return flags;
00138 }

void lestes::md::registers::tm_register_base::flags_set ( ulint  x  ) 

The method flags_set sets the field tm_register_base::flags to the given value.

Parameters:
[in] x The new value to set tm_register_base::flags to.
Author:
lsg

Definition at line 144 of file tm_register_base.g.cc.

References flags.

00145 {
00146         tm_register_base::flags = x;
00147 }

bool lestes::md::registers::tm_register_base::is_unspillable (  ) 

Tells whether the current register can't be spilled.

Definition at line 10 of file tm_register_base.cc.

References flags, and lestes::md::registers::RF_NOSPILL.

00010                                       {
00011         return flags && RF_NOSPILL;
00012 }

ptr< tm_register_base > lestes::md::registers::tm_register_base::create ( tm_register_base::id_type  a__tm_register_base__id,
ulint  a__tm_register_base__bitwidth,
ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > >  a__tm_register_base__compatible_types,
ptr< ::lestes::std::set< tm_register_base::id_type > >  a__tm_register_base__aliases,
ptr< ::lestes::std::set< ulint > >  a__tm_register_base__move_templates,
lstring  a__tm_register_base__asm_output,
ulint  a__tm_register_base__flags 
) [static]

First generated factory method for class tm_register_base.

This factory method for class tm_register_base takes values of all fields as arguments.

Author:
lsg

Definition at line 153 of file tm_register_base.g.cc.

References tm_register_base().

00160 {
00161         return ptr< tm_register_base > ( new tm_register_base(a__tm_register_base__id,
00162                 a__tm_register_base__bitwidth,
00163                 a__tm_register_base__compatible_types,
00164                 a__tm_register_base__aliases,
00165                 a__tm_register_base__move_templates,
00166                 a__tm_register_base__asm_output,
00167                 a__tm_register_base__flags) );
00168 }

ptr< tm_register_base > lestes::md::registers::tm_register_base::create ( tm_register_base::id_type  a__tm_register_base__id,
ulint  a__tm_register_base__bitwidth,
ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > >  a__tm_register_base__compatible_types,
ptr< ::lestes::std::set< tm_register_base::id_type > >  a__tm_register_base__aliases,
ptr< ::lestes::std::set< ulint > >  a__tm_register_base__move_templates,
lstring  a__tm_register_base__asm_output 
) [static]

Second generated factory method for class tm_register_base.

This factory method for class tm_register_base uses initializers.

Author:
lsg

Definition at line 174 of file tm_register_base.g.cc.

References tm_register_base().

00180 {
00181         return ptr< tm_register_base > ( new tm_register_base(a__tm_register_base__id, a__tm_register_base__bitwidth, a__tm_register_base__compatible_types, a__tm_register_base__aliases, a__tm_register_base__move_templates, a__tm_register_base__asm_output, 0) );
00182 }

ptr< object::reflection_list > lestes::md::registers::tm_register_base::reflection_get (  )  const [virtual]

for purposes of dumping

Reimplemented from lestes::std::object.

Reimplemented in lestes::md::registers::tm_register.

Definition at line 198 of file tm_register_base.g.cc.

References lestes::std::list< T >::create(), reflection, and lestes::std::object::reflection_get().

Referenced by lestes::md::registers::tm_register::reflection_get().

00199 {
00200         if (!reflection) {
00201                 typedef class_reflection::field_metadata md;
00202                 typedef class_reflection::field_metadata_list mdlist;
00203                 ptr<mdlist> mdl = mdlist::create();
00204                 mdl->push_back( md::create( "id", "tm_register_base::id_type" ) );
00205                 mdl->push_back( md::create( "bitwidth", "ulint" ) );
00206                 mdl->push_back( md::create( "compatible_types", "set&lt; ::lestes::md::types::tm_data_type_base::id_type &gt;" ) );
00207                 mdl->push_back( md::create( "aliases", "set&lt; tm_register_base::id_type &gt;" ) );
00208                 mdl->push_back( md::create( "move_templates", "set&lt; ulint &gt;" ) );
00209                 mdl->push_back( md::create( "asm_output", "lstring" ) );
00210                 mdl->push_back( md::create( "flags", "ulint" ) );
00211                 reflection = reflection_list::create( ::lestes::std::object::reflection_get() );
00212                 reflection->push_back( class_reflection::create( "tm_register_base", mdl ) );
00213         }
00214         return reflection;
00215 }

ptr< object::field_list_list > lestes::md::registers::tm_register_base::field_values_get (  )  const [virtual]

for purposes of dumping

Reimplemented from lestes::std::object.

Reimplemented in lestes::md::registers::tm_register.

Definition at line 217 of file tm_register_base.g.cc.

References lestes::std::list< T >::create(), and lestes::std::object::field_values_get().

Referenced by lestes::md::registers::tm_register::field_values_get().

00218 {
00219         ptr < field_list_list > result = ::lestes::std::object::field_values_get();
00220         result->push_back( value_list::create() );
00221         result->back()->push_back( objectize< tm_register_base::id_type > ::create( this->id ) );
00222         result->push_back( value_list::create() );
00223         result->back()->push_back( objectize< ulint > ::create( this->bitwidth ) );
00224         result->push_back( value_list::create() );
00225         result->back()->push_back( this->compatible_types );
00226         result->push_back( value_list::create() );
00227         result->back()->push_back( this->aliases );
00228         result->push_back( value_list::create() );
00229         result->back()->push_back( this->move_templates );
00230         result->push_back( value_list::create() );
00231         result->back()->push_back( objectize< lstring > ::create( this->asm_output ) );
00232         result->push_back( value_list::create() );
00233         result->back()->push_back( objectize< ulint > ::create( this->flags ) );
00234         return result;
00235 }

void lestes::md::registers::tm_register_base::gc_mark ( void   )  [protected, virtual]

Marking routine for class tm_register_base.

Marking routine is used for garbage collection.

Author:
lsg

Reimplemented from lestes::std::mem::keystone.

Reimplemented in lestes::md::registers::tm_register.

Definition at line 242 of file tm_register_base.g.cc.

References lestes::std::mem::keystone::gc_mark().

Referenced by lestes::md::registers::tm_register::gc_mark().

00243 {
00244 	::lestes::std::object::gc_mark();
00245 }


Member Data Documentation

tm_register_base::id_type lestes::md::registers::tm_register_base::id [private]

The register's id.

Definition at line 133 of file tm_register_base.g.hh.

Referenced by id_get(), and id_set().

ulint lestes::md::registers::tm_register_base::bitwidth [private]

Bitwidth of the register.

Definition at line 135 of file tm_register_base.g.hh.

Referenced by bitwidth_get(), and bitwidth_set().

srp< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > lestes::md::registers::tm_register_base::compatible_types [private]

List of datatypes that can be stored in the register.

Definition at line 137 of file tm_register_base.g.hh.

Referenced by compatible_types_get(), and compatible_types_set().

srp< ::lestes::std::set< tm_register_base::id_type > > lestes::md::registers::tm_register_base::aliases [private]

List of register ids that represents the same physical register as this one does.

e.g. ia-32 architecture has register ax and eax that represents the same physical register but each has different bitwidth. This is needed within register allocation because these aliases can't be allocated together at one time.

Definition at line 143 of file tm_register_base.g.hh.

Referenced by aliases_get(), and aliases_set().

srp< ::lestes::std::set< ulint > > lestes::md::registers::tm_register_base::move_templates [private]

List of instructions that can move value between register->register, mem->register, register->mem. Needed for spillcode generation.

Definition at line 145 of file tm_register_base.g.hh.

Referenced by lestes::md::registers::tm_register::instance(), move_templates_get(), and move_templates_set().

lstring lestes::md::registers::tm_register_base::asm_output [private]

Asm label for the register.

Definition at line 147 of file tm_register_base.g.hh.

Referenced by asm_output_get(), and asm_output_set().

ulint lestes::md::registers::tm_register_base::flags [private]

The register's flags.

Definition at line 149 of file tm_register_base.g.hh.

Referenced by flags_get(), flags_set(), and is_unspillable().

ptr< object::reflection_list > lestes::md::registers::tm_register_base::reflection = reflection [static, private]

Reimplemented from lestes::std::object.

Reimplemented in lestes::md::registers::tm_register.

Definition at line 150 of file tm_register_base.g.hh.

Referenced by reflection_get().


The documentation for this class was generated from the following files:
Generated on Mon Feb 12 18:25:50 2007 for lestes by doxygen 1.5.1-20070107