lestes::md::tasm::asm_generator Class Reference

#include <asm_generator.g.hh>

Inheritance diagram for lestes::md::tasm::asm_generator:

lestes::md::tasm::asm_generator_base lestes::std::object lestes::std::mem::keystone List of all members.

Public Member Functions

virtual void generate_tu_prologue ()
 Generates translation unit prologue.
virtual void generate_tu_body (ptr< vector< srp< ::lestes::backend_v2::structs::func_data > > > tu_data)
 Generates translation unit's body.
virtual void generate_tu_epilogue ()
 Generates translation unit epilogue.
void process_function (ptr< ::lestes::backend_v2::structs::func_data > data)
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< asm_generatorcreate (::std::ostream &a__asm_generator_base__output)
 First generated factory method for class asm_generator.

Protected Member Functions

 asm_generator (::std::ostream &a__asm_generator_base__output)
 Generated constructor for class asm_generator.
virtual void gc_mark ()
 Marking routine for class asm_generator.

Static Private Attributes

static ptr< reflection_listreflection = reflection

Detailed Description

Definition at line 32 of file asm_generator.g.hh.


Constructor & Destructor Documentation

lestes::md::tasm::asm_generator::asm_generator ( ::std::ostream &  a__asm_generator_base__output  )  [protected]

Generated constructor for class asm_generator.

Generated constructor for class asm_generator.

Author:
lsg

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

Referenced by create().

00037         : asm_generator_base(a__asm_generator_base__output)
00038 {}


Member Function Documentation

void lestes::md::tasm::asm_generator::generate_tu_prologue (  )  [virtual]

Generates translation unit prologue.

It generates asm file headers, data sections and declarations

Implements lestes::md::tasm::asm_generator_base.

Definition at line 29 of file asm_generator.cc.

References lestes::md::tasm::tm_asm::ent_section_data_get(), lestes::md::tasm::tm_asm::ent_section_uninitialized_data_get(), and lestes::md::tasm::asm_generator_base::output_get().

00029                                          {
00030         /* Generate asm file header */
00031         output_get() << ";This file is an output of Lestes C++ compiler.\n";
00032         
00033         //Get singleton instance of the allocator for global variables
00034         ptr<global_variable_allocator> glob_var_allocator = global_variable_allocator::instance();
00035         
00036         /* Generate uninitialized data section header */
00037         output_get() << tm_asm::ent_section_uninitialized_data_get();
00038         
00039         //Generate asm declarations for global variables
00040         glob_var_allocator->emit_asm_declarations_for_uninitialized(output_get());
00041         
00042         output_get() << ::std::endl;
00043         
00044         /* Generate data section header */
00045         output_get() << tm_asm::ent_section_data_get();
00046         
00047         //Generate asm declarations for global variables
00048         glob_var_allocator->emit_asm_declarations_for_initialized(output_get());
00049         
00050         //Generate asm declarations for managed literals
00051         literal_loader::instance()->emit_global_declarations(output_get());
00052         
00053         output_get() << ::std::endl;
00054 }

virtual void lestes::md::tasm::asm_generator::generate_tu_body ( ptr< vector< srp< ::lestes::backend_v2::structs::func_data > > >  tu_data  )  [virtual]

Generates translation unit's body.

Parameters:
tu_data A list of tu's functions.

Implements lestes::md::tasm::asm_generator_base.

void lestes::md::tasm::asm_generator::generate_tu_epilogue (  )  [virtual]

Generates translation unit epilogue.

Implements lestes::md::tasm::asm_generator_base.

Definition at line 73 of file asm_generator.cc.

References lestes::md::tasm::asm_generator_base::output_get().

00073                                          {
00074         output_get() << ::std::endl;
00075 }

void lestes::md::tasm::asm_generator::process_function ( ptr< ::lestes::backend_v2::structs::func_data data  ) 

ptr< asm_generator > lestes::md::tasm::asm_generator::create ( ::std::ostream &  a__asm_generator_base__output  )  [static]

First generated factory method for class asm_generator.

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

Author:
lsg

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

References asm_generator().

00028 {
00029         return ptr< asm_generator > ( new asm_generator(a__asm_generator_base__output) );
00030 }

ptr< object::reflection_list > lestes::md::tasm::asm_generator::reflection_get (  )  const [virtual]

for purposes of dumping

Reimplemented from lestes::md::tasm::asm_generator_base.

Definition at line 40 of file asm_generator.g.cc.

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

00041 {
00042         if (!reflection) {
00043                 typedef class_reflection::field_metadata md;
00044                 typedef class_reflection::field_metadata_list mdlist;
00045                 ptr<mdlist> mdl = mdlist::create();
00046                 reflection = reflection_list::create( asm_generator_base::reflection_get() );
00047                 reflection->push_back( class_reflection::create( "asm_generator", mdl ) );
00048         }
00049         return reflection;
00050 }

ptr< object::field_list_list > lestes::md::tasm::asm_generator::field_values_get (  )  const [virtual]

for purposes of dumping

Reimplemented from lestes::md::tasm::asm_generator_base.

Definition at line 52 of file asm_generator.g.cc.

References lestes::md::tasm::asm_generator_base::field_values_get().

00053 {
00054         ptr < field_list_list > result = asm_generator_base::field_values_get();
00055         return result;
00056 }

void lestes::md::tasm::asm_generator::gc_mark ( void   )  [protected, virtual]

Marking routine for class asm_generator.

Marking routine is used for garbage collection.

Author:
lsg

Reimplemented from lestes::md::tasm::asm_generator_base.

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

References lestes::md::tasm::asm_generator_base::gc_mark().

00064 {
00065         asm_generator_base::gc_mark();
00066 }


Member Data Documentation

ptr< object::reflection_list > lestes::md::tasm::asm_generator::reflection = reflection [static, private]

Reimplemented from lestes::md::tasm::asm_generator_base.

Definition at line 63 of file asm_generator.g.hh.

Referenced by reflection_get().


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