tm_register_base.g.hh

Go to the documentation of this file.
00001 // This file is automatically generated, do not edit.
00002 
00003 /*!
00004         \file
00005         \brief Target-machine register
00006         \author jaz
00007 */
00008 
00009 #ifndef lestes__md__registers__tm_register_base_g_hh__included
00010 #define lestes__md__registers__tm_register_base_g_hh__included
00011 
00012 #include <lestes/std/list.hh>
00013 #include <lestes/std/set.hh>
00014 #include <lestes/md/common.hh>
00015 #include <lestes/md/types/tm_data_type_base.g.hh>
00016 
00017 #include <lestes/std/objectize_macros.hh>
00018 package(lestes);
00019 package(std);
00020 class object;
00021 end_package(std);
00022 end_package(lestes);
00023 
00024 package(lestes);
00025 package(md);
00026 package(registers);
00027 
00028 //! tm_instr_base flags.
00029 enum reg_flag_type {
00030         RF_NOSPILL=1
00031 };
00032 
00033 
00034 class tm_register_base;
00035 
00036 
00037 /*! \brief Class represents target-machine register.
00038 
00039 Note: A concrete derived class is target dependent and it is placed in 
00040 /target/machine/${TARGET_CPU}/lestes/md/registers/ directory. 
00041 */
00042 class tm_register_base : public ::lestes::std::object {
00043 public:
00044         typedef ulint id_type;
00045         
00046         //! The method id_get returns the value of the field tm_register_base::id.
00047         tm_register_base::id_type id_get() const;
00048 
00049         //! The method id_set sets the field tm_register_base::id to the given value.
00050         void id_set(tm_register_base::id_type);
00051 
00052         //! The method bitwidth_get returns the value of the field tm_register_base::bitwidth.
00053         ulint bitwidth_get() const;
00054 
00055         //! The method bitwidth_set sets the field tm_register_base::bitwidth to the given value.
00056         void bitwidth_set(ulint);
00057 
00058         //! The method compatible_types_get returns the value of the field tm_register_base::compatible_types.
00059         ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > compatible_types_get() const;
00060 
00061         //! The method compatible_types_set sets the field tm_register_base::compatible_types to the given value.
00062         void compatible_types_set(const ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > & );
00063 
00064         //! The method aliases_get returns the value of the field tm_register_base::aliases.
00065         ptr< ::lestes::std::set< tm_register_base::id_type > > aliases_get() const;
00066 
00067         //! The method aliases_set sets the field tm_register_base::aliases to the given value.
00068         void aliases_set(const ptr< ::lestes::std::set< tm_register_base::id_type > > & );
00069 
00070         //! The method move_templates_get returns the value of the field tm_register_base::move_templates.
00071         ptr< ::lestes::std::set< ulint > > move_templates_get() const;
00072 
00073         //! The method move_templates_set sets the field tm_register_base::move_templates to the given value.
00074         void move_templates_set(const ptr< ::lestes::std::set< ulint > > & );
00075 
00076         //! The method asm_output_get returns the value of the field tm_register_base::asm_output.
00077         lstring asm_output_get() const;
00078 
00079         //! The method asm_output_set sets the field tm_register_base::asm_output to the given value.
00080         void asm_output_set(lstring);
00081 
00082         //! The method flags_get returns the value of the field tm_register_base::flags.
00083         ulint flags_get() const;
00084 
00085         //! The method flags_set sets the field tm_register_base::flags to the given value.
00086         void flags_set(ulint);
00087 
00088         bool is_unspillable();
00089 
00090         
00091         //! First generated factory method for class tm_register_base.
00092         static ptr< tm_register_base > create (
00093                 tm_register_base::id_type a__tm_register_base__id,
00094                 ulint a__tm_register_base__bitwidth,
00095                 ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_register_base__compatible_types,
00096                 ptr< ::lestes::std::set< tm_register_base::id_type > > a__tm_register_base__aliases,
00097                 ptr< ::lestes::std::set< ulint > > a__tm_register_base__move_templates,
00098                 lstring a__tm_register_base__asm_output,
00099                 ulint a__tm_register_base__flags);
00100 
00101         //! Second generated factory method for class tm_register_base.
00102         static ptr< tm_register_base > create (
00103                 tm_register_base::id_type a__tm_register_base__id,
00104                 ulint a__tm_register_base__bitwidth,
00105                 ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_register_base__compatible_types,
00106                 ptr< ::lestes::std::set< tm_register_base::id_type > > a__tm_register_base__aliases,
00107                 ptr< ::lestes::std::set< ulint > > a__tm_register_base__move_templates,
00108                 lstring a__tm_register_base__asm_output);
00109 
00110         
00111 
00112         //! for purposes of dumping
00113         virtual ptr<reflection_list> reflection_get() const;
00114         //! for purposes of dumping
00115         virtual ptr<field_list_list> field_values_get() const;
00116         
00117 protected:
00118         //! Generated constructor for class tm_register_base.
00119         tm_register_base (
00120                 tm_register_base::id_type a__tm_register_base__id,
00121                 ulint a__tm_register_base__bitwidth,
00122                 ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_register_base__compatible_types,
00123                 ptr< ::lestes::std::set< tm_register_base::id_type > > a__tm_register_base__aliases,
00124                 ptr< ::lestes::std::set< ulint > > a__tm_register_base__move_templates,
00125                 lstring a__tm_register_base__asm_output,
00126                 ulint a__tm_register_base__flags);
00127 
00128         //! Marking routine for class tm_register_base. 
00129         virtual void gc_mark();
00130 
00131 private:
00132         //! The register's id.
00133         tm_register_base::id_type id;
00134         //! Bitwidth of the register.
00135         ulint bitwidth;
00136         //! List of datatypes that can be stored in the register.
00137         srp< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > >  compatible_types;
00138         /*! \brief List of register ids that represents the same physical register as this one does.
00139 
00140         e.g. ia-32 architecture has register ax and eax that represents the same physical register but each has different bitwidth.
00141 This is needed within register allocation because these aliases can't be allocated together at one time.
00142         */
00143         srp< ::lestes::std::set< tm_register_base::id_type > >  aliases;
00144         //! List of instructions that can move value between register->register, mem->register, register->mem. Needed for spillcode generation.
00145         srp< ::lestes::std::set< ulint > >  move_templates;
00146         //! Asm label for the register.
00147         lstring asm_output;
00148         //! The register's flags.
00149         ulint flags;
00150         static ptr<reflection_list> reflection;
00151         
00152 }; // tm_register_base
00153 
00154 
00155 end_package(registers);
00156 end_package(md);
00157 end_package(lestes);
00158 
00159 package(lestes);
00160 package(std);
00161 specialize_objectize_for_enum( ::lestes::md::registers::reg_flag_type );
00162 end_package(std);
00163 end_package(lestes);
00164 
00165 #endif // lestes__md__registers__tm_register_base_g_hh__included

Generated on Mon Feb 12 18:23:43 2007 for lestes by doxygen 1.5.1-20070107